Журнал LinuxFormat - перейти на главную

LXF110:DrBrown3

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Кто сожрал процессор?

Top и VMstat Наблюдаем за драгоценными системными ресурсами.

Другая вещь, о которой я хотел поговорить сегодня – это утилиты мониторинга системных ресурсов. Мы рассмотрим инструменты командной строки (и графические), которые дают статистику использования таких системных ресурсов, как память, процессор и дисковое пространство. Они незаменимы, когда вы пытаетесь найти вредоносный процесс, который съел все ресурсы процессора, или определить, почему вдруг иссякло место на диске, или просто решить, повысится ли производительность, если прикупить еще памяти.

Начнем с моего любимого – top. Он мне нравится потому, что выводит всю важную информацию о ресурсах на одном экране, автоматически обновляет статистику и имеется во всех дистрибутивах Linux. В верхней части вывода команды (экранный снимок на врезке далее) отображается общее использование ресурсов.

Этот снимок был сделан, когда компьютер был сильно загружен, процессор не простаивал, а свободной памяти было очень мало. Внизу показаны процессы, сортируемые по любой из выбранных вами колонок. Стандартное упорядочение – по использованию процессорного времени (% CPU), но его можно изменить. Нужно набраться терпения, чтобы привыкнуть к командам, которые использует top – это набор однобуквенных сокращений. Начните с нажатия h для вывода краткого списка команд или ознакомьтесь с разделом man – он весьма основательный, хотя и немногословный. Можно, например, изменить частоту обновления экрана, назначить отображаемые столбцы, выбрать колонку и порядок сортировки, отображать процессы только для заданного пользователя и многое другое. Наряду с настройкой top с помощью этих однобуквенных команд многие опции можно задать в параметрах командной строки, и настройки можно сохранить в файле конфигурации до следующего вызова top. И пока администраторы Windows не пожаловались, что нельзя сортировать данные по определенному столбцу, просто кликнув на нем, напомните им, что top – полностью консольное приложение, и ему не нужен графический рабочий стол; зато он идеально подходит для серверов.

VMstat

Еще одна утилита командной строки для вывода информации об использовании ресурсов – это VMstat (сокращение от virtual memory statistics – статистика виртуальной памяти). Она стара как мир – я помню ее еще в ранних версиях SunOS, хотя тогда я гораздо хуже разбирался в ее выводе! В первой строке отображаются средние значения, и на них можно не обращать внимания. Оставшиеся строки генерируются через равные промежутки времени – например, пять секунд. Интерпретировать вывод команды – примерно то же, что решить, какие новости хорошие, какие – плохие, а какие – ну, просто новости. Например, интенсивность операций подкачки в столбцах ‘si’ и ‘so’ может означать нехватку памяти, тогда как активность операций ввода/вывода в столбцах ‘bi’ и ‘bo’ просто показывает, что происходит обращение к файловой системе.

Еще одна важный ресурс – дисковое пространство. Утилита df незаменима, когда нужно определить количество свободного места на диске, и если оно уменьшается, утилита du подскажет, куда оно ушло! df отображает количество используемого и свободного места на диске для каждой смонтированной файловой системы. Опция -h, которой я всегда пользуюсь, изменяет единицы измерения, делая их более удобными для простых смертных, например, свободно ‘'37G’ вместо ‘38,212,204 блоков’. Вот пример вывода команды:

 $ df -h
 Filesystem Size       Used      Avail      Use%       Mounted on
 /dev/sda1 37G         25G       9.7G       73%        /
 varrun     1006M      264K      1005M      1%         /var/run
 varlock 1006M         0         1006M      0%         /var/lock
 udev       1006M      44K       1006M      1%         /dev
 devshm 1006M          12K       1006M      1%           /dev/shm

Последние четыре строки относятся к виртуальным файловым системам и нам не интересны. Первая строка сообщает, что корневая файловая система практически заполнена – наверное, больше, чем следовало бы, и это обстоятельство заслуживает дальнейшего исследования.

Для ответа на вопрос «Куда девалось свободное место на диске?» можно воспользоваться несколькими подходами. Первый, и, наверное, более импульсивный – предположить, что дисковое пространство используется несколькими огромными файлами. Найти их можно командой find, например:

