Упражнение 28: производительность: получение данных о производительности, uptime, free, top
Это упражнение простое. Прежде всего, какие данные о производительности нам нужны?
Чтобы получить эту информацию, мы можем использовать следующие инструменты:
uptime
— сколько времени система работает.free
— показывает количество доступной и используемой памяти в системе.vmstat
— информация о процессах, памяти, подкачке, блочном вводе-выводе, ловушках, диске и активности процессора.top
— отображает текущие задачи Linux в реальном времени.Давайте посмотрим на эту программу и её вывод.
Вывод uptime
:
user1@vm1:~$ uptime
#(1) (2) (3) (4) (5) (6)
03:13:58 up 4 days, 22:45, 1 user, load average: 0.00, 0.00, 0.00
Поле | Описание |
---|---|
(1) | Текущее время. |
(2) | Время работы системы (после запуска). |
(3) | Количество текущих пользователей, вошедших в систему. |
(4) | Средняя загрузка процессора за последнюю минуту. Это не нормализованное значение, поэтому средняя загрузка, равная 1, означает полную загрузку одного процессора, но на четырёхпроцессорной системе это означает, что она простаивает 75% времени. |
(5) | Средняя нагрузка на процессор за последние 5 минут. |
(6) | Средняя нагрузка на процессор за последние 15 минут. |
Вывод free
:
user1@vm1:~$ free -mt
# (1) (2) (3) (4) (5) (6)
total used free shared buffers cached
Mem: 496 267 229 0 27 196
# (7) (8)
-/+ buffers/cache: 43 453
# 9
Swap: 461 0 461
# 10
Total: 958 267 691
Поле | Описание |
---|---|
(1) | Общий объём физической памяти. |
(2) | Используемый объём физической памяти. |
(3) | Свободный объём физической памяти. |
(4) | Столбец общей памяти следует игнорировать; он устарел. |
(5) | Объём оперативной памяти и метаданных файловой системы, выделенных для кэширования дисковых блоков. |
(6) | Общий объём страниц, используемых для чтения файлов из кэша. |
(7) | Общий объём памяти, исключая буферы и кэш (поле 2 минус поля 5 и 6). |
(8) | Свободная физическая память, включая свободные буферы и кеш (поле 1 минус поле 7). |
(9) | Информация об использовании файла подкачки. |
(10) | Общая информация об использовании памяти, включая файл подкачки. |
Вывод vmstat
:
user1@vm1:~$ vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
#(1,2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12,13,14,15,16)
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 229 27 196 0 0 0 0 11 6 0 0 100 0
user1@vm1:~$ vmstat -S M -a
# (17) (18)
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free inact active si so bi bo in cs us sy id wa
0 0 0 11 434 19 0 0 24 2 11 6 0 0 100 0
user1@vm1:~$ vmstat -d
#19 (20) (21) (22) (23) (24) (25) (26) (27) (28) (29)
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
sda 11706 353 402980 17612 9303 40546 336358 46980 0 19
sr0 0 0 0 0 0 0 0 0 0 0
loop0 0 0 0 0 0 0 0 0 0 0
user1@vm1:~$ vmstat -m | head
#(30) (31) (32) (33) (34)
Cache Num Total Size Pages
ext3_inode_cache 13700 13700 808 10
ext3_xattr 0 0 88 46
journal_handle 170 170 24 170
journal_head 37 72 112 36
revoke_table 256 256 16 256
revoke_record 128 128 32 128
kmalloc_dma-512 8 8 512 8
ip6_dst_cache 16 24 320 12
UDPLITEv6 0 0 1024 8
Режим | Ситуация | Поле | Описание |
---|---|---|---|
Виртуальная память | Процессы | (1) | r: количество процессов, ожидающих выполнения. |
(2) | b: количество спящих процессов. | ||
Память | (3) | swpd: используемая виртуальная память. | |
(4) | free: свободная память. | ||
(5) | buff: память, выделенная для буферов. | ||
(6) | cache: память, используемая для кэша. | ||
(17) | inact: неактивная память. | ||
(18) | active: активная память. | ||
so: объём памяти, сохранённой на диск (в секунду). | |||
bi: количество блоков, полученных от устройства (блоков в секунду). | |||
bo: количество блоков данных, отправленных на устройство (блоков в секунду). | |||
in: количество прерываний в секунду, включая тактовые. | |||
cs: количество переключений контекста в секунду. | |||
us: время выполнения кода, не относящегося к ядру (пользовательское время, включая приоритетное). | |||
sy: время выполнения ядра (системное время). | |||
id: время простоя. В Linux 2.5.41 и ранее включает время ожидания ввода-вывода. | |||
wa: время ожидания ввода-вывода. В Linux 2.5.41 и ранее включено во время простоя. |
Диск, -d: устройство
чтение
общее количество успешных операций чтения (total).
количество операций чтения, сгруппированных для одной операции ввода-вывода (merge).
сектора, успешно прочитанные (sectors).
время, затраченное на чтение (ms).
запись
общее количество успешных записей (total).
количество записей, сгруппированных в одну операцию ввода-вывода (merge).
записанные сектора (sectors).
время записи (ms).
текущая операция ввода-вывода (cur).
время в секундах, затраченное на ввод-вывод (s).
Slab, -m: Slab
кэш: имя кэша (cache).
число активных объектов (num).
общее число доступных объектов (total).
размер каждого объекта (size).
страницы с хотя бы одним активным объектом (page).
# (1) (2) (3) (4)
top - 03:22:44 up 4 days, 22:54, 1 user, load average: 0.00, 0.00, 0.00
# (5) (6) (7) (8) (9)
Tasks: 63 total, 1 running, 62 sleeping, 0 stopped, 0 zombie
# (10) (11) (12) (13) (14) (15) (16) (17)
Cpu(s): 0.0%us, 1.1%sy, 0.0%ni, 98.9%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
# (18) (19) (20) (21)
Mem: 508820k total, 273792k used, 235028k free, 27844k buffers
# (22) (23) (24) (25)
Swap: 473080k total, 0k used, 473080k free, 201252k cached
#(26) (27) (28)(29) (30) (31) (32,33) (34)(35) (36) (37)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 8356 804 676 S 0.0 0.2 0:05.99 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
6 root 20 0 0 0 0 S 0.0 0.0 0:03.25 events/0
7 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuset
<...>
Часть | Поле | Описание |
---|---|---|
Нормальное время работы | (1) | Текущее время. |
(2) | Время работы после запуска. | |
(3) | Сколько пользователей в данный момент вошли в систему. | |
(4) | Загрузка процессора за последние 1, 5 и 15 минут. Это не нормализованное значение, поэтому загрузка одного процессора на 1 означает полную загрузку, но на четырёхпроцессорной системе это означает 75% свободного времени. | |
Задачи | (5) | Общее количество запущенных процессов. |
(6) | Количество процессов, запущенных в данный момент. | |
(7) | Количество спящих процессов в данный момент. | |
(8) | Количество остановленных процессов (например, с помощью CTRL + Z ). |
|
(9) | Количество уже остановленных («зомби») процессов, которые были завершены, но ещё не собраны их родительскими процессами. | |
Процессор (S) | (10) | Время, потраченное процессором на выполнение неприоритетных пользовательских процессов. |
(11) | Время выполнения процессором системных процессов и их потоков. | |
(12) | Время, потраченное процессором на выполнение приоритетных пользовательских процессов. | |
(13) | Время простоя процессора. | |
(14) | Время ожидания процессором завершения ввода-вывода. | |
(15) | Время обслуживания процессором аппаратных прерываний. | |
(16) | Время обслуживания процессором программных прерываний. | |
(17) | Общий объём процессорного времени, «украденного» у этого виртуального компьютера другими задачами (например, запуск другого виртуального компьютера). | |
Память/обмен | (18) | Общий объём физической памяти. |
(19) | Объём используемой физической памяти. | |
(20) | Полностью свободная физическая память. | |
(21) | Общий объём оперативной памяти и метаданных файловой системы, выделенных для кэширования дисковых блоков. | |
(22,23,24) | Общий, используемый и свободный объём виртуальной памяти подкачки. | |
(25) | Общий объём страниц оперативной памяти, используемых для чтения файлов. | |
Процесс | (26) | Уникальный идентификатор процесса (PID), который периодически обновляется, хотя процесс никогда не перезапускается. |
(27) | Эффективное имя пользователя владельца процесса. | |
(28) | Приоритет процесса. | |
(29) | Значение приоритета процесса. Отрицательное значение приоритета указывает на более высокий приоритет, а положительное — на более низкий. Нулевое значение в этом поле просто означает, что приоритет процесса не будет изменён при планировании задач. | |
(30) | Общий объём виртуальной памяти процесса, включая весь код, данные и совместно используемые библиотеки, а также заменённые страницы и незагруженные, но отображённые страницы. | |
(31) | Непереключённый объём физической памяти, используемый процессом. | |
(32) | Общий объём совместно используемой памяти процесса. Он отражает только память, которая может быть разделена с другими процессами. | |
(33) | Состояние процесса может быть одним из следующих: D =непрерывный сон, R =работает, S =спит, T =отслеживается или остановлен, Z =зомби. |
|
(34) | Доля процессорного времени процесса с момента последнего обновления экрана, выраженная в процентах от общего процессорного времени. | |
(35) | Доля доступной физической памяти, используемой процессом. | |
(36) | Процессорное время в сотых долях секунды, такое же, как TIME , но с более высокой детализацией. |
|
(37) | Команда — командная строка или название программы. ``` | |
user1@vm1:~$ uptime | ||
05:36:45 up 6 days, 1:08, 1 user, load average: 0.00, 0.00, 0.00 | ||
user1@vm1:~$ free |
total used free shared buffers cached
Mem: 508820 239992 268828 0 820 213720 -/+ buffers/cache: 25452 483368 Swap: 473080 0 473080
В этом фрагменте кода пользователь выполняет команды `uptime`, `free` и `vmstat` для мониторинга состояния системы. Команда `uptime` показывает время работы системы, количество пользователей и среднюю загрузку процессора. Команда `free` отображает информацию об использовании памяти в системе. Команда `vmstat` предоставляет подробную статистику о состоянии виртуальной памяти, процессах, блочных устройствах и других аспектах системы.
user1@vm1:~$ vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 0 268828 820 213720 0 0 21 10 14 11 0 0 100 0
Здесь представлена информация о процессах, использовании памяти, подкачке, активности ввода-вывода и загрузке процессора.
Далее пользователь запускает команду `sleep`, затем `dd` для создания файла, после чего снова запускает `vmstat`. Это позволяет отслеживать изменения в системе во время выполнения этих команд.
[1] 6078 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 1 1 0 268556 828 213736 0 0 21 10 14 11 0 0 100 0 0 0 0 268556 828 213772 0 0 16 0 19 10 0 0 100 0 0 0 0 268556 828 213772 0 0 0 0 13 8 0 0 100 0 0 0 0 268556 828 213772 0 0 0 0 15 11 0 0 100 0 0 0 0 268556 828 213772 0 0 0 0 14 10 0 0 100 0 0 0 0 268556 828 213772 0 0 0 0 18 13 0 0 100 0 1 0 0 267316 836 213844 0 0 74 0 267 26 0 99 1 0 1 0 0 267316 836 213844 0 0 0 0 303 7 0 100 0 0 1 0 0 267316 836 213844 0 0 0 0 271 11 0 100 0 0 1 0 0 267316 836 213844 0 0 0 0 257 12 0 100 0 0 30+0 records in 30+0 records out 31457280 bytes (31 MB) copied, 4.95038 s, 6.4 MB/s 0 0 0 267928 860 213860 0 0 27 0 265 29 1 97 2 0 0 0 0 267936 860 213848 0 0 0 0 15 9 0 0 100 0 0 0 0 267936 860 213848 0 0 0 0 14 7 0 0 100 0 0 0 0 267936 860 213848 0 0 0 0 14 7 0 0 100 0 0 0 0 267936 860 213848 0 0 0 0 13 11 0 0 100 0 Terminated
Эти строки показывают изменение статистики системы во времени.
Затем пользователь снова выполняет команду `uptime`.
user1@vm1:~$ uptime 05:22:15 up 6 days, 54 min, 1 user, load average: 0.07, 0.02, 0.00 [1]+ Done ( sleep 5 && dd if=/dev/urandom of=/dev/null bs=1M count=30 && sleep 5 && killall vmstat )
Эта строка показывает текущее время и нагрузку на систему.
После этого пользователь выполняет ещё одну команду с использованием `dd`, чтобы создать файл, и снова запускает `vmstat`, но уже с другими параметрами.
( sleep 5 && dd if=/dev/zero of=test.img bs=32 count=$((321024200)) && sleep 5 && killall vmstat )& vmstat -nd 1 | egrep -v 'loop|sr0' [1] 6086 disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec sda 146985 2230744 21821320 105848 32190 1343154 10927338 1330144 0 105 sda 146995 2230744 21821648 105848 32190 1343154 10927338 1330144 0 105 sda 146995 2230744 21821648 105848 32190 1343154 10927338 1330144 0 105 sda 146995 2230744 21821648 105848 32190 1343154 10927338 1330144 0 105 sda 146995 2230744 21821648 105848 32190 1343154 10927338 1330144 0 105 sda 146995 2230744 21821648 105848 32190 1343154 10927338 1330144 0 105 sda 146999 2230744 21821680 105856 32190 1343154 10927338 1330144 0 105 sda 146999 2230744 21821680 105856 32190 1343154 10927338 1330144 0 105 sda 147000 2230744 21821688 105856 32208 1344160 10935530 1330288 0 105 sda 147000 2230744 21821688 105856 32274 1349214 10976490 1330748 0 105
Этот фрагмент показывает активность диска и использование ресурсов системы при выполнении операций ввода-вывода. ```
11114762 1337348 0 105
sda 147001 2230744 21821696 105856 32525 1370529 11149018 1337732 0 105
sda 147001 2230744 21821696 105856 32573 1374577 11181786 1338064 0 105
sda 147001 2230744 21821696 105856 32698 1386562 11278666 1346244 0 105
6553600+0 records in
6553600+0 records out
209715200 bytes (210 MB) copied, 11.7088 s, 17.9 MB/s
sda 147001 2230744 21821696 105856 32698 1386562 11278666 1346244 0 105
sda 147001 2230744 21821696 105856 32698 1386562 11278666 1346244 0 105
sda 147001 2230744 21821696 105856 32698 1386562 11278666 1346244 0 105
sda 147001 2230744 21821696 105856 32698 1386562 11278666 1346244 0 105
sda 147001 2230744 21821696 105856 32762 1393910 11337962 1349192 0 105
user1@vm1:~$ echo 3 | sudo tee /proc/sys/vm/drop_caches
3
[1]+ Done ( sleep 5 && dd if=/dev/zero of=test.img bs=32 count=$((32*1024*200)) && sleep 5 && killall vmstat )
user1@vm1:~$ free -mt ; find / >/dev/null 2>&1 ; free -mt
total used free shared buffers cached
Mem: 496 30 466 0 0 5
-/+ buffers/cache: 24 472
Swap: 461 0 461
Total: 958 30 928
total used free shared buffers cached
Mem: 496 64 432 0 22 6
-/+ buffers/cache: 35 461
Swap: 461 0 461
Total: 958 64 894
user1@vm1:~$ echo 3 | sudo tee /proc/sys/vm/drop_caches
3
user1@vm1:~$ cat test.img /dev/null ; free -mt
total used free shared buffers cached
Mem: 496 230 265 0 0 205
-/+ buffers/cache: 24 471
Swap: 461 0 461
Total: 958 230 727
user1@vm1:~$
Объяснение
(sleep 5 && dd if=/dev/urandom of=/dev/null bs=1M count=30 && sleep 5 && killall vmstat)&
, затем непрерывно запускается vmstat
, который будет выводить информацию до прерывания. Можно увидеть, что через 5 секунд после запуска команды загрузка процессора заметно увеличивается на некоторое время, а затем снижается. Через следующие 5 секунд vmstat
уничтожается.Дополнительные вопросы
system
возрастает до 100%, а не user
?dd if=/dev/zero of=test.img bs=32 count=$( (32*1024*200) )
?top
и нажмите h
. Теперь попробуйте отсортировать его вывод по процессору, памяти и PID.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )