В этой статье мы объясним одну из критически важных задач администрирования системы Linux – мониторинг производительности в отношении нагрузки на систему/CPU и средних нагрузок.
Прежде чем мы пойдем дальше, давайте разберемся с этими двумя важными понятиями во всех системах, подобных Unix:
- Нагрузка на систему/CPU – это измерение пере- или недоиспользования CPU в системе Linux; количество процессов, которые выполняются CPU или находятся в состоянии ожидания.
- Средняя нагрузка – это средняя нагрузка на систему, рассчитанная за определенный период времени в 1, 5 и 15 минут.
В Linux средневзвешенная нагрузка технически считается текущим средним количеством процессов в очереди исполнения (ядра), отмеченных как исполняющиеся или непрерываемые.
Обратите внимание:
- Все или почти все системы под управлением Linux или других систем Unix-подобных возможно будут отображать значения средней нагрузки где-то для пользователя.
- A downright idle Linux system may have a load average of zero, excluding the idle process.
- Практически все системы, подобные Unix, учитывают только процессы в состоянии выполнения или ожидания. Но это не так в случае с Linux, он включает процессы в состоянии непрерываемого сна; те, которые ожидают других системных ресурсов, таких как дисковый ввод-вывод и т. д.
Как мониторить среднюю нагрузку на систему Linux
Существует множество способов мониторинга средней нагрузки на систему, включая uptime, который показывает, как долго система работает, количество пользователей вместе с средними нагрузками:
$ 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 и glances, которые отображают текущее состояние работающей системы Linux в реальном времени, а также множество других инструментов:
Команда Top
$ 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
$ 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 в терминале
На настольных компьютерах есть графические инструменты с пользовательским интерфейсом, которые мы можем использовать для просмотра средних значений загрузки системы.
Понимание Средней Загрузки Системы в Связи с Количеством ЦП
Мы не можем объяснить нагрузку на систему или производительность системы без раскрытия влияния количества ядер ЦП на производительность.
Многоядерный против многопроцессорного
- Многопроцессорная – это когда два или более физических процессора интегрируются в одну компьютерную систему.
- Многопроцессорный процессор – это один физический процессор, который имеет как минимум два или более отдельных ядра (или, как мы также можем называть их, процессорные блоки), которые работают параллельно. Это означает, что двухъядерный имеет 2 процессорных блока, четырехъядерный имеет 4 процессорных блока и так далее.
Кроме того, существует также технология процессора, которая была впервые представлена Intel для улучшения параллельных вычислений, называемая гиперпоточностью.
При гиперпоточности одно физическое ядро процессора выглядит как два логических ядра ЦП для операционной системы (но на самом деле это один физический аппаратный компонент).
Обратите внимание, что одно ядро ЦП может выполнять только одну задачу за раз, поэтому были созданы технологии, такие как множественные ЦП/процессоры, многопроцессорные ЦП и гиперпоточность.
С несколькими ЦП может быть выполнено несколько программ одновременно. Современные процессоры Intel используют комбинацию как многопроцессорных ядер, так и технологии гиперпоточности.
Чтобы найти количество доступных процессорных блоков в системе, мы можем использовать команды 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 процесс работал на ЦП (1,00) за последнюю минуту.
- ЦП был простаивал на 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
В заключение, если вы являетесь системным администратором, то высокие средние нагрузки действительно следует беспокоиться. Когда они высоки, превышают количество ядер ЦП, это указывает на высокий спрос на ЦП, а низкие средние нагрузки, ниже количества ядер ЦП, говорят о том, что ЦП используются недостаточно.
Source:
https://www.tecmint.com/understand-linux-load-averages-and-monitor-performance/