# find / -size +1000M 2> /dev/null
/home/camilla/gossip

Эта команда ищет все файлы с размером более 1000 МБ. В данном случае, нашелся файл /home/camilla/gossip, который и правда огромен:

# ls -lh /home/camilla/gossip
-rw-r--r-- 1 root root 9.6G 2008-07-06 07:31 /home/camilla/gossip

Признаюсь, что этот файл, вроде ружья на стене в первом действии театральной постановки, помещен сюда неспроста. Команда du более систематично выясняет, куда девалось дисковое пространство. Начать можно с этого примера. Он покажет пять самых больших директорий в корневом каталоге:

# du -s /* 2> /dev/null | sort -nr | head -5
18834900             /home
5623532              /usr
901412               /lib
660688               /media
502952               /var

Хм, каталог /home довольно велик – интересно, что там?

# du -s /home/* 2> /dev/null | sort -nr | head -5
10009800             /home/camilla
4141604              /home/fred
3865484              /home/chris
809720               /home/ellie
8268                 /home/tom

Однако и аппетиты у Камиллы! Копнем поглубже:

# du                 /home/camilla/*
4                    /home/camilla/appointments
0                    /home/camilla/Examples
10009784             /home/camilla/gossip
4                    /home/camilla/new-year-resolutions
4                    /home/camilla/to-do-list

Вот мы и вышли на огромный файл /home/camilla/gossip. Наверное, пора писать вежливое письмо Камилле.

Графические утилиты

Завершим наш обзор несколькими графическими утилитами. Первая – KDE System Guard. Для ее вызова (например) в OpenSUSE 11.0 используется пункт меню Applications > System > Monitor > System Monitor [Приложения > Система > Наблюдение > Системный монитор]. В этой программе есть таблица процессов, которую можно отсортировать по любому столбцу, например, по использованию процессора или памяти (вариант top с мышью) и индикатор загрузки с графиками различных характеристик загрузки системы, которые плавно движутся справа налево.

Наконец, в Gnome есть очень удобное приложение для анализа дискового пространства Baobab. Я просто обязан о нем рассказать: оно и правда очень милое. Данный конкретный образец был найден в дебрях Ubuntu 8.04.


На панели слева находится классическое дерево файловой системы с маленькими треугольничками, которыми можно разворачивать данные. Небольшие полоски показывают размер каждого подкаталога в процентах от размера каталога уровнем выше. Справа отображается диаграмма использования дискового пространства выбранного слева каталога (в данном случае, корневого). Серый кружок в середине – это полный каталог верхнего уровня, кольцо вокруг него показывает каталоги на уровень ниже (в данном случае, /home, /usr/, /lib и другие), и перемещаясь по внешним кольцам, вы постепенно видите каталоги все более и более нижнего уровня в дереве. На каждом уровне каждый «кусок пирога» соответствует одному каталогу, а величина куска отражает долю от каталога верхнего уровня, который он занимает. Это прекрасная маленькая диаграмма, отражающая сравнительные размеры каталогов, и она помогает нам сразу понять, что Камилла использует большой объем файлового пространства непосредственно в своем домашнем каталоге. LXF

Пример вывода команды top

LXF110 56 1.jpg

Пример вывода команды VMstat

LXF110 57 1.jpg

Полезные утилиты

Утилита Описание
top Выводит информацию об использовании процессора, оперативной и виртуальной памяти вместе со списком процессов, отсортированным по заданному критерию.
vmstat Выводит подробную статистику использования памяти и процессора в табличном виде через равные интервалы времени.
ps Показывает активность процессов. Имеет массу ключей, определяющих, какие процессы выводить и какую информацию показывать о каждом из них.
df Отображает свободное дисковое пространство (или индексные дескрипторы) для каждой примонтированной файловой системы.
lsof Отображает открытые дескрипторы файлов, например, все дескрипторы файлов для заданного процесса или все TCP-подключения для всех процессов и т.д.
/proc Это не команда, а каталог, где смонтирована файловая система proc, дающая информацию обо многих внутренних структурах данных ядра. Большая часть сведений, которые здесь можно найти, очень низкоуровневая; ее удобно обобщают другие утилиты из данной таблицы.
Персональные инструменты
купить
подписаться
Яндекс.Метрика