Как сохранить журналы процессора или значения использования графического процессора?
Люди !
Я хочу постоянно проверять журналы моего процессора. Я использовал команды 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.