Есть несколько возможных способов сделать это. Обратите внимание, что вполне возможно, что многие процессы в безудержном сценарии вызывают это, а не только один.
Первый способ - настроить pidstat для работы в фоновом режиме и получения данных.
pidstat -u 600 >/var/log/pidstats.log & disown $!
Это даст вам довольно подробный обзор работы системы с десятиминутными интервалами. Я бы предложил, чтобы это был ваш первый порт захода, так как он производит наиболее ценные / надежные данные для работы.
Существует проблема, связанная с этим, в первую очередь, если блок переходит в цикл безудержного процессора и производит огромную нагрузку - вы не гарантируете, что ваш фактический процесс будет выполняться своевременно во время загрузки (если вообще будет), так что вы могли фактически пропустить вывод !
Второй способ найти это - включить учет процессов. Возможно, более долгосрочный вариант.
accton on
Это включит учет процессов (если еще не добавлен). Если он не работал до этого, потребуется время для запуска.
Будучи запущенным, скажем, 24 часа - вы можете запустить такую команду (которая будет выдавать такой результат)
# sa --percentages --separate-times
108 100.00% 7.84re 100.00% 0.00u 100.00% 0.00s 100.00% 0avio 19803k
2 1.85% 0.00re 0.05% 0.00u 75.00% 0.00s 0.00% 0avio 29328k troff
2 1.85% 0.37re 4.73% 0.00u 25.00% 0.00s 44.44% 0avio 29632k man
7 6.48% 0.00re 0.01% 0.00u 0.00% 0.00s 44.44% 0avio 28400k ps
4 3.70% 0.00re 0.02% 0.00u 0.00% 0.00s 11.11% 0avio 9753k ***other*
26 24.07% 0.08re 1.01% 0.00u 0.00% 0.00s 0.00% 0avio 1130k sa
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28544k ksmtuned*
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 28096k awk
14 12.96% 0.00re 0.01% 0.00u 0.00% 0.00s 0.00% 0avio 29623k man*
7 6.48% 7.00re 89.26% 0.00u 0.00% 0.00s
Столбцы упорядочены так:
- Количество звонков
- Процент звонков
- Количество реального времени, потраченного на все процессы этого типа.
- Процент.
- Время процессора пользователя
- процент
- Системное процессорное время.
- Средний IO звонки.
- процент
- Название команды
То, что вы будете искать, это типы процессов, которые генерируют наибольшее время ЦП пользователя / системы.
Это разбивает данные на общее количество процессорного времени (верхняя строка), а затем на то, как это процессорное время было разделено. Учет процессов учитывается надлежащим образом только тогда, когда он включен, когда процессы появляются, поэтому, вероятно, лучше перезапустить систему после того, как она будет включена, чтобы обеспечить учет всех служб.
Это ни в коем случае не дает вам четкого представления о том, какой процесс может быть причиной этой проблемы, но может дать вам хорошее чувство. Поскольку это может быть 24-часовой снимок, существует вероятность искаженных результатов, так что имейте это в виду. Кроме того, он всегда должен регистрироваться, поскольку он является функцией ядра и, в отличие от pidstat, всегда будет выводить данные даже во время большой нагрузки.
В последней доступной опции также используется учет процессов, поэтому вы можете включить его, как указано выше, но затем использовать программу «lastcomm» для получения некоторой статистики процессов, выполняемых в момент возникновения проблемы, вместе со статистикой процессора для каждого процесса.
lastcomm | grep "May 8 22:[01234]"
kworker/1:0 F root __ 0.00 secs Tue May 8 22:20
sleep root __ 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa root pts/0 0.00 secs Tue May 8 22:49
sa X root pts/0 0.00 secs Tue May 8 22:49
ksmtuned F root __ 0.00 secs Tue May 8 22:49
awk root __ 0.00 secs Tue May 8 22:49
Это может также дать вам некоторые подсказки относительно того, что может быть причиной проблемы.