Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Определить текущую производительность ПК

Ответить
Настройки темы
CMD/BAT - [решено] Определить текущую производительность ПК

Пользователь


Сообщения: 122
Благодарности: 6

Профиль | Отправить PM | Цитировать


Условно есть компьютер на котором средствами командной строки ( на крайняк powershell ) + бесплатными утилитами 7zip или типа https://live.sysinternals.com/ необходимо получить на выходе число - скорость работы этого компьютера.

(в итоге цель - по всему домену собрать отчет со всех компьютеров и выявить самые медленные и на основании этого листа вывести их из эксплуатации)

Отправлено: 15:27, 26-10-2015

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


c4uran, начните с определения «скорости работы».

Отправлено: 15:36, 26-10-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 2203
Благодарности: 729

Профиль | Отправить PM | Цитировать


c4uran, попробуйте скрипт "Многопроцессное создание пустых файлов (бенчмарк для винчестера)". Автор Dragokas http://www.cyberforum.ru/cmd-bat
Скрытый текст
Код: Выделить весь код
::Многопотоковое создание пустых файлов ::by Alex Drago.kas
@echo off
Setlocal EnableDelayedExpansion EnableExtensions
Set Dest=y:\m2
Set /A Potok=50
Set /A PotokMax=8
Set /A Range=10000
 
if not exist "%Dest%" md "%Dest%"
::1 из потоков - управляющий (этот код) + 1(?не знаю почему)
Set /A PotokMax+=2
 
Set TimeS=%Time%
Call :TimeToMSec "%TimeS%" TimeS_ms
Echo Задание начато в %TimeS%
 
Set /A sS=0
For /L %%P in (1,1,%Potok%) do (
  Set /A sE=!sS!+%Range%-1
  start "Stream %%P" /min "CMD /Q /C For /L %%N in (!sS!,1,!sE!) do cd.>%Dest%\%%N"
  Set /A sS+=%Range%
  Echo Запущен поток № %%P
  Call :WaitForReady %PotokMax%
)
Echo Все потоки запущены.
Echo Ожидаю завершения заданий.
 
Call :WaitForReady 3&:: (+1 ?не знаю почему)
 
Set TimeE=%Time%
Call :TimeToMSec "%TimeE%" TimeE_ms
 
Echo Задание  начато  в  %TimeS%
Echo Задание завершено в %TimeE%
 
Set /A diff=TimeE_ms-TimeS_ms
Set /A diffSS=diff/100
Set /A diffms=%diff% %% 100
Set /A TotalFiles=Potok*Range
Set /A Speed=TotalFiles*100/diff
Echo Записано %TotalFiles% файлов.
Echo Затрачено: %diffSS%,%diffms% с.
Echo Скорость:  %Speed% файлов/с.
Echo.
pause
Goto :eof
 
:WaitForReady %PotokMax%
Set /A n=0
For /F "Delims=" %%A in ('tasklist^|Findstr /BLIC:cmd.exe') do (Set /A n+=1)
if %n% LSS %~1 Exit /B
ping -w 100 -n 1 192.168.254.254> nul
Goto :WaitForReady
 
:TimeToMSec %Time% %var_mSec%
For /F "Tokens=1-4 Delims=,:" %%A in ("%~1") do (
  Set /A HH=%%A
  Set MM=1%%B& Set /A MM=!MM!-100
  Set SS=1%%C& Set /A SS=!SS!-100
  Set mS=1%%D& Set /A mS=!mS!-100
)
Set /A %~2=(HH*60*60+MM*60+SS)*100+mS
Exit /B

Последний раз редактировалось sov44, 08-04-2016 в 18:22.


Отправлено: 15:45, 26-10-2015 | #3


Аватара для NickM

Ветеран


Contributor


Сообщения: 4621
Благодарности: 1108

Профиль | Отправить PM | Цитировать


WinSAT? Тогда может помочь - CheckBootSpeed

