Как сохранить журналы процессора или значения использования графического процессора?

Люди !

Я хочу постоянно проверять журналы моего процессора. Я использовал команды top и htop. Но я просто проверяю их во время моделирования.

Теперь я хочу запустить настоящий робот в течение примерно 2 часов (мой ноутбук будет работать на роботе во время движения).

Итак, как мне сохранить все записи в файле журнала, чтобы я мог получить к нему доступ позже?

Во-вторых, я также проверил производительность GPU (видеокарты AMD). Но как я могу сделать файл журнала?

2 ответа

Решение

Сначала решите, какую статистику процессора вы хотите регистрировать

Вы можете выбрать другую статистику для входа:

  • Скорость процессора (частота в МГц или ГГц)
  • Процент использования процессора
  • Температура процессора
  • Средний коэффициент загрузки процессора
  • Кроме того, эта статистика может быть сегментирована для каждого процессора, то есть с 1 по 8 для четырехъядерного гиперпоточного процессора.

Для простоты я основываю этот ответ, используя средний коэффициент загрузки, аналогичный ответу в следующем разделе: Как регистрировать загрузку процессора?

Создайте цикл для двухчасовой регистрации каждую секунду

Вам понадобится bash-скрипт для цикла 7200 секунд (2 часа), который будет выглядеть так:

#!/bin/bash

for ((i=0; i<7200; i++))
do
    uptime >> /home/user/cpuload.log
    sleep 1
done

Разобрать данные в электронной таблице

Чтобы посмотреть ваш вывод, используйте команду:

$ cat cpuload.log
 20:04:06 up 2 days, 14 min,  1 user,  load average: 1.39, 1.12, 0.95

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

Вы можете импортировать файл cpuload.log в электронную таблицу и график точек данных в течение двух часов или просто прокрутите данные. Я использую Libre Office Calc, но все современные таблицы могут импортировать файл.

Краткие сведения о средней нагрузке

В приведенном выше примере среднее значение за одну минуту 1.39, Это кажется опасно высоким, потому что все закончилось .70 заслуживает расследования и 1.00 означает, что есть узкое место, и процессы не обслуживаются и должны ждать.

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

$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq
2074968
2133093
2094750
1863843
1728562
1855875
1849125
1778156

Это показывает, что есть 8 процессоров (это четырехъядерный процессор Hyper-Threading Intel i-7 3630QM для ноутбуков, работающий от 1200 МГц до 3400 МГц). В этом снимке CPU#1 (называемый CPU0 внутри) работает на 2,0749.68 Mhz и процессор № 8 работает на 1,7781.56 Mhz, Но я отвлекся, важно посчитать, сколько процессоров там, а это 8.

Так что разделите среднюю нагрузку 1.39 на 8 и среднее значение TRUE 0.17 что очень респектабельно. Еще раз любое значение более 0.70 заслуживает расследования и когда он попадает 1.00 ваша система глохнет. Вы можете прочитать далее здесь


С помощью top команда, чтобы увидеть топ-10 процессов

Чтобы использовать top Команда, чтобы увидеть 10 наиболее ресурсоемких процессов, используют эту команду вместо uptime команда:

top -n 1 -b | head -n 17 | tail -n 10 >> /home/user/top10.log

Файл /home/user/top10.log будет выглядеть примерно так (повторяется каждую секунду в течение двух часов):

$ top -n 1 -b | head -n 17 | tail -n 10
 6170 rick      20   0 1437432 537000 126060 S  62.5  6.7   8:50.24 chrome
 2466 rick      20   0 1210040 140568  61864 S   6.2  1.8  22:16.88 compiz
 4111 rick      20   0  742396 248724 185820 S   6.2  3.1  36:26.68 chrome
 6280 rick      20   0   41800   3668   3124 R   6.2  0.0   0:00.01 top
10096 root      20   0       0      0      0 S   6.2  0.0   0:00.47 kworker/0:2
    1 root      20   0  120064   6244   4000 S   0.0  0.1   0:02.23 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.05 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0   0:01.31 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:+
    7 root      20   0       0      0      0 S   0.0  0.0   1:39.28 rcu_sched

ПРИМЕЧАНИЕ: заменить user с вашим настоящим именем пользователя.


С помощью top команда, чтобы получить значения CPU, sy, id и si

Как и в первом разделе, создайте сценарий bash для цикла 7200 секунд:

#!/bin/bash

# NAME: ~/bin/cpu-top-summary
# DATE: June 13, 2017
# DESC: Call `top` command every second to obtain CPU(s) stats for
#       us, sy, ni, id, wa, hi, si, and st. Log to /tmp/top-cpu-summary.log
#       with time stamp in hh:mm:ss 24 hour format.
# PARM: $1 number of seconds to run, ie 2 hours = 7200

now="$(date +'%d/%m/%Y')"
printf "top CPU(s) summary for %s\n" "$now" > /tmp/top-cpu-summary.log
for ((i=0; i<$1; i++))
do
    TimeStamp=`date +"%H:%M:%S"`
    printf "$TimeStamp - " >> /tmp/top-cpu-summary.log
    top -n 1 -b | head -n 3 | tail -n 1 >> /tmp/top-cpu-summary.log
    sleep 1
done

Когда вы вызываете скрипт bash, используя top-cpu-summary 10 вы можете увидеть результат в течение 10 секунд, используя:

$ cat /tmp/top*
top CPU(s) summary for 13/06/2017
19:17:34 - %Cpu(s): 25.0 us,  9.2 sy,  0.0 ni, 65.4 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
19:17:35 - %Cpu(s): 25.0 us,  9.2 sy,  0.0 ni, 65.4 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
19:17:36 - %Cpu(s): 25.0 us,  9.2 sy,  0.0 ni, 65.4 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
19:17:37 - %Cpu(s): 25.0 us,  9.2 sy,  0.0 ni, 65.4 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
19:17:38 - %Cpu(s): 25.0 us,  9.2 sy,  0.0 ni, 65.4 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
19:17:39 - %Cpu(s): 25.0 us,  9.2 sy,  0.0 ni, 65.4 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
19:17:41 - %Cpu(s): 25.0 us,  9.2 sy,  0.0 ni, 65.4 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
19:17:42 - %Cpu(s): 24.9 us,  9.2 sy,  0.0 ni, 65.4 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
19:17:43 - %Cpu(s): 24.9 us,  9.2 sy,  0.0 ni, 65.4 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
19:17:44 - %Cpu(s): 24.9 us,  9.2 sy,  0.0 ni, 65.4 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st

Вместо того чтобы писать сценарии самостоятельно, вы можете использовать collectl и, возможно, объединить это с графитом и графаном для визуализации результатов.

С сайта коллекции:

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

В отличие от большинства инструментов мониторинга, которые либо сосредотачиваются на небольшом наборе статистики, форматируют свои выходные данные только одним способом, запускают либо интерактивно, либо как демон, но не оба, сборщик пытается сделать все это. Вы можете контролировать любую из широкого набора подсистем, которые в настоящее время включают buddyinfo, cpu, диск, inode, infiniband, lustre, память, сеть, nfs, процессы, квадрики, slabs, сокеты и tcp.

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

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