- How to view CPU Load on Windows Server 2008 [duplicate]
- 1 Answer 1
- How can I produce high CPU load on Windows?
- 13 Answers 13
- Try CPUGrabEx.exe
- CpuStres v2.0
- Анализ нагрузки на сервер
- Процессор
- Анализ нагрузки на процессор
- Память
- Анализ использования памяти
- Диски
- Анализ дисковой подсистемы
- Общая статистика
- Самое важное
- Cpu load windows server
- Проблема: один из пользователей потребляет 90% и более CPU
- Что такое Dynamic Fair Share Scheduling (DFSS)?
- Вот так называются три компонента входящие в состав DFSS
- Как включить Dynamic Fair Share Scheduling (DFSS)?
- Балансировка CPU на RDSH хосте
- Как отключать CPU Fair Share
- Пример использования CPU Fair Share
- Балансировка дисковых операций на RDSH хосте
How to view CPU Load on Windows Server 2008 [duplicate]
It’s a simple question, really, I’d like to check the CPU Load of my Windows Server 2008 machine. This value gets reported to Zabbix, but I have no clue where Zabbix gets the value from.
All I can find on my server is CPU Usage, Processor time, etc, but no load . In Zabbix the value is always between 0 and 4 and I know what it means (number of processess in «Running» or «Runnable» state), but no clue where to check the value on the server itself.
1 Answer 1
We’ve all been there. Do this. Go to the windows machine that you are monitoring. Open a CMD prompt and type typeperf -qx > perfounter.txt This is going to produce a rather large file of all the performance counters that you can use within Zabbix for that particular machine. Some itmes will be have global usage across that OS/Version, while some items will be unique to only that machine.
Now that you have your list of perf counters, you need to enter them for that host in the Zabbix front end. (Well, the ones you want to monitor, anyway)
In this example, create an item for CPU Idle time. This item will most likely be the same on almost any Windows platform, so let’s create this item under the Windows template, then it will be available to all your hosts that have that template assigned. Go to Configuration —> Items and then using the dropdown boxes at the top right, select Group —> Templates and then Host —> Template WIndows.
Now, click on Create Item and enter the information as you see in my first screenshot below. Since you can’t see all of the key in that screenshot, here it is: perf_counter[\Processor(_Total)\% Idle Time].
Note that if you are using active agents, your hostname within Zabbix must be an exact match as the «Hostname=» field in your zabbix_agentd.conf file on the host or else it will not work.
And that’s really all there is to it. Once you add that item, give it a minute or two to become active. If it comes up as «Not supported» then you have some type of syntax error.
If you run the typeperf command and the system cannot find it, you can more then likely grab it off almost any Server 2003 system you have. You can copy it onto any other Win OS such as WIndows 2000.
Some other performance counter keys I have found to be useful are these: perf_counter[\Processor(_Total)\% User Time] perf_counter[\Processor(_Total)\% Privileged Time] perf_counter[\System\Processor Queue Length] perf_counter[\Paging File(_Total)\% Usage]
And you can also graph out how much CPU a given process uses. For instance, this is the key for how mush user time the zabbix_agentd process uses: perf_counter[\Process(zabbix_agentd)\% User Time]
Those will all be in that perf counter text file you generate. Any process that happens to be running when you generate it (such as zabbix_agentd) will have a syntax that you can then enter into Zabbix for monitoring.
Now, something like traffic across your NIC cards is something that would be unique to each server, unless they all had the exact same NIC in them. So that one you would want to create at the host level instead of the template level, and the key would look something like this: perf_counter[\Network Interface(HP NC7782 Gigabit Server Adapter)\Bytes Received/sec]
How can I produce high CPU load on Windows?
For testing purposes I need to generate high CPU load on a Windows Server 2003. I cannot install any software but have to make do with what Windows provides.
What would be the best way to achieve that?
13 Answers 13
consume.exe from the Windows Server 2003 Resource Toolkit can do this easily.
Uses 100% CPU time on all cores as long as it runs. It can also consume other resources (as the name implies).
The following batch file does it:
However, if you have multiple cores, you have start multiple instances.
To stop, press Ctrl + C in the console.
IntelBurnTest and Prime95 are known for doing just this. They don’t really require installation, as they can be run by unpacking their respective zips, but it doesn’t fulfill your «must be native» requirement. I’m an overclocker, and these are the tools I use to ensure absolute system stability, they will generate the utmost load from your computer.
As for your want for it to be a native piece of software — windows doesn’t really come with the tools to do such a thing, except for maybe the above batch file, which is going to be a mess to handle if it goes haywire. (Infinite loops can be messy.)
A tight loop in VBS with no I/O will do it. You’ll need as many processes as cores. The following will use 100% on my Win2k3 VM, or 50% on my dual-core host (100% if I launch 2)
You’ll have to kill wscript.exe in the task manager to end it.
Try CPUGrabEx.exe
CPUGrabEx is a free tool that can grab CPU and GPU.
CpuStres v2.0
There is a SysInternals tool called CPU Stress.
CpuStres is a utility that can be used to simulate CPU activity by running up to 64 threads in a tight loop.
Each thread can be started, paused or stopped independently and can be configured with the following parameters:
- Activity Level This can be Low, Medium, Busy or Maximum which controls >how long the thread sleepss between cycles. Setting this value to Maximum >causes the thread to run continuously.
- Priority This controls the thread priority.
Running for /l %a in (0,0,1) do echo a in a command prompt (infinite loop printing a ) has the observed effect of starting a conhost.exe running at 10-20% CPU load on Windows 7 on a low-end mobile i5. You could try running several of these in parallel, for example the following in a batch file:
That could have your CPU running at 100%. Lines can be added/removed to adjust.
Warning: Those are infinite loops, which you may have trouble closing. The numbers inside the parentheses can be replaced, e.g. (0,1,10000) , for a finite loop. The last number (in the finite loop) can be adjusted to adjust the running time. In case you are wondering, it basically means «start at number 0, increment by 1 until it reaches 10000», which translates to 10000 loop cycles.
HyperPi (GUI to run SuperPi on multiple cores) can be run without installing just copy it to the server and run it from any location. Even on something fast you can load up all the cores for few hours doing say 16 simultaneous 32M place calculations.
I have recently discovered and can recommend the free version of HeavyLoad:
Does an effective job at pumping up the CPU levels to see how applications cope under duress.
Quick, easy, PowerShell
An infinite loop with no inputs or outputs; similar to Quantum’s answer, if you have multiple cores, you have to start multiple instances of PowerShell running this script
The way most people do it is to run something that does a load of processing — I was recommended superpi, though hyperpi might work better for a modern system. Calculate absurdly large value of pi, and it’ll effectively run the processor at full load.
Alternatively you can run StressCPU which is based off folding@home
If you need to keep high loads for longer periods of time, consider something like folding@home
If you have no internet for that pc or can’t remember the website for that cpu test, and you don’t feel like scripting you can use the windows built in zip feature to compress a bunch of files or folders a bunch of times simultaneously.
Right-click the file or folder, point to Send To, and then click Compressed (zipped) Folder
You can do the same files/folder multiple times at the same time, I suggest using the windows or program files folders.
You can then unzip the files to another location and do a file compare with the fc command to check to see that all calculations occurred correctly. Though I would suggest that you use a single big file for this as the command syntax for file comparison of a lot of files with standard windows tools is annoying.
Анализ нагрузки на сервер
Анализ нагрузки на сервер позволит быстро понять причины медленной работы. Это необходимо делать ещё и для того, чтобы вовремя планировать покупку новых серверов.
Аппаратная часть любого сервера состоит из 4 основных компонент:
Анализ загруженности сервера заключается в сборе и обработке статистики каждой из этих компонент.
Процессор
Первым делом следует проверить процессор. Самый быстрый способ — использовать top:
Необходимо обратить внимание на выделенные участки. Загрузка процессора обычно не должна превышать 10. 20%. Исключение составляют сервера специального назначения (например, пережиматоры фоток или медиа данных). Следующие показатели наиболее важные для анализа:
- Показатель us — пользовательские процессы. Высокий показатель означает, что наше приложение нагружает сервер.
- Показатель id — неиспользуемые ресурсы процессора. Этот показатель должен быть высоким (нормальные значения от 80 до 100).
- Показатель wa — ожидание операций ввода/вывода. Высокий показатель означает, что процессор очень долго ждёт ответы от устройств ввода/вывода. Чаще всего это связано с большим количеством операций на диске.
Более развёрнутую статистику можно получить используя утилиту mpstat из пакета sysstat:
Покажет детали по всем процессорам на сервере:
Инструмент htop умеет показывать нагрузку на процессор в удобном виде:
Анализ нагрузки на процессор
Если показатель загрузки процессора (us в top’e) превышает 20%, необходимо оценить возможность оптимизации приложения. Если возможная оптимизация уже была выполнена, необходимо приобретать дополнительные сервера.
В случае высокого показателя ожидания I/O (wa в top’e), необходимо провести дальнейший анализ дисковой и сетевой подсистемы (ниже).
Память
Прежде всего необходимо определить количество занятой и свободной памяти.
Инструмент free покажет данные об использовании памяти:
Важно обратить внимание на значение free. Это количество свободной памяти. Очень важным показателем является Swap. Это используемое место на диске в том случае, когда оперативной памяти перестаёт хватать.
Более подробную информацию об использовании оперативной памяти можно получить так:
Среди прочего увидим такие сведения:
Анализ использования памяти
Малое количество свободной оперативной памяти не является проблемой. Но такая ситуация является предлогом для пристального наблюдения за сервером.
В случае же, если начинает расти Swap, необходимо срочно принимать меры:
- Добавлять оперативную память.
- Приобретать новые сервера и распределять нагрузку между ними.
Старайтесь всегда удерживать используемый своп нулевым.
Диски
Дисковая подсистема может быть нагружена, когда приложение работает с файлами. Кроме этого, диски может нагружать работа с базой данных.
Начать анализ дисков следует с проверки свободного места:
Покажет результат по всем разделам:
Колонка Use покажет занятое место. Для основных разделов старайтесь удерживать значение не выше 90%.
Инструмент iotop умеет показывать развёрнутую загрузку диска.
Также будет видно распределение по процессам, которые работают с диском:
В примере два процесса — mysqld и php-fpm (это php приложение) — используют операции записи на диск. Необходимо обратить внимание на показатели:
- Actual DISK READ — суммарное фактическое количество данных, читаемых с диска. Отличается от Total DISK READ из-за дискового кэша и оптимизации операций низкого уровня.
- Actual DISK WRITE — суммарное фактическое количество данных, записываемое на диск. Может отличаться от Total DISK WRITE по той же причине.
Анализ дисковой подсистемы
Если диск подвержен большому количеству чтений, правильными вариантами поведения будут:
Большое количество записей на диск обычно свидетельствуют о необходимости масштабироваться.
- Убедитесь, что у Вас отключены все логи доступа и отладки. Например, access_log в Nginx’e.
- Большинство записей на диск скорее всего будет генерировать база данных. В таком случае необходимо подумать о выносе её на отдельный сервер. Дальнейшими шагами будет её масштабирование на несколько серверов.
- Большое количество записей также могут генерировать загружаемые файлы.
Утилита cbm позволяет увидеть сетевой трафик в реальном времени:
Увидим данные об объёме приёма и передачи в секунду:
Высокий сетевой трафик сам по себе не является проблемой. Но близкие к пиковым показатели указывают на необходимость масштабироваться в ближайшем будущем. Например, средний трафик в 95 Мбит на интерфейсе в 100 Мбит скорее всего будет означать, что текущего сервера вскоре будет недостаточно.
Общая статистика
Удобная утилита dstat покажет общую статистику сервера в реальном времени:
Увидим данные о системе с интервалом в одну секунду:
Внимание следует обратить на:
- total-cpu-usage — загрузка процессора
- dsk/total — загрузка диска
- net/total — загрузка сети
Самое важное
Не забывайте, что проблемы лучше предупреждать. Поэтому, обязательно используйте системы мониторинга для автоматического отслеживания указанных характеристик.
Cpu load windows server
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов по системному администрированию Pyatilistnik.org. В прошлый раз мы с вами разобрали группы доступности AlwaysOn. Сегодня я хочу рассмотреть еще одну часто встречающуюся проблему в практике системного администратора, речь пойдет о балансировке и распределении системных ресурсов (CPU, Сеть, Диск) на хостах RDS фермы Windows Server 2019, но актуально будет и для более старых версий, вплоть до Windows Server 2012 R2. Мы научимся равномерно распределять нагрузку по пользовательским сессиям с помощью Dynamic Fair Share Scheduling (DFSS).
Проблема: один из пользователей потребляет 90% и более CPU
Опишу реальный случай с которым вы обязательно столкнетесь, если у вас в компании используются терминальные столы. И так есть RDS ферма построенная на базе Windows Server 2012 R2 до Windows Server 2019. На каждом из RDSH хостов могут одновременно работать свыше 30 пользователей. В среднем они суммарно не потребляют более 30% процессорных мощностей, но когда приходит период отчетности некоторые пользователи начинают нагружать сервера куда интенсивнее. Очень часто можно встретить, что пользователь работающий с Excel, 1С и похожими программами начинает потреблять 80-90% процессорных мощностей, в результате чего начинают страдать остальные пользователи этого RDSH хоста.
Ранее для решения это проблемы в Windows Server 2008 R2 был замечательный компонент диспетчер системных ресурсов (Windows System Resource Manager), но Microsoft его посчитала устаревшим и выпилила из состава компонентов, аж с Windows Server 2012 R2 и выше. Но не думайте, что доблестные разработчики не подумали чем вам восполнить этот пробел, они придумали и включили в состав Windows Server компонент «Динамическое планирование долевого распределения» или как в оригинале «Dynamic Fair Share Scheduling (DFSS)«.
Что такое Dynamic Fair Share Scheduling (DFSS)?
Так как официального метода вернуть Windows System Resource Manager не существует, а есть лишь костыльные, нам придется работать с тем, что есть. «Динамическое планирование долевого распределения» или как в оригинале «Dynamic Fair Share Scheduling (DFSS)» — это механизм автоматической балансировки и распределения сетевой нагрузки, дисковых, процессорных мощностей между всеми пользовательскими сессиями на RDSH хосте. Все эти три варианта имеют цель предотвратить чрезмерное использование ресурсов одним пользователем и предоставить всем пользователям одинаковые возможности. Однако методы FairShare не гарантируют, что ресурсы не будут исчерпаны, это все еще может иметь место. Если все пользователи используют все ресурсы ЦП, FairShare гарантирует, что все пользователи получат некоторую емкость ЦП, но все же может быть, что все процессоры загружены на 100%, а пользователи испытывают снижение производительности, это нужно учитывать.
Вот так называются три компонента входящие в состав DFSS
- CPU Fair Share — Динамически распределяет процессорное время между пользовательскими сессиями. Тут будет учитываться их количество и интенсивность использования.
- Network Fair Share — Динамически распределяет полосу пропускания сетевого интерфейса между пользовательскими сессиями. Советую использовать совместно с Qos.
- Disk Fair Share — данная функция защищает ваши диски от очень интенсивного использования одним пользователем, позволяет равномерно балансировать дисковые операции между всеми.
Как включить Dynamic Fair Share Scheduling (DFSS)?
Если говорить про Windows Server 2019, то динамическое планирование долевого распределения уже по умолчанию там активно, то же самое и на Windows Server 2016, а вот в Windows Server 2012 R2, ее нужно активировать. Для того чтобы у вас в системе был активен встроенный балансировщик ресурсов DFSS, у вас должна быть выключена одна политика или выставлен нужный ключ реестра.
Балансировка CPU на RDSH хосте
Для того, чтобы у вас на RDS ферме была балансировка процессорных мощностей, необходимо наличие активной политики:
Как я и писал выше функция планирования ЦП со справедливым разделением в 2019 системе включена по умолчанию, и данная политика имеет статус не задано.
Если этот параметр политики включен, то планирование ЦП со справедливым разделением отключено. Если этот параметр политики отключен или не настроен, планирование ЦП со справедливым разделением включено
Так же эта настройка имеет и аналог в виде ключа реестра, найти его можно по пути:
Если ключ EnableCpuQuota имеет значение 1, то значит планирование ЦП со справедливым разделением включено. Хочу отметить, что в Windows Server 2012 R2, хоть в системе и есть политика, но данного ключа нет, а его желательно бы создать если хотите использовать CPU Fair Share.
Как отключать CPU Fair Share
Существуют ситуации, при которых требуется выключить DFSS, приведу пример. Citrix Xenapp также имеет свои собственные политики для разделения процессорного времени между пользователями, и неудивительно, что они не могут сосуществовать с политиками Microsoft. Управление процессорами Citrix не вступит в силу, если DFSS все еще включен. На самом деле, вы получите следующую ошибку на сервере:
Для отключения CPU Fair Share в Windows Server 2019, вам нужно сначала включить политику «Отключить планирование ЦП со справедливым разделением (Turn off Fair Share CPU Scheduling)». Сделать, это можно через групповые политики или же через локальный редактор политик (gpedit.msc).
После нужно выполнить обновление групповой политики, когда первое действие выполнено вы можете изменить значение ключа EnableCpuQuota на «0». По идее все должно работать, но иногда бывают случаи, что приходилось произвести перезагрузку сервера.
Так же отключить DFSS можно и через PowerShell, для этого введите команду изменяющую значение реестра:
Пример использования CPU Fair Share
Чтобы показать работу FairShare, я использовал инструмент CPUstress, созданный Тимом Манганом. С помощью этого инструмента вы можете вызвать чрезмерное использование ресурсов процессора. В тесте будут участвовать два пользователя, Барбоскин Геннадий Викторович и Администратор.
Первый тест с включенной опцией динамического распределения процессорного время между пользовательскими сессиями. Я зашел на свою RDS ферму и запустил из под каждого пользователя CPUstress. Как видно из картинки мой процессор загружен на 100% и все его мощности делятся в равных частях между пользователями сервера.
А вот тест когда CPU Fair Share выключен, как видите тут уже идет борьба за ресурсы между пользователями, у администратора в моем примере 73%, а у barboskin.g 25%. Потом эти доли могут кардинально поменяться.
Балансировка дисковых операций на RDSH хосте
Управление балансировкой дисковых операций осуществляется через компонент Disk Fair Share. Данный компонент включается или выключается исключительно через ключ реестра EnableFairShare.
«1» означает, что компонент активен, а вот «0» отключает Disk Fair Share.
С помощью FairShare of Resources в RD Session Host Microsoft реализовала приятную функциональность. Это здорово, что Microsoft расширила функциональность с помощью Network and Disks, но лично я думаю, что большинство компаний будут чаще использовать CPU FairShare. На этом у меня все, с вами был Иван Семин, автор и создатель IT портала Pyatilistnik.org.