Получаем сведения о системе из /proc и /sys
- /proc/uptime - Uptime и простой (Idle)
- /proc/stat - Загрузка ЦПУ
- /proc/loadavg - Load Average
- /proc/meminfo - Информация по памяти
- /proc/net/dev - Информация по сети
- /sys/class/hwmon/hwmon0/device/hwmon/hwmon0/temp1_input - Температура CPU
/proc/uptime - Uptime и простой (Idle)
cat /proc/uptime
Получаем:
17026202.94 135823050.06
Первое число - uptime абсолютное значение в секундах, второе - время простоя с секундах для всех ядер.
Т.е. чтобы посчитать время простоя, нужно поделить результат на кол-во ядер.
/proc/stat - Загрузка ЦПУ
Для того, чтобы получить загрузку процессора в процентах за интервал времени нужно:
Считывать первые 4 числа из первой строки /proc/stat (для конкретного ядра читаем соотвествующую строку начинающуюся с cpu[номер]:
cat /proc/stat
cpu 31085701 0 3091028 13579083968 1380884 220 26696 1298948 0 0
cpu0 3190446 0 408669 1696799095 1083898 214 19356 377300 0 0
cpu1 5903378 0 576443 1694968516 181946 4 4403 183745 0 0
cpu2 5252583 0 427988 1695859527 39980 0 866 156003 0 0
cpu3 4258476 0 394110 1696992052 22731 0 882 138313 0 0
cpu4 3543939 0 341801 1698103798 17814 0 424 118064 0 0
cpu5 2974831 0 316912 1698759640 12997 0 285 112461 0 0
cpu6 3184640 0 318864 1698584900 11388 0 235 106158 0 0
cpu7 2777406 0 306239 1699016438 10128 0 242 106900 0 0
intr 4165703957 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 188225334 113866310 40379 0 669605 48 141976807 310411662 269366 0 356533 0 113955605 322013237 275433 0 760419 0 94526262 291942710 266165 0 908409 0 99256402 138686295 244813 0 729715 0 96566673 111680520 231890 0 689766 0 90473091 101512670 237014 0 671585 0 88921263 96209370 233934 0 734099 0 8446691 21 70476570 6350793 7412751 110052389 7672601 1192708 7124922 1187089 7033720 1208938 7848635 1183356 7811966 1310469 8083981 1172975 7290711 1203332 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 4845411403
btime 1502462051
processes 6876027
procs_running 1
procs_blocked 0
softirq 807367055 0 250033600 55209810 118549413 0 0 4817722 149523484 241389 228991637
Получаем U0 - cpu, N0 - nice, S0 - system, I0 - idle
Через заданный интервал времени(например 1с) повторяем чтение и получаем U1, N1, S1, I1
Вычисляем разности:
Ud = U1 – U0
Nd = N1 – N0
Sd = S1 – S0
Id = I1 – I0
Вычисляем сумму разностей:
Total = Ud + Nd + Sd + Id
Средняя загрузка за интервал времени:
avg_load = 100% * (Ud + Nd + Sd)/Total
/proc/loadavg - Load Average
cat /proc/loadavg
1.46 1.26 0.84 2/154 7484
Три первые значения представляют собой среднюю загрузку за последние 1, 5 и 15 минут.
Четвертое поле состоит из двух чисел, разделенных слешем: число перед слешем показывает количество выполняемых в данный момент процессов; число после слеша показывает общее количество процессов в системе на данный момент.
Пятое поле показывает последний PID (идентификатор процесса), выделенных системой.
/proc/meminfo - Информация по памяти
cat /proc/meminfo
MemTotal: 8230152 kB
MemFree: 1463560 kB
MemAvailable: 7291316 kB
Buffers: 521448 kB
Cached: 5272548 kB
SwapCached: 5984 kB
Active: 6102384 kB
Inactive: 261256 kB
Active(anon): 566268 kB
Inactive(anon): 240296 kB
Active(file): 5536116 kB
Inactive(file): 20960 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 392188 kB
SwapFree: 320192 kB
Dirty: 84 kB
Writeback: 0 kB
AnonPages: 564036 kB
Mapped: 76872 kB
Shmem: 236920 kB
Slab: 351448 kB
SReclaimable: 313676 kB
SUnreclaim: 37772 kB
KernelStack: 3184 kB
PageTables: 7792 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 4507264 kB
Committed_AS: 1682180 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 20880 kB
VmallocChunk: 34359655367 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
DirectMap4k: 8388608 kB
DirectMap2M: 0 kB
/proc/net/dev - Информация по сети
cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
eth0: 3891211574 44053703 0 0 0 0 0 0 22249901768 43623500 0 0 0 0 0 0
eth1: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
lo: 5715737 54833 0 0 0 0 0 0 5715737 54833 0 0 0 0 0 0
/sys/class/hwmon/hwmon0/device/hwmon/hwmon0/temp1_input - Температура CPU
cat /sys/class/hwmon/hwmon0/device/hwmon/hwmon0/temp1_input
61000
В данном случае температура 61 °С
Комментарии (0)