Какие WQL-запросы вы бы использовали для отслеживания типичных узких мест Windows? Что бы вы использовали для получения данных, похожих на «top» или «netstat»? С каким интервалом вы бы опрашивали?
Вот несколько, которые я считаю полезными.
SELECT PercentDiskTime, AvgDiskQueueLength, DiskReadBytesPerSec, DiskWriteBytesPerSec FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk
SELECT Caption, CommittedBytes, AvailableBytes, PercentCommittedBytesInUse, PagesPerSec, PageFaultsPerSec FROM Win32_PerfFormattedData_PerfOS_Memory
SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor
SELECT Caption, WorkingSet, PageFaultsPerSec,IOReadBytesPerSec, IOWriteBytesPerSec, ThreadCount, HandleCount FROM Win32_PerfFormattedData_PerfProc_Process
SELECT Caption, BytesReceivedPerSec, BytesSentPerSec FROM Win32_PerfFormattedData_Tcpip_NetworkInterface
Это действительно отличный вопрос, и жаль, что он не получил больше любви!
Моя основная теория анализа узких мест заключается в том, чтобы рассматривать систему как коробку с 4 видами конечных ресурсов: процессор, память, диск, и сеть. Поэтому я хочу получить базовые числа для каждого из них, чтобы определить работоспособность коробки. Мне нужны числа, которые легко интерпретировать: высокое - плохо, низкое - хорошо. 0 - лучший вариант, хотя и не достижимый полностью (в конце концов, мы купили компьютер для Работай, а?). Как только я увижу, какой из четырех ресурсов является основным узким местом, я могу перейти к определению, какая программа или процесс поглощает все ресурсы, и принять обоснованное решение относительно того, нужно ли мне увеличить этот ресурс - или настроить программу / процесс для использования. меньше ресурса.
Я отформатирую основные счетчики производительности, которые я использую, из Эта статья, как запросы WMIC, потому что никаких сценариев не требуется (хотя это, безусловно, возможно!). Вы можете ввести каждый из этих запросов прямо в консоль cmd:
wmic path Win32_PerfFormattedData_PerfOS_System get ProcessorQueueLength
Выше Длина очереди процессора. Это говорит о том, сколько потоков ожидают в очереди для обработки ЦП. Большие числа - плохо, низкие - хорошо. Обычно я считаю, что значение <10 является здоровой системой.
wmic path Win32_PerfFormattedData_PerfOS_Memory get PagesInputPerSec
Выше Память, ввод страниц в секунду, скорость, с которой страницы считываются с диска для устранения ошибок жестких страниц. Сбои аппаратных страниц возникают, когда процесс обращается к странице в виртуальной памяти, которая не находится в физической памяти и должна быть получена с диска. Однако этот счетчик лучше всего работает в графическом представлении Perfmon. На исправном (не имеющем узких мест) компьютере вы будете время от времени видеть всплески при считывании данных с диска в ОЗУ. Чем больше всплесков вы видите, и чем они выше, тем больше памяти ограничено системой. Если система часто остается на ненулевом значении в течение периодов, превышающих, скажем, пять секунд, у вас, вероятно, есть узкое место в памяти.
wmic path Win32_PerfFormattedData_PerfDisk_PhysicalDisk get AvgDiskQueueLength, name
Выше PhysicalDisk, средняя длина очереди диска. Я считаю это ключевым показателем работоспособности системы, поскольку узкие места в памяти также приводят к перегрузке диска из-за чрезмерной подкачки файлов подкачки, а также часто приводят к увеличению загрузки ЦП. Он покажет элемент для каждого смонтированного диска, а также в целом по всем дискам. У хорошо работающего одиночного диска это значение будет равно 2 или ниже. Для массивов разделите количество шпинделей на длину очереди (например: 4 шпинделя в массиве, разделенные на длину очереди 8 = 2, что означает, что массив работает хорошо).
wmic path Win32_PerfFormattedData_Tcpip_NetworkInterface get OutputQueueLength, PacketsReceivedErrors, Name, currentbandwidth
И, наконец, выше мы видим производительность NIC. В частности Сетевой интерфейс, длина очереди вывода и Ошибки приема пакетов. Эти два счетчика позволяют нам узнать, сколько пакетов ожидает отправки и сколько входящих пакетов вызвали ошибки, которые, вероятно, привели к повторной передаче. Мы хотим, чтобы оба числа оставались равными нулю. В этом запросе я также получаю текущую полосу пропускания сетевого адаптера, что является полезной информацией.
Как только я определил, какой ресурс используется слишком часто, я обычно полагаюсь на Обозреватель процессов или объект процесса Perfmon, чтобы определить, какой процесс потребляет ресурсы.