Linux и вообще многие Unix-подобные системы объединяют множество полезных инструментов командной строки для мониторинга ресурсов машины с целью повышения производительности с отслеживаемыми параметрами, такими как занятая память, загрузка ЦП или запросы диска.
Этот список команд, включающий флаги и пример выходных данных, должен выполняться, когда в системе есть какая-то нагрузка, чтобы выяснить, например, какие ресурсы ограничены (обычно ввод / вывод), а какие не являются узким местом. и не должен быть обновлен.
Существует также другое семейство инструментов, которые выполняют свои рабочие нагрузки через пустую систему, например Iozone и другие тесты; В этой статье мы заинтересованы в инструментах мониторинга, работающих в существующей производственной системе.
Вверх
top — это, пожалуй, самый известный инструмент мониторинга, который пользователи Linux, такие как я, обычно используют дома. По умолчанию он работает в режиме реального времени, показывая процессы, упорядоченные по их загрузке ЦП.
Вы можете использовать флаг -d $ i, чтобы изменить интервал обновления, но, что более важно, -b, чтобы получить максимальные измерения на стандартном выходе (остановите его с помощью CTRL-C).
[11:03:58][giorgio@Desmond:~]$ top -b > top.log ^C[11:04:10][giorgio@Desmond:~]$ head top.log top - 11:04:09 up 1:09, 3 users, load average: 0.00, 0.08, 0.12 Tasks: 166 total, 1 running, 164 sleeping, 0 stopped, 1 zombie Cpu(s): 6.8%us, 2.0%sy, 0.0%ni, 88.0%id, 3.1%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 3344984k total, 2202872k used, 1142112k free, 451016k buffers Swap: 3905532k total, 0k used, 3905532k free, 929932k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 920 root 20 0 77108 19m 9348 S 2 0.6 2:16.51 Xorg 2515 giorgio 20 0 156m 16m 12m S 2 0.5 0:06.72 gnome-terminal 2933 giorgio 20 0 802m 291m 33m S 2 8.9 3:54.36 firefox-bin
свободно
бесплатно отображает текущую статистику ОЗУ. Вы можете использовать ключ -m для отображения количества памяти в мегабайтах вместо 109553440-подобного количества байтов.
По умолчанию free запускается только один раз: флаг -s 5 (или любое другое значение) заставляет печатать информацию каждые 5 секунд.
Столбец used и free показывает количество используемой и свободной оперативной памяти в системе:
[11:05:29][giorgio@Desmond:~]$ free -m total used free shared buffers cached Mem: 3266 2283 983 0 440 908 -/+ buffers/cache: 934 2332 Swap: 3813 0 3813
Строка — / + buffers / cache — это та, которую вы должны прочитать. Поскольку пустой Ram теряется, система сохраняет блоки, которые должны быть записаны на диск, в буферах, а также блоки, которые в противном случае должны были бы считываться с диска в кэш-памяти. Если есть необходимость, этот Ram может быть бесплатным, поэтому моя установка Ubuntu с Firefox и некоторыми другими открытыми приложениями занимает 934 Мегабайта Ram, а не 2283 .
сар
По умолчанию (и я использую его для этого) sar сообщает информацию о процессоре с интервалом, который вы можете выбрать:
[11:11:53][giorgio@Desmond:~]$ sar 1 Linux 2.6.38-8-generic (Desmond) 06/20/2011 _i686_ (2 CPU) 11:11:54 AM CPU %user %nice %system %iowait %steal %idle 11:11:55 AM all 6.03 0.00 1.51 0.00 0.00 92.46 11:11:56 AM all 5.00 0.00 1.50 0.00 0.00 93.50 11:11:57 AM all 0.50 0.00 1.00 4.98 0.00 93.53 11:11:58 AM all 6.53 0.00 0.50 4.02 0.00 88.94
Сумма времени пользователя и системы для каждой строки представляет собой коэффициент использования (в процентах): чем выше это значение, тем хуже производительность. iowait — это удобный параметр, который сообщает нам процент времени, в течение которого процессор ожидает диск или другое устройство ввода / вывода: более высокий процент указывает на узкие места ввода / вывода.
IOSTAT
iostat похож на sar и входит в тот же набор инструментов. Но по умолчанию он сообщает также информацию ввода / вывода:
[11:13:25][giorgio@Desmond:~]$ iostat 4 Linux 2.6.38-8-generic (Desmond) 06/20/2011 _i686_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 6.40 0.02 1.90 2.80 0.00 88.88 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 26.40 85.54 112.00 402562 527112 sdb 6.45 155.31 21.64 730911 101824 avg-cpu: %user %nice %system %iowait %steal %idle 0.50 0.00 0.50 0.50 0.00 98.50 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 1.00 0.00 16.00 0 64 sdb 1.00 0.00 8.00 0 32
Измерения процессора такие же, как у sar; но вы также получаете транзакции в секунду (и для каждого устройства) и считанные и записанные килобайты (в секунду и в выбранном интервале).
dstat
dstat — это универсальный инструмент комплексного мониторинга. Добавляя флаги, вы указываете параметр, который хотите отслеживать параллельно:
- -c : процессор
- -d : диск
- -m : использование памяти
- -n : сеть; размер данных, отправленных и полученных.
- -g : виртуальная память: страницы в и из основной памяти.
- -y : статистика системы, например количество переключений контекста.
[10:50:41][giorgio@Desmond:~]$ dstat -cdngy ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 8 2 87 4 0 0| 334k 133k| 0 0 | 0 0 | 454 1447 17 8 75 0 0 0| 0 0 | 0 0 | 0 0 | 885 3445 10 9 81 0 0 0| 0 0 | 169B 132B| 0 0 | 670 3341 19 4 75 1 0 0| 0 56k|9683B 6501B| 0 0 | 705 2316
[10:54:47][giorgio@Desmond:~]$ dstat -mt ------memory-usage----- ----system---- used buff cach free| time 755M 438M 892M 1181M|20-06 10:54:49 755M 438M 892M 1181M|20-06 10:54:50 770M 438M 892M 1166M|20-06 10:54:51^C
Функция dstat удобна тем, что отображает различные метрики в произвольном формате вывода, который создается путем простого размещения их рядом это легко разобрать формат, и, ссылаясь на | и пробелы вы можете извлечь практически любое число очень быстро. Это также фиксированный вывод: всегда большое определенное количество символов.
Как вы можете видеть, где применяется размер в байтах, размеры отображаются как B | k | M.
И последнее: вывод этих программ почти всегда рассматривается для дальнейшей обработки, поэтому вы можете сохранить его в файлах журналов, передав его по конвейеру (как показано также сверху):
[11:19:27][giorgio@Desmond:~]$ free -m > free.log [11:19:33][giorgio@Desmond:~]$ cat free.log total used free shared buffers cached Mem: 3266 2141 1125 0 443 899 -/+ buffers/cache: 797 2468 Swap: 3813 0 3813
Выводы
Помимо показа любой информации о вуайеристской системе с машины, на которой я пишу, я представил несколько инструментов для того же. Важно знать о существовании различных программ, поскольку только некоторые из них могут быть доступны в системе, в которой вы выполняете измерения (например, размещенный сервер или стандартная виртуальная машина).
Помните также, что, следуя традиции Unix, у каждой из этих команд есть man- страница, доступная с помощью man command_name (и выход из q ). Хорошее профилирование!