Понимание средних показателей нагрузки Linux и мониторинг производительности Linux
В этой статье мы объясним одну из важнейших задач системного администрирования Linux — мониторинг производительности в отношении загрузки системы/ЦП и средних значений нагрузки.
Прежде чем двигаться дальше, давайте поймем эти две важные фразы во всех Unix-подобных системах:
- Загрузка системы/загрузка ЦП — это показатель чрезмерной или недостаточной загрузки ЦП в системе Linux; количество процессов, которые выполняются ЦП или находятся в состоянии ожидания.
- Средняя нагрузка – средняя загрузка системы, рассчитанная за заданный период времени 1, 5 и 15 минут.
Технически считается, что в Linux средняя нагрузка представляет собой среднее значение процессов в очереди выполнения (ядра), помеченных как работающие или непрерываемые.
Обратите внимание:
- Все, если не большинство систем, работающих на Linux или других Unix-подобных системах, возможно, где-то покажут пользователю средние значения нагрузки.
- Совершенно простаивающая система Linux может иметь нулевую среднюю нагрузку, исключая процесс простоя.
- Почти все Unix-подобные системы учитывают только процессы, находящиеся в состоянии выполнения или ожидания. Но в Linux это не так, он включает процессы в состояния бесперебойного сна; те, кто ждут других системных ресурсов, таких как дисковый ввод-вывод и т. д.
Как отслеживать среднюю загрузку системы Linux
Существует множество способов мониторинга средней загрузки системы, включая время безотказной работы, которое показывает, как долго работает система, количество пользователей и средние значения нагрузки:
uptime
07:13:53 up 8 days, 19 min, 1 user, load average: 1.98, 2.15, 2.21
Числа читаются слева направо, и приведенный выше вывод означает, что:
- Средняя нагрузка за последнюю 1 минуту составляет 1,98.
- Средняя нагрузка за последние 5 минут составляет 2,15.
- Средняя нагрузка за последние 15 минут — 2,21.
Высокие средние значения нагрузки означают, что система перегружена; многие процессы ждут процессорного времени.
Мы раскроем это в следующем разделе в отношении количества ядер ЦП. Кроме того, мы также можем использовать другие известные инструменты, такие как Top и Glies, которые отображают состояние работающей системы Linux в реальном времени, а также многие другие инструменты:
Высшее командование
top
top - 12:51:42 up 2:11, 1 user, load average: 1.22, 1.12, 1.26
Tasks: 243 total, 1 running, 242 sleeping, 0 stopped, 0 zombie
%Cpu(s): 17.4 us, 2.9 sy, 0.3 ni, 74.8 id, 4.6 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8069036 total, 388060 free, 4381184 used, 3299792 buff/cache
KiB Swap: 3906556 total, 3901876 free, 4680 used. 2807464 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6265 tecmint 20 0 1244348 170680 83616 S 13.3 2.1 6:47.72 Headset
2301 tecmint 9 -11 640332 13344 9932 S 6.7 0.2 2:18.96 pulseaudio
2459 tecmint 20 0 1707692 315628 62992 S 6.7 3.9 6:55.45 cinnamon
2957 tecmint 20 0 2644644 1.035g 137968 S 6.7 13.5 50:11.13 firefox
3208 tecmint 20 0 507060 52136 33152 S 6.7 0.6 0:04.34 gnome-terminal-
3272 tecmint 20 0 1521380 391324 178348 S 6.7 4.8 6:21.01 chrome
6220 tecmint 20 0 1595392 106964 76836 S 6.7 1.3 3:31.94 Headset
1 root 20 0 120056 6204 3964 S 0.0 0.1 0:01.83 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.10 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
....
Инструмент «Взгляды»
glances
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic) Uptime: 2:16:06
CPU 16.4% nice: 0.1% LOAD 4-core MEM 60.5% active: 4.90G SWAP 0.1%
user: 10.2% irq: 0.0% 1 min: 1.20 total: 7.70G inactive: 2.07G total: 3.73G
system: 3.4% iowait: 2.7% 5 min: 1.16 used: 4.66G buffers: 242M used: 4.57M
idle: 83.6% steal: 0.0% 15 min: 1.24 free: 3.04G cached: 2.58G free: 3.72G
NETWORK Rx/s Tx/s TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0 525Kb 31Kb
lo 2Kb 2Kb CPU% MEM% VIRT RES PID USER NI S TIME+ IOR/s IOW/s Command
wlp2s0 0b 0b 14.6 13.3 2.53G 1.03G 2957 tecmint 0 S 51:49.10 0 40K /usr/lib/firefox/firefox
7.4 2.2 1.16G 176M 6265 tecmint 0 S 7:08.18 0 0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O R/s W/s 4.9 3.9 1.63G 310M 2459 tecmint 0 R 7:12.18 0 0 cinnamon --replace
ram0 0 0 4.2 0.2 625M 13.0M 2301 tecmint -11 S 2:29.72 0 0 /usr/bin/pulseaudio --start --log-target=syslog
ram1 0 0 4.2 1.3 1.52G 105M 6220 tecmint 0 S 3:42.64 0 0 /usr/lib/Headset/Headset
ram10 0 0 2.9 0.8 409M 66.7M 6240 tecmint 0 S 2:40.44 0 0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11 0 0 2.9 1.8 531M 142M 1690 root 0 S 6:03.79 0 0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12 0 0 2.6 0.3 79.3M 23.8M 9651 tecmint 0 R 0:00.71 0 0 /usr/bin/python3 /usr/bin/glances
ram13 0 0 1.6 4.8 1.45G 382M 3272 tecmint 0 S 6:25.30 0 4K /opt/google/chrome/chrome
...
Средние значения нагрузки, показанные этими инструментами, считываются из файла /proc/loadavg, который можно просмотреть с помощью команды cat, как показано ниже:
cat /proc/loadavg
2.48 1.69 1.42 5/889 10570
Чтобы отслеживать средние значения нагрузки в формате графика, проверьте: ttyload — показывает цветной график средней загрузки Linux в терминале.
На настольных компьютерах есть инструменты графического пользовательского интерфейса, которые мы можем использовать для просмотра средних показателей загрузки системы.
Понимание средней нагрузки системы в зависимости от количества процессоров
Мы не можем объяснить загрузку системы или производительность системы, не проливая свет на влияние количества ядер ЦП на производительность.
Многопроцессор против многоядерности
- Многопроцессор – это когда два или более физических процессора интегрированы в одну компьютерную систему.
- Многоядерный процессор – это один физический процессор, имеющий как минимум два или более отдельных ядер (или то, что мы также можем называть процессорами), которые работают параллельно. Это означает, что двухъядерный процессор имеет два процессора, четырехъядерный процессор имеет четыре процессора и так далее.
Кроме того, существует также процессорная технология, впервые представленная Intel для улучшения параллельных вычислений, называемая гиперпоточностью.
При использовании гиперпоточности одно физическое ядро ЦП отображается в операционной системе как два логических ядра ЦП (но на самом деле существует один физический аппаратный компонент).
Обратите внимание, что одно ядро ЦП может выполнять только одну задачу одновременно, поэтому были воплощены в жизнь такие технологии, как несколько ЦП/процессоров, многоядерные ЦП и гиперпоточность.
При наличии более чем одного ЦП несколько программ могут выполняться одновременно. Современные процессоры Intel используют комбинацию нескольких ядер и технологии Hyper-Threading.
Чтобы узнать количество процессоров, доступных в системе, мы можем использовать команды nproc или lscpu следующим образом:
nproc
4
OR
lscpu
Другой способ узнать количество процессоров с помощью команды grep, как показано.
grep 'model name' /proc/cpuinfo | wc -l
4
Теперь, чтобы лучше понять нагрузку на систему, мы сделаем несколько предположений. Допустим, у нас есть средние значения нагрузки ниже:
23:16:49 up 10:49, 5 user, load average: 1.00, 0.40, 3.35
В одноядерной системе это будет означать:
- ЦП был в среднем загружен полностью (100%); За последнюю минуту на ЦП (1.00) выполнялось 1 процесс.
- Процессор простаивал в среднем на 60%; ни один процесс не ждал процессорного времени (0,40) за последние 5 минут.
- ЦП был перегружен в среднем на 235%; 2,35 процесса ожидали процессорного времени (3,35) за последние 15 минут.
В двухъядерной системе это будет означать:
- Один ЦП в среднем простаивал на 100%, один ЦП использовался; ни один процесс не ждал процессорного времени (1,00) за последнюю минуту.
- Процессоры простаивали в среднем на 160%; ни один процесс не ждал процессорного времени. (0,40) за последние 5 минут.
- Процессоры были перегружены в среднем на 135%; 1.35 процессы ждали процессорного времени. (3,35) за последние 15 минут.
Вам также может понравиться:
- 20 инструментов командной строки для мониторинга производительности Linux – часть 1
- 13 инструментов мониторинга производительности Linux – часть 2
- Perf — инструмент мониторинга и анализа производительности для Linux.
- Nmon: анализ и мониторинг производительности системы Linux
В заключение, если вы системный администратор, то вам стоит беспокоиться о высоких средних нагрузках. Когда они высоки, превышают количество ядер ЦП, это означает высокий спрос на ЦП, а низкие средние значения нагрузки ниже количества ядер ЦП говорят нам о том, что ЦП используются недостаточно.