Мониторинг процессора без программесли поддерживается ядерным драйвером(немного о том, чего нет в альтовой вики)Здесь интересна будет документация
Linux cpufreq - stats driverhttps://www.kernel.org/doc/Documentation/cpu-freq/cpufreq-stats.txtДрайвер статистики по процессору вкомпиллирован в ядро
# grep CPU_FREQ_STAT /boot/config-$(uname -r)
CONFIG_CPU_FREQ_STAT=y
Каталог sys, весьма интересный каталог
Найти каталог stats не очень сложно
(наиболее интересное из того, что будет использоваться ниже)
# find /sys -type d -name "*cpufreq*"
/sys/devices/system/cpu/cpufreq
/sys/module/acpi_cpufreq
/sys/module/cpufreq_ondemand
/sys/module/cpufreq
# ls -l /sys/devices/system/cpu/cpufreq
итого 0
drwxr-xr-x 2 root root 0 окт 23 18:14 ondemand
drwxr-xr-x 3 root root 0 окт 23 2021 policy0
drwxr-xr-x 3 root root 0 окт 23 2021 policy1
drwxr-xr-x 3 root root 0 окт 23 2021 policy2
drwxr-xr-x 3 root root 0 окт 23 2021 policy3
# ls -l /sys/devices/system/cpu/cpufreq/policy0
итого 0
-r--r--r-- 1 root root 4096 окт 23 18:15 affected_cpus
-r--r--r-- 1 root root 4096 окт 23 18:15 bios_limit
-r-------- 1 root root 4096 окт 23 18:15 cpuinfo_cur_freq
-r--r--r-- 1 root root 4096 окт 23 18:14 cpuinfo_max_freq
-r--r--r-- 1 root root 4096 окт 23 18:15 cpuinfo_min_freq
-r--r--r-- 1 root root 4096 окт 23 18:15 cpuinfo_transition_latency
-r--r--r-- 1 root root 4096 окт 23 18:15 freqdomain_cpus
-r--r--r-- 1 root root 4096 окт 23 18:15 related_cpus
-r--r--r-- 1 root root 4096 окт 23 18:15 scaling_available_frequencies
-r--r--r-- 1 root root 4096 окт 23 2021 scaling_available_governors
-r--r--r-- 1 root root 4096 окт 23 18:15 scaling_cur_freq
-r--r--r-- 1 root root 4096 окт 23 2021 scaling_driver
-rw-r--r-- 1 root root 4096 окт 23 18:12 scaling_governor
-rw-r--r-- 1 root root 4096 окт 23 18:15 scaling_max_freq
-rw-r--r-- 1 root root 4096 окт 23 18:15 scaling_min_freq
-rw-r--r-- 1 root root 4096 окт 23 18:15 scaling_setspeed
drwxr-xr-x 2 root root 0 окт 23 18:14 stats
Сам каталог policy[0-9] содержит используемый драйвер, гувернёр, минимальную, максимальную, текущую и ступени частот по ядрам/потокам
# grep . /sys/devices/system/cpu/cpufreq/policy0/*
/sys/devices/system/cpu/cpufreq/policy0/affected_cpus:0
/sys/devices/system/cpu/cpufreq/policy0/bios_limit:2000000
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq:500000
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq:2000000
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_min_freq:500000
/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_transition_latency:10000
/sys/devices/system/cpu/cpufreq/policy0/freqdomain_cpus:0 1 2 3
/sys/devices/system/cpu/cpufreq/policy0/related_cpus:0
/sys/devices/system/cpu/cpufreq/policy0/scaling_available_frequencies:2000000 1900000 1800000 1700000 1600000 1500000 1400000 1300000 1200000 1100000 1000000 900000 800000 700000 600000 500000
/sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors:ondemand performance schedutil
/sys/devices/system/cpu/cpufreq/policy0/scaling_cur_freq:948518
/sys/devices/system/cpu/cpufreq/policy0/scaling_driver:acpi-cpufreq
/sys/devices/system/cpu/cpufreq/policy0/scaling_governor:ondemand
/sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq:2000000
/sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq:500000
/sys/devices/system/cpu/cpufreq/policy0/scaling_setspeed:<unsupported>
up_threshold драйвера гувернёра ondemand содержит процент от текущей ступени частоты процессора, выше или ниже которой, частота будет повышаться или понижаться соответственно
# ls -l /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
-rw-r--r-- 1 root root 4096 окт 23 19:30 /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
# cat /sys/devices/system/cpu/cpufreq/ondemand/up_threshold
95
Что же касаемо статистики, то каталоги stats/time_in_state содержат информацию о том, как много времени процессор/поток провёл на каждой из ступеней частот. Единица измерения 10 миллисекунд.
В примере:
для ступеней частот cpu0
# grep . /sys/devices/system/cpu/cpufreq/policy0/stats/time_in_state
2000000 28646
1900000 4317
1800000 3499
1700000 3915
1600000 4035
1500000 2955
1400000 2717
1300000 2342
1200000 2186
1100000 3974
1000000 5108
900000 5378
800000 8586
700000 24922
600000 70428
500000 599661
и на максимальной и минимальной частотах всех cpu
# grep . /sys/devices/system/cpu/cpufreq/policy[0-9]/stats/time_in_state | grep 'state:2000000\|state:500000'
/sys/devices/system/cpu/cpufreq/policy0/stats/time_in_state:2000000 28646
/sys/devices/system/cpu/cpufreq/policy0/stats/time_in_state:500000 599898
/sys/devices/system/cpu/cpufreq/policy1/stats/time_in_state:2000000 31382
/sys/devices/system/cpu/cpufreq/policy1/stats/time_in_state:500000 600777
/sys/devices/system/cpu/cpufreq/policy2/stats/time_in_state:2000000 44100
/sys/devices/system/cpu/cpufreq/policy2/stats/time_in_state:500000 549586
/sys/devices/system/cpu/cpufreq/policy3/stats/time_in_state:2000000 39721
/sys/devices/system/cpu/cpufreq/policy3/stats/time_in_state:500000 567216
По значениям stats/time_in_state, можно судить о степени загруженности процессора, за всё время от начала загрузки.
Что же касаемо температуры процессора,
после поиска,
# find /sys -name "*temp*"
не очень сложно найти в каталоге /sys файлы, которые содержат собственно температуру самого процессора и ядер
# grep . /sys/devices/platform/coretemp.0/hwmon/hwmon0/temp[0-9]_input; sensors
/sys/devices/platform/coretemp.0/hwmon/hwmon0/temp1_input:44000
/sys/devices/platform/coretemp.0/hwmon/hwmon0/temp2_input:43000
/sys/devices/platform/coretemp.0/hwmon/hwmon0/temp3_input:43000
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +44.0°C (high = +105.0°C, crit = +105.0°C)
Core 0: +43.0°C (high = +105.0°C, crit = +105.0°C)
Core 1: +43.0°C (high = +105.0°C, crit = +105.0°C)