1

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

Заранее спасибо.

2 ответа2

2

Самый простой способ, который я знаю, это использовать top в пакетном режиме и в одной итерации:

$ top -bn 1| grep Cpu
 %Cpu(s):  5.0 us,  2.8 sy,  0.0 ni, 91.4 id,  0.5 wa,  0.0 hi,  0.2 si,  0.0 st

Смотрите мой ответ здесь для объяснения полей. Достаточно сказать, что вы хотите получить сумму us , sy и ni поэтому требуется некоторый анализ:

$ top -bn 1| grep Cpu | gawk '{print $2+$4+$6}' > logfile

Приведенная выше команда возвращает 7,8, что означает, что в данный конкретный момент используется 7,8% доступной мощности ЦП. Вы можете использовать cron для запуска этой команды, например, каждую минуту:

$ crontab -e

Откроется окно редактора (любого редактора, который вы указали в качестве переменной оболочки $EDITOR ), вставьте в это окно эту строку, а затем сохраните и закройте ее:

* * * * * top -bn 1| grep Cpu | gawk '{print $2+$4+$6}' >> ~/logfile

Это приведет к тому, что процент загрузки процессора будет записываться в ~/logfile каждые две минуты.


Если вам нужна разбивка для каждого процессора, вы можете проанализировать вывод mpstat:

$ mpstat -P ALL | tail -n +4 | gawk '{print "CPU:"$3,$4+$5+$6}'
CPU:all 7.87
CPU:0 10.73
CPU:1 10.75
CPU:2 4.97
CPU:3 5.09
1

Зависит от того, что вы хотите:

  • /usr/bin/top возвращает информацию, учитывая количество итераций или других спецификаторов, которые помогут вам;
  • /proc/cpuinfo показывает, сколько у вас процессоров, чтобы помочь вашему инструменту определить статистику использования;
  • Для интерактивного использования в Ubuntu существуют настольные виджеты для отображения того, что вы хотите графически. Например: https://launchpad.net/indicator-applet

-- Редактировать --

Спрашивающий просит записи в лог-файл. Я бы порекомендовал использовать:

 vmstat -s

это выводит:

    99052720  total memory
    60854068  used memory
     3565184  active memory
    19739432  inactive memory
    38198648  free memory
     3221080  buffer memory
    20045176  swap cache
     2097144  total swap
       10836  used swap
     2086308  free swap
   124233445 non-nice user cpu ticks
        3023 nice user cpu ticks
    45760329 system cpu ticks
 21762927158 idle cpu ticks
      124003 IO-wait cpu ticks
        9748 IRQ cpu ticks
     1040367 softirq cpu ticks
           0 stolen cpu ticks
     4503955 pages paged in
  1180587414 pages paged out
        1637 pages swapped in
       11093 pages swapped out
      708030 interrupts
  2814409153 CPU context switches
  1377801399 boot time
    40693435 forks

Итак, запустите эту команду и передайте файл в файл или прочитайте его с помощью python. Затем повторите и просмотрите результаты, чтобы найти использование процессора.

Обратите внимание, что термин «CPU Ticks» серьезно ошибается . НЕ пытайтесь конвертировать тики в секунды, вы потерпите неудачу и поищите в сети причину, а затем начнете колотить голову, пока физическая боль не совпадет с вашей душевной болью.

Используйте эти галочки только как ОТНОСИТЕЛЬНЫЕ меры. Это означает, что сложите все тики и разделите их долю на одну конкретную вещь. Что-то вроде:

 idlePercent = (idle / (idle+kernel+user+nonNiceUser+softirq+irq+iowait+stolen)) * 100

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