Как я могу узнать, связан ли процесс с процессором, памятью или диском?

Как узнать, связан ли процесс с процессором, памятью или диском?

42
задан 7 August 2010 в 09:01

6 ответов

Проверить iotop, может быть полезно

0
ответ дан 7 August 2010 в 09:01

Это требует вуду. Это зависит. Пример:

  • Если памяти достаточно и диски не кажутся слишком занятыми, возможно, ограничен ЦП. Посмотрите на использование процессора и если он граничит на 100%, то он связан с процессором. Если это не так, в реализации есть искусственное узкое место. Например. на двухъядерном процессоре однопоточный процесс не превысит 50% загрузки процессора.

  • Если центральный процессор и память доступны, но диски очень заняты, или задержка ввода-вывода кажется высокой, вполне вероятно, что он связан с вводом-выводом. Посмотрите, поможет ли добавление дополнительных дисков (RAID?).

  • Ничего из вышеперечисленного? Проверьте доступную память.

  • Достаточно памяти? В самом процессе может быть искусственное узкое место, то есть, может быть, кто-то забыл удалить сон (1)? Наах это не так просто, как правило. ;)

Существует причина, по которой у нас есть целая лаборатория для инженеров по производительности в большинстве компаний, занимающихся чувствительными к производительности продуктами!

Используйте такие инструменты, как sar, vmstat, iostat, oprofile, lockstat, dtrace, инструменты контроля над продуктом и т. д. для устранения проблем с perf.

0
ответ дан 7 August 2010 в 09:01

Инструментом, который может быть полезен для проверки в реальном времени ряда статистических данных процесса (память, загрузка ЦП, ввод-вывод и т. Д.), Является htop . Он не заменяет более специализированные инструменты, названные Судханшу, но может быть хорошим началом.

0
ответ дан 7 August 2010 в 09:01

Как и другие упомянутые инструменты, запустите ps l PID, вставив соответствующий идентификатор процесса, или посмотрите на столбцы STATE и WCHAN в top или htop.

Если он находится в состоянии D (для диска), он выполняет файловый ввод-вывод. Это может быть потому, что он либо читает много файлов, либо потому, что использует много памяти и подкачку. Колонка WCHAN скажет вам, какая функция ядра находится внутри; погуглив на них или спросив здесь, вы можете узнать, что они значат.

Если он находится в состоянии R (работа), он использует процессор в пространстве пользователя, другими словами, он в данный момент привязан к процессору.

Если он находится в состоянии S (сна), он находится внутри прерываемого системного вызова, что может означать, что он либо фактически спит, либо выполняет что-то вроде ожидания сетевого трафика или блокировки. Опять же, просмотр конкретного wchan расскажет вам больше.

См. Также Что такое «канал ожидания»; процесса?

0
ответ дан 7 August 2010 в 09:01

Запустите top и посмотрите на строку использования процессора. Высокий пользовательский% указывает, что он связан с процессором. Высокий процент ожидания указывает, что он связан с IO.

0
ответ дан 7 August 2010 в 09:01

Обычно я делаю:

sudo apt install iotop htop # Системы на основе Ubuntu/debian

или

sudo yum install iotop htop # Redhat/RPM основанные системы

Тогда взгляните на htop - происходит ли подкачка системы (полностью заполненная полоса памяти)? Если это так, вы хотите исправить это в первую очередь. Обмен очень дорогой с точки зрения производительности.

Если система не переключается, проверьте полоски процессора. Они почти 100% большую часть времени? Ну, тогда ваш процессор занят :)

Далее, выйдите из htop и запустите sudo iotop и проверьте верхние правые числа (общее и фактическое количество операций записи на диск). Насколько они высоки?

Если они примерно соответствуют максимальной разумной пропускной способности вашего диска, с которого также выполняется чтение/запись (и обычно операции записи являются узким местом, поскольку скорость записи на диск почти всегда ниже, чем скорость чтения), то ваш IO занят :)

Примечание. Я имею в виду фактическую разумную пропускную способность на вашем диске (то, что вы должны были примерно получить, если бы вы копировали набор файлов вручную, когда сервер в противном случае простаивал), а не «метку» производительности, чего часто невозможно достичь с самого начала.

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

0
ответ дан 27 October 2020 в 03:01

Другие вопросы по тегам:

Похожие вопросы: