Сколько времени я провожу в свопе?

Сколько времени я провожу в свопе?
Сколько времени я провожу в свопе? - chernoholik @ Unsplash

Я думаю, что я получаю медлительность из-за нехватки памяти и попадания в своп. Я наблюдал за hardfaults/sec в Resource Monitor, и он часто превышает 1000. Эта проблема обычно возникает во время перекомпиляций, а также когда мой редактор исходного кода делает что-то интенсивное.

Но 1000 - это просто абсолютное число, и я не уверен, в этом моя проблема или нет. SSD диски имеют быстрый случайный доступ, поэтому 1000 может быть в порядке.

Если я правильно понимаю, когда программа обращается к чему-то, что не находится в основной памяти, она выполняет постраничную ошибку и извлекает эту страницу с диска.

Предположительно, затем она передает управление другому процессу.

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

Итак, что я действительно хочу знать, так это какой процент процессорного времени составляет время, когда процессор простаивает, но есть по крайней мере один процесс, ожидающий своп?

Есть ли что-нибудь, что позволяет получить эту цифру? Я думаю, что эта цифра даст хорошее представление о том, насколько поможет обновление оперативной памяти. Или же есть другой способ измерения, более информативный, чем количество ошибок страниц в секунду?

Действительно 1000 это просто абсолютное число

Если ваш счетчик страниц в секунду показывает значение 20 или больше для медленного диска и/или ваш счетчик страниц в секунду постоянно показывает более 40 страниц в секунду на медленном диске или 300 страниц в секунду на быстром диске, вы можете решить решить эту проблему, просто добавив больше памяти на ваш сервер.

Счетчики страниц в секунду

но 1000 аппаратных сбоев в секунду — это около 4 МБ трафика в секунду, а скорость ввода-вывода — ~1000 IOPS. Поскольку твердотельные накопители обычно рассчитаны на 50000 IOPS (или даже миллионы IOPS для высокопроизводительных дисков), это не должно быть проблемой в современной системе во время короткой компиляции IMO.

Поэтому мы рекомендуем отслеживать производительность логических дисков, на которых размещен файл подкачки, в соответствии с этими счетчиками. Имейте в виду, что в системе со 100 ошибками жестких страниц в секунду скорость передачи данных на диск составляет 400 КБ в секунду. Большинство дисков со скоростью вращения 7200 об/мин могут обрабатывать около 5 МБ в секунду при размере ввода-вывода 16 КБ или 800 КБ в секунду при размере ввода-вывода 4 КБ. Ни один счетчик производительности не измеряет напрямую, для какого логического диска разрешены отказы жестких страниц.

\Память\Страниц/сек и другие счетчики отказов жестких страниц

На самом деле вам не нужно знать, сколько времени тратится на подкачку, но вы должны проверить, насыщен ли диск операциями ввода-вывода, проверив Physical Disk\%Disk Time и Physical Disk\Avg Disk Queue Length в мониторе производительности (то же приложение, которое использовалось для проверки количества жестких сбоев в секунду). ). Если это не так или время активности диска низкое, то, вероятно, все в порядке. Вы также должны следить Paging File\%Usage, чтобы увидеть, сколько файла подкачки используется, если это слишком много, вам действительно нужно больше оперативной памяти.

Тем не менее, самый надежный способ, вероятно, проверить время ядра в диспетчере задач. Возможно, вам придется щелкнуть правой кнопкой мыши и выбрать «Показать время ядра», чтобы просмотреть его. В старом диспетчере задач это красная часть, а в настоящее время это темная область. Если ядро ​​занимает высокий процент использования ЦП, то это реальная проблема. Это время ядра может быть связано с тем, что слишком много времени читается/записывается в файл подкачки или что-то еще в пространстве ядра.

дальнейшее чтение


NevaDev, 8 февраля 2023 г., 13:11