|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Определить текущую производительность ПК |
|
CMD/BAT - [решено] Определить текущую производительность ПК
|
Пользователь Сообщения: 122 |
Условно есть компьютер на котором средствами командной строки ( на крайняк powershell ) + бесплатными утилитами 7zip или типа https://live.sysinternals.com/ необходимо получить на выходе число - скорость работы этого компьютера.
(в итоге цель - по всему домену собрать отчет со всех компьютеров и выявить самые медленные и на основании этого листа вывести их из эксплуатации) |
|
Отправлено: 15:27, 26-10-2015 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать c4uran, начните с определения «скорости работы».
|
Отправлено: 15:36, 26-10-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2203
|
Профиль | Отправить 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 |
Ветеран Сообщения: 4621
|
Профиль | Отправить PM | Цитировать WinSAT? Тогда может помочь - CheckBootSpeed
|
Отправлено: 16:40, 26-10-2015 | #4 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Iska,
думаю я бы разделил это на 3 категории: 1.скорость обработки процессором допустим архива 2.скорость памяти 3.скорость работы жесткого диска либо получать с каждого компьютера 3 цифры либо взять какую то цифру за основу и подсчитать отношение к ней, думаю это же более простой вопрос sov44, Изучаю... Да еще есть такая вещь как время загрузки системы, я не знаю на сколько точно оно будет отражать производительность но самое простое это оно, как бы его получить |
|
Отправлено: 16:42, 26-10-2015 | #5 |
Ветеран Сообщения: 1758
|
|
Отправлено: 17:18, 26-10-2015 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать c4uran, вся проблема в том, что любой синтетический тест — это банальные, мало к чему привязанные, «попугаи».
|
Отправлено: 18:16, 26-10-2015 | #7 |
Пользователь Сообщения: 122
|
Профиль | Отправить PM | Цитировать Кажется странным что поиск тормозящих компьютеров в домене бесплатными средствами еще не реализовали
winsat показывает чрезвычайно синтетическую информацию поэтому думаю не подходит Думаю возможно ли реализовать это на каком нибудь штатном процессе допустим тесте архива в 1 гиг, проверить сколько времени архивирует нормальный комп и сравнить с остальными |
Отправлено: 10:11, 27-10-2015 | #8 |
Пользователь Сообщения: 122
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать Забыл добавить, в итоге получается такой вот отчет в экзеле(шапку делаем сами)
|
Отправлено: 10:34, 28-10-2015 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|