Отправлено: 16:40, 26-10-2015 | #4


Пользователь


Сообщения: 122
Благодарности: 6

Профиль | Отправить PM | Цитировать


Iska,
думаю я бы разделил это на 3 категории:
1.скорость обработки процессором допустим архива
2.скорость памяти
3.скорость работы жесткого диска

либо получать с каждого компьютера 3 цифры либо взять какую то цифру за основу и подсчитать отношение к ней, думаю это же более простой вопрос

sov44,
Изучаю...

Да еще есть такая вещь как время загрузки системы, я не знаю на сколько точно оно будет отражать производительность но самое простое это оно, как бы его получить

Отправлено: 16:42, 26-10-2015 | #5


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


В виндоус, кажется начиная с висты, встроена утилита оценки производительности системы -- winsat.exe. Сбор сведений о производительности
Код: Выделить весь код
winsat formal
winsat -?  -- изучите для конкретизации и детализации отчета
К сожалению на 10-ке вылетает (на 8-ке прекрасно работала). Почему разбираться лень.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:18, 26-10-2015 | #6


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


c4uran, вся проблема в том, что любой синтетический тест — это банальные, мало к чему привязанные, «попугаи».

Отправлено: 18:16, 26-10-2015 | #7


Пользователь


Сообщения: 122
Благодарности: 6

Профиль | Отправить PM | Цитировать


Кажется странным что поиск тормозящих компьютеров в домене бесплатными средствами еще не реализовали

winsat показывает чрезвычайно синтетическую информацию поэтому думаю не подходит

Думаю возможно ли реализовать это на каком нибудь штатном процессе допустим тесте архива в 1 гиг, проверить сколько времени архивирует нормальный комп и сравнить с остальными

Отправлено: 10:11, 27-10-2015 | #8


Пользователь


Сообщения: 122
Благодарности: 6

Профиль | Отправить PM | Цитировать


эх написал сам как мог, тест взят на основе 7zip т.к он установлен на всех компьютерах в сети.
Функцию :count взял из гугла, на некоторых компьютерах не правильно срабатывает но на 80% работает и ладно

описание лога бенча 7zip обязательно нужно прочесть тут: http://7zip.bugaco.com/7zip/MANUAL/c...V3tFsHWVtNJ6TF
(есть недокументированная фича когда тест вылетает с выводом что не смог выделить память, в отчете заметно не вооруженным глазом)

скрипт закидывается на удаленный комп через psexec или логон скрипт, дополнительная информация, после выполнения сохраняется на удаленной машине(или сервер отчетов), так что путь до нее необходимо поменять(set "remotelog для полноты картины добавил дополнительные поля, т.к производительность очень сильно зависит от памяти и от ядер процессора.



Код: Выделить весь код
@echo off
setlocal
set app="c:\program files\7-Zip\7z.exe"
if not exist c:\temp md c:\temp
set log="c:\temp\bech.txt"
if exist %log% del /f /q %log%
set "remotelog=\\YOUR_PC_HOSTNAME\d$\bench_%~n0.txt"

echo %computername%
call :getmodel
echo %model%
call :failed
call :benching
call :logwork
call :count

echo %computername%	%model%	%cpu%	%ramsize%	%ramusage%	%spendTime%	%benched%	%errors% >> %remotelog%

endlocal
exit 0

:failed
if not exist %app% (
echo %computername%	%model%	not exist %app% >> %remotelog%
exit 1
)
exit /b

:benching
set "starttime=%time%"
echo %starttime%
%app% b 1 -md26	>%log%
set "errors=%errorlevel%"
set "endtime=%time%"
echo %endtime%
exit /b

:getmodel
for /f "tokens=1,2 skip=1 delims= " %%i in ('wmic csproduct get name') do set model=%%i %%j&exit /b
exit /b

:logwork
for /f "tokens=3 delims= " %%a in ('type %log% ^| findstr/i c:"RAM size:"') do set "ramsize=%%a MB"
for /f "tokens=3 delims= " %%a in ('type %log% ^| findstr/i "RAM size:"') do set "ramusage=%%a MB"
for /f "tokens=3 delims=:" %%a in ('type %log% ^| findstr/i "CPU hardware threads:"') do set "cpu=%%a"
for /f "tokens=2,3,4 delims= " %%a in ('type %log% ^| findstr/i "tot:"') do set "benched=%%a	%%b	%%c"
REM Dict        Compressing          |        Decompressing
      REM Speed Usage    R/U Rating  |    Speed Usage    R/U Rating
       REM KB/s     %   MIPS   MIPS  |     KB/s     %   MIPS   MIPS

REM 22:   13684   334   3990  13312  |   177800   395   4059  16042
REM 23:   14296   346   4212  14566  |   170129   390   3989  15568
REM 24:   14646   343   4589  15747  |   170093   396   3984  15780
REM 25:   13319   354   4290  15207  |   165123   388   3998  15528
REM 26:   11319   354   3901  13793  |   162527   390   3971  15485
REM ----------------------------------------------------------------
REM Avr:          346   4197  14525               392   4000  15681
REM Tot:          369   4098  15103
exit /b

:count 
SET T1=%starttime%
SET T2=%endtime%
    ::--------------- РАЗБИЕНИЕ МЕТОК ВРЕМЕНИ НА РАЗРЯДЫ [hh,mm,ss] -------------
for /f "tokens=1,2,3 delims=;:,." %%a in ("%T1%") do (set h1=%%a & set m1=%%b & set s1=%%c)
for /f "tokens=1,2,3 delims=;:,." %%a in ("%T2%") do (set h2=%%a & set m2=%%b & set s2=%%c)
    ::--------------- СЕРИАЛИЗАЦИЯ -------------
set /a time1 = (h1*3600)+(m1*60)+(s1)
set /a time2 = (h2*3600)+(m2*60)+(s2)
    ::--------------- ВЫЧИСЛЕНИЕ -------------
set /a time3=time2-time1
if /i %time3% lss 0 set /a time3=time2+(86400-time1)
    ::--------------- ДЕСЕРИАЛИЗАЦИЯ [muchSS -> hh,mm,ss] -------------
::hour
set /a H = time3/3600
set /a time3 = time3-(H*3600)
::minute
set /a M = time3/60
set /a time3=time3-(M*60)
::second
set /a S = time3
    ::--------------- CHECKING VALUES -------------
 CALL :CheckNum %H%,H
 CALL :CheckNum %M%,M
 CALL :CheckNum %S%,S
 
set spendTime=%H%:%M%:%S%
::show result
echo ______________________________

EXIT /B
======================
:CheckNum (varIN,varOUT)
set /A temp = %1
if "%temp:~1,1%"=="" (SET %2=0%temp%)
EXIT /B
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:19, 28-10-2015 | #9


Пользователь


Сообщения: 122
Благодарности: 6

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png bench-test.png
(52.3 Kb, 11 просмотров)

Забыл добавить, в итоге получается такой вот отчет в экзеле(шапку делаем сами)

Отправлено: 10:34, 28-10-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Определить текущую производительность ПК

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
DNS/DHCP - DHCP. Как определить Список ПК, где DNS прописан статически omriyana Сетевые технологии 0 31-07-2013 11:35
Прочее - Определить скорость интернета для ПК в сети... stranges Сетевые технологии 6 14-12-2011 12:43
CMD/BAT - [решено] Как в батнике определить, ноутбук это или ПК? iamforest Скриптовые языки администрирования Windows 3 22-12-2010 21:59
Прочее - Как определить текущую скорость подключения и режим дуплекса Polundra Сетевые технологии 3 07-12-2010 18:46
Снизилась производительность ПК и постоянные помехи в звуке denis1751 Непонятные проблемы с Железом 4 09-09-2008 22:18




 
Переход