2

У меня возникла странная проблема с моей виртуальной машиной Solaris: после загрузки и повышения в течение 1-2 часов загрузка ЦП будет повышаться до 100% в течение 5 секунд, затем снижается до нормальной в течение еще 5 секунд и будет повторяться следующим образом до перезагрузки - это делает мою виртуальную машину Solaris совершенно непригодной для использования.

Я хочу выяснить, что происходит во время повторяющихся 5-секундного использования процессора на 100%, но система не отвечает на запросы в течение 5 секунд - не обрабатываются даже прерывания мыши / клавиатуры, и поэтому я не могу увидеть имя процесса с помощью top или prstat ,

Поэтому я хочу выяснить:

  • идентификатор процесса, который вызвал 100% загрузку процессора
  • что процесс делал во время 100% загрузки процессора

Пожалуйста, предлагайте свои предложения, спасибо!

2 ответа2

5

Вы можете попробовать запустить top в пакетном режиме:

top -b -n100 > top.log

где -n100 обозначает 100 итераций.

Другой альтернативой является использование ps с соответствующими аргументами (они из Linux, вам может понадобиться обратиться к странице справочника ps в Solaris). Для удобства команда встроена в скрипт Bash.

   #!/bin/bash 
   while true ; do
      ps -eo pcpu,pmem,pid,ppid,args >> process.log
      sleep 1
   done

Возможно, вам также придется изменить приоритет процесса регистрации активности процесса в реальном времени с помощью команды nice .

3

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

Это также может быть проблема с гипервизором или проблема, связанная с ядром.

Я бы использовал dtrace, чтобы выяснить, что делает ядро в эти периоды высокой загрузки ЦП:

Команды DTraceToolkit cputimes и modcalls.d были бы хорошим началом.

Если вашей операционной системой является также Solaris, dtrace также может быть полезна для определения источника загрузки процессора

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .