Пользователь
91,1
рейтинг
19 февраля 2011 в 02:03

Администрирование → TOP'ай сюда

Обзор практически всех *top утилит под linux (atop, iotop, htop, foobartop и т.д.).

top

Все мы знаем top — самую простую и самую распространённую утилиту из этого списка. Показывает примерно то же, что утилита vmstat, плюс рейтинг процессов по потреблению памяти или процессора. Совсем ничего не знает про загрузку сети или дисков. Позволяет минимальный набор операций с процессом: renice, kill (в смысле отправки сигнала, убийство — частный случай). По имени top суффикс "-top" получили и все остальные подобные утилиты в этом обзоре.

atop


Atop имеет два режима работы — сбор статистики и наблюдение за системой в реальном времени. В режиме сбора статистики atop запускается как демон и раз в N времени (обычно 10 мин) скидывает состояние в двоичный журнал. Потом по этому журналу atop'ом же (ключ -r и имя лог-файла) можно бегать вперёд-назад кнопками T и t, наблюдая показания atop'а с усреднением за 10 минут в любой интересный момент времени.

В отличие от top отлично знает про существование блочных устройств и сетевых интерфейса, способен показывать их загрузку в процентах (на 10G, правда, процентов не получается, но хотя бы показывается количество мегабит).

Незаменимое средство для поиска источников лагов на сервере, так как сохраняет не только статистику загрузки системы, но и показатели каждого процесса — то есть «долистав» до нужного момента времени можно увидеть, кто этот счастливый момент с LA > 30 создал. И что именно было причиной — IO программ, своп (нехватка памяти), процесор или что-то ещё. Помимо большего количества информации ещё способен двумя цветами подсказывать, какие параметры выходят за разумные пределы.

htop


В отличие от atop, htop не собирает статистику и просто показывает текущее состояние. Второе яркое отличие — нортоноподобная панелька с подсказками кнопок снизу и возможность «навигации» по списку процессов.

Поддерживает выделение процессов и выполнения над ними групповых операций (впрочем, с форк бомбой им не справиться).

Общей статистике по системе показыват мало (зато с шкалой а-ля прогресс-бар), зато имеет обширнейшие инструменты для анализа процессов, включая баловство с скедулингом (приоритеты, affinity), просмотр списка открытых файлов, strace и массу мелких, но приятных фич, таких как контекстный поиск по имени процесса, режим «слежения» за процессом, быстрые операции с процессом и т.д.

iotop


Специализированная утилита для анализа потребления дисковой полосы. К сожалению, не показывает иопсы (это вообще возможно?) Благодаря показу kernel threads способен указать на kcopy/swapper/kflush как источник хруста винта (чего не может atop). Заодно показывает общую загруженность IO системы в Мб/с (чего так же не может atop). Довольно быстрый.

iftop


Опять же, специализированная утилита, позволяющая наблюдать за трафиком в реальном времени. Требует очень рутовых прав и pcap, т.к. работает почти аналогичо tcpdump'у. Показывает загруженность интерфейса (поддерживается только один интерфейс в одной копии), направления трафика и интенсивность трафика.

На средне-загруженном сервере, который внезапно начал жрать инет позволяет очень быстро найти направление, в которое идёт больше всего трафика (в любую сторону). К сожалению, не показывает распределение трафика по процессам.

powertop


Специализированная (ага, снова) утилита от intel для мониторинга потребления мощности (электрической мощности!) разными процессами. В реальности никаких ваттов не показывает, а показывает время, затраченное на обслуживание процессором. Уникальна тем, что показывает прерывания и прочие события ядра на одном уровне с процессами (что позволяет находить нетривиальные ситуации перегрузки сервера и даже определять, от какой железки это исходит). При равной нагрузке позволяет оценить, чей драйвер шустрее работает.

Кроме того, во вкладке device stats позволяет оценить степень загруженности устройства (точнее, драйвера устройства). Для сетевых карт (включая виртуальные, типа tun) показывает pps (packets per seconds).

Во вкладке idle status показывает распределение состояний процессора (C1, C2, C3), что весьма полезно при выяснении «батарейка дохлая или что-то не так с системой?» на ноутбуках.

itop


Ну очень специализированная утилита для мониторинга прерываний (настоящих прерываний, идентификацией их по номеру).

kerneltop

Наверное, должен показывать что-то интересное про ядро. У меня дома ему не понравился System.map, а на сервере — отсутствие /proc/profile.

dnstop


Специализированный анализатор DNS-трафика на интерфейсе. Наверное, был бы очень полезен при починке DNS на контроллере домена, к сожалению, Active Directory на линуксе работает не очень хорошо.

Безусловно полезно для нахождения засранца, загоняющего бинд в неприличный LA.

jnettop

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

Ещё умеет агрегацию адресов (так, чтобы показывать их трафик одной строкой).

sntop

Замечательная штука для скринсейвера или публичного монитора — по конфигу рассылает пинги и показывает, если какой-то хост лёг. В принципе, в рабочих условиях при настроенном конфиге позволяет быстро оценить состояние не очень большого парка серверов (запустили — и сразу красным видно, кто лежит).

latencytop

Я бы с интересом на него посмотрел, но оно требует особого конфига ядра…

xrestop


Монитор потребления ресурсов X-сервера разными приложениями, которые к нему подключились. (Обнаружил, что хром жрёт ресурсов х-сервера много больше, чем опера).

slabtop


Специализируется на структурах данных SLAB ядра, фактически, показывает использование памяти в более тонких категориях, чем «свободно/занято/кеш». View only, несколько режимов сортировки.

Software specific



apachetop

Не столь полезен, как хотелось бы, показывает статистику ответов на запросы. Никакой магии, просто читает логи апача.

sqtop

Топ по логам сквида. С учётом скорости их роста, сначала генерирует промежуточную статистику, а потом уже даёт по ней шариться.

pg_top

Пакет в debian почему-то называется ptop. Мониторит загрузку postgresql.

mytop



Мониторит mysql. Есть альтернативный mtop, делает примерно то же, но заброшен и (в дебиане) выпилен в районе lenny -> squeeze.

xentop


Мониториг доменов xen'а. Интересен тем, что показывает не только память-процессор, но и дисковые операции с сетью. К сожалению, никакого управления, view only. Единственный из всех top'ов, не влазящий в 80 столбцов при выводе.

Список топов, которые я глазами не посмотрел:

hatop — мониторинг haproxy
virt-top — мониторинг за работой libvirt
mctop — мониторинг состояния memcached
perf-top — нашёл документацию, самого perf-top в виде тарбола или пакета не нашёл.

offTOP



Сначала ложные топы кратко:
gkrelmtop — плагин под gkrelm (монитор производительности в гуе) — оффтопик.
ntop — нарушает text-based традицию интерактивных программ и ставится как сайт для апача.
libgtop — библиотека для мониторигна производительности
nload — консольный монитор сетевой активности, в отличие от обычных top'ов не выводит рейтинг, а рисует текстовый график.

А потом настоящие топы без уважительного суффикса 'top' в названии.

nethogs


Отображает сетевой трафик от конкретных приложений.

iptstate


Монитор contrack из iptables, показывает активные трансляции с возможностью их прибить. Фактически, близок к цисковому sh ip nat tra, но удобнее (спасибо за наводку тов. @merlin_rterm).
Георгий Шуклин @amarao
карма
268,0
рейтинг 91,1
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (119)

  • +34
    Теперь я точно поймаю эту жрущую траффик сволочь.
    • +6
      iftop для этого просто прекрасен.
    • +3
      Не хватает в конце «Бву-ха-ха-ха-ха!» :)
    • +3
      iptraf вам в помощь
    • 0
      trafshow
      А по делу, не понял смысла про *top
      Достаточно хорошых утитлит которые без top в конце. Одну я уже привел
  • +4
    в мемориз.
  • +8
    Ничего себе сколько top'ов, теперь бы их все в единый интерфес)
    Очень радует что консольные

    Спасибо большое, в закладки!
    • 0
      Можно обмазаться бышем, подкрутить path и готово ))
  • +1
    Круто, не знал, что их столько. До этого хватало ps aux и htop.
    • 0
      Кстати, что за foobartop фигурирует во вступлении, а в обзоре его нет?
      • +2
        foobar это мета-синтаксическая переменная. Видать вы не застали времена когда в примерах конфигов и манах использовалась она.
        • +1
          Не застал, видимо. Я знаю, что foo = bar часто применяется в примерах программ, но про конфиги как-то не подумал. Опять же, смутило наличие плеера foobar (который, правда есть только под Win32), вот и захотел узнать, что за зверь такой.
          • +1
            www.foobnix.com/

            Вот его аналог под Linux
            • 0
              Это не аналог, а жалкая поделка. Я ничуть не хочу никого оскорбить, на такие вещи аналогами называть нельзя. deadbeef на порядок лучше подойдет в качестве аналога.
            • 0
              есть же mplayer
      • +2
        foobar == *
  • +47
    top замечательная команда.
    Запускаю ее когда ухожу от компа или страдаю фигней перед ним, утилита создает красивую табличку с меняющимися цифрами, так сказать, имитация бурной активности и деятельности. На далеких от IT людей, таких как шеф и подруга, действует отменно.

    А статья замечательная, пойду сравнивать остальные утилиты.
    • +8
      «Это пять!»
    • +1
      В этом применении весьма не плох tcpdump.
      • +2
        Я обычно логи сквида+апача делаю.

        Примерно так:

        tail -f /var/log/squid/*.log -f /var/log/apache2/*access
    • +6
      Есть более эффективное решение для таких случаев :)
      Поставь чего-нить компилироваться, например, тот же мускул или апач, зрелище для не IT-шников просто магическое, они будут в шоке :)))))
      • +10
        да и IT-шников завораживает :)
      • +4
        emerge -e world же.
        • 0
          Тогда уже eix-sync && emerge -vDNu world
      • +1
        Это то что я называю crappy GNU style logs :)

        И это одна из причин почему я не люблю Autotools/gMake (Tup build tool FTW).
  • +3
    Для мониторинга сетевого траффика (в разрезе по процессам) использую nethogs nethogs.sourceforge.net/
    • 0
      Внёс в оффтопики.
    • 0
      Подскажите что это могло бы значить?
      0 root ..4.10:80-172.20.0.134:3958 0.554 0.615 KB/sec
      0 root ..0:80-188.143.232.41:46122 2.596 0.478 KB/sec
      0 root ..0:80-67.195.111.177:54993 0.743 0.166 KB/sec
      0 root ...10:80-65.52.110.83:16237 2.589 0.162 KB/sec
      0 root ...10:80-66.249.71.71:44527 0.670 0.140 KB/sec
      • 0
        Это выдает nethogs
        Попробывал nmap натривить на сервер, список вот таких строк увеличился
        Вероятней всего это сканеры?
  • +1
    mctop
    • 0
      Да, спасибо, дописал.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Спасибо, дописал в оффтопики.
  • +1
    powertop таки показывает ватты, если сможет выдернуть из acpi.
    очень помогает для ноутбуков/нетбуков.
  • –1
    Мне порвало шаблон от словосочетания «двоичный журнал». Просто ад.
    • +2
      А бинари лог вернуло всё на место? Мне кажется, как раз в этом случае калькирование совершенно неуместно, ибо «двоичный» и без того вполне конкретный термин, а log такое же размытое понятие, как и «журнал».
      • +6
        На мой субъективный взгляд, «бинарный лог» — уместнее. Хотя бы не режет глаз.
        • +2
          двоичный код вам тоже режет глаз?
        • +2
          Двусмысленное бревно?
          • +3
            Палка о двух концах
  • +3
    Вот это я называю обзор, все по делу без лишних слов, отлично.
    Некоторых утилит мне реально не хватало, добавлено в избранное.
  • 0
    спасибо. многих знал, но все-таки удобно их всех видеть в одном месте с объясняниями.
  • 0
    Хорошая подборка, годная. Спасибо.
  • 0
    Еще есть perf top — тоже замечательный инструмент для поиска затыков на машинах, показывает в каких функциях спит ядро.
    Ну и ntop всё таки тоже мощнейший инструмент для анализа трафика, представляет из себя демона, который получает к себе весь трафик на машине через отдельную очередь в ядре. Интерфейс у него в виде удобной странички, на которой можно получить много много информации по трафику на хосте.
    • 0
      Если ntop выступает в роли NetFlow коллектора, общее количество трафика в сети увеличивается в два раза засчёт дублированного трафика на коллектор, правильно понимаю? Или на коллектор отправляются только статистические данные по трафику?
      И ещё вопрос, если кто сталкивался, ntop может показывать статистику по QoS?
      • 0
        нет. Посылается около 1 пакета UDP на flow. Flow — это набор пакетов от источника к приемнику. В частности, на TCP соединение посылается 1 или 1+n*длительность keepalive flow роутера (роутер для длинных соединений может посылать пакеты обновления flow).
    • 0
      Дописал, хотя не нашёл ничего, кроме мана в документации к ядру.
    • 0
      Это который ntop? Очередь на BPF или через Netfilter?
  • 0
    Почему же никто не вспомнил про netstat?
    • +2
      Он не «top», т.к. выводит информацию один раз. С тем же успехом сюда и ps можно тогда дописывать.
      • +1
        вообще-то у него есть опция
           -c, --continuous
               This will cause netstat to print the selected information every second continuously.

        хотя это и не совсем то

        но из всего можно сделать «top», если добавить watch ;-)
        watch -n 1 netstat -ntp
  • 0
    Отлично — я и не знал что их так много — всегда ставлю htop вместо top — уже привык страшно ) А тут их намного больше! Спасибо. Пошел баловаться.
  • 0
    И trafshow
  • +1
    iptraf, хоть и не *top, но в списке был бы очень актуален
    • +1
      а ещё iptstate у меня на одной из машин стоит — это фактически тоже *top, показывает состояние conntrack
      • +1
        и, как выяснилось, может «прибить» выбранное established соединение из нетфильтра
      • 0
        Спасибо, дописал. Безусловно, полезная вещь.
  • НЛО прилетело и опубликовало эту надпись здесь
    • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    Половиной из этого списка никогда не пользовался. Теперь можно будет сделать жизнь значительно удобнее. Особенно спасибо за iftop
  • 0
    virt-top, то же самое что и xentop, но не привязанное к системе виртуализации. Орудует через libvirt
    people.redhat.com/~rjones/virt-top/
    • 0
      малоинформативная штука, но все равно полезная, спасибо!
  • 0
    дисковые операции с сетью? :)
    • 0
      ага. «с» в данном случае аналог «и». Пример: «если мы хлеб с маслом».
  • 0
    Хорошая, годная статья. Спасибо вам.
  • 0
    В закладки!
  • +3
    Хабр вкусный торт!

    Как много в линуксе есть еще полезного )
  • +1
    Огромное спасибо! Вы мне открыли глаза на столько нужных и полезных тулз!!!
    Уже во всю пробую! Жаль в репах debain нету sqtop, зато на их сайте уже есть deb-пакет :-)
    Я уже к*** от счастья!
  • +2
    добавьте nethogs — оно как раз и показывает распределение трафика по процессам, а не только графу «итого».
  • 0
    prstat и glance иногда испопользую — то это полный offtop в этом блоге. Полнее только taskmgr.exe.
  • +4
    slabtop — top по объектам ядерного слаб-аллокатора памяти.
    • 0
      Пропустил, спасибо.
    • 0
      … оно охрененно. Ещё раз спасибо. Я как раз чесал в затылке о мониторе памяти в линуксе…
  • 0
    Благодаря показу kernel threads способен указать на kcopy/swapper/kflush как источник хруста винта (чего не может atop).

    по идее, atop так тоже может, с флагом -d:

    -g show general process-info (default)
    -m show memory-related process-info
    -d show disk-related process-info
    -n show network-related process-info
    -s show scheduling-related process-info

  • +1
    ntop не хватает.
    • +1
      Чорт, не заметил в оффтопе.
  • 0
    Как хорошо что в BSD это почти все inclusive :).
    Без холивара.
  • 0
    я всегда держу htop в screen-е на первом окне.
  • +4
    Слушайте, это самая лучшая и самая полезная статья (для меня) за весь 2011 год. Уже устанавливаю эти чудесные программки.
  • 0
    Автору на заметку, для MySQL существует 2 утилиты mytop и mtop. По назначению очень похожи но 2 лично мне приглянулась больше.
    • 0
      поправил
      • 0
        Рад, что помог.
      • 0
        Ещё есть innotop
    • 0
      вот только mtop, судя по всему, давно уже не развивается
      • 0
        Не могу сказать, не исследовал эту сторону вопроса. Но в дебиановском репозитории есть обе.
  • +1
    Сколько же всяких top'ов… никогда не подумал бы что их может быть такое количество.

  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Спасибо, в ближайшее время проверю, допишу.
  • +2
    У htop также есть возможность наблюдать дисковый I/O:
    (F2 — зайти в конфигурацию, Стрелки — выбрать нужные столбцы, F5 — добавить, F7/F8 — двигать вверх/вниз F10 — сохранить конфигурацию, и вернуться в главное окно )
    image
    image
  • 0
    Есть ещё tload — просто рисует график загрузки в консоли.
  • 0
    спасибо полезная статья
  • 0
    1. У htop в настройках (F2) полезно включить вообще все виды раскраски, которые там есть — появляется дополнительная полезная инфа.
    2. Нет ли подобной подборки по смежной теме всяких статусо-статистико-мониторилок типа iostat, vmstat, sar и прочих?
  • 0
    А то, что почти ни один сетевой топ в виртуалке не работает, это так и задумано?
    # iftop
    interface: eth0
    pcap_open_live(eth0): eth0: You don't have permission to capture on that device (socket: Address family not supported by protocol)
    • 0
      Проверь, что модули подмонтированы (mount|grep modules). Если нет, строчка в /etc/fstab:
      /dev/xvdp /lib/modules iso9660 ro 0 0

      и mount -a
      • 0
        я ж обновлял.
        # mount|grep modules
        /dev/xvdp on /lib/modules type iso9660 (ro)

        а что модули, там похоже прав на eth0 не хватает.
        ЗЫ а у тебя работает?
        • 0
          Простая проверка, что модули грузятся modprobe ixgbe; rmmod ixgbe, в dmesg должно написать приветствие от intel'овских (бесполезных в данном случае) дров.
          • 0
            # modprobe ixgbe; rmmod ixgbe
            FATAL: Module index corrupt: Bad magic number
            Try re-running depmod
            ERROR: Module ixgbe does not exist in /proc/modules

            хочешь, я ее перегружу?
            • 0
              ребут не помог.

              # uname -a
              Linux vm2255 2.6.34-12-xen #1 SMP 2010-06-29 02:39:08 +0200 i686 Intel® Xeon® CPU L5520 @ 2.27GHz GenuineIntel GNU/Linux

              # ls /lib/modules/
              2.6.18-194.el5xen 2.6.34-12-xen
            • 0
              У меня есть нехорошая мысль, что это последствия генту… Вторая версия — неправильная битность модулей. Какой uuid у машины? (xenstore-read vm, или в панельке).
              • 0
                # xenstore-read vm
                /vm/e8c09b73-fc29-be2e-6ae3-11c84567bc25
                • 0
                  Да, 32-битная версия. Значит, какое-то разногласие между debian\ubuntu и gentoo о том, что должно быть в /lib/modules.

                  … Кстати, вопрос, а там ядра случайно своего не стоит? (/boot)?
                  • 0
                    что-то не очень верится опока.

                    нет, я своего ядра не собирал и не ставил, там пусто.
                    • 0
                      ок, версия module-init-tools?

                      modprobe --version
                      module-init-tools version 3.12
                      • 0
                        # modprobe --version
                        module-init-tools version 3.5
                        • 0
                          Это первое различие.

                          Второе: попробуй insmod на какой-нибудь модуль (тот же ixgbe.ko) — если он прокатит, дело в modprob'е, если нет — всё сложнее.
                          • 0
                            # insmod /lib/modules/2.6.34-12-xen/kernel/drivers/net/ixgbe/ixgbe.ko
                            insmod: error inserting '/lib/modules/2.6.34-12-xen/kernel/drivers/net/ixgbe/ixgbe.ko': -1 Unknown symbol in module
                            • 0
                              (на всякий случай) — а userspace у тебя какой? 32 или 64?

                              file /sbin/insmod

                              Ну и последнее — какой gcc?
                              • 0
                                32 конечно.

                                # file /sbin/insmod
                                /sbin/insmod: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

                                # gcc --version
                                gcc (Gentoo 4.4.4-r2 p1.3, pie-0.4.5) 4.4.4

                                вообще все работает, только нет полного доступа к сетевым устройствам. ядра везде одинаковые, юзерленд собран на этой машине, с этим же ядром…
                                хотя часть был из stage3, я могу попробовать пересобрать все с нуля, если интересно.
                                • 0
                                  Если ошмётки старого дебиана сохранились, попробуй загрузить модуль дебиановским insmod'ом…

                                  Если честно, я тут пока что пасс. Вернусь к этой проблеме, когда займусь бутстрапингом.

                                  Это не только «доступ к сетевым устройствам», это ещё и модули астериска, drbd, iscsi-target, nfs-kernel-server, iptables и т.д.
                                  • 0
                                    не горит, пни меня потом, как руки дойдут.
      • 0
        # tcpdump -i eth0
        tcpdump: eth0: You don't have permission to capture on that device (socket: Address family not supported by protocol)
        • 0
          (debian 64)
          # tcpdump -i eth0

          ^C
          193 packets captured
          193 packets received by filter
          • 0
            ок, проблема только у меня? только и минимального профиля? только в генте? :)
            • 0
              Надо разобраться. У меня на бутстрапинг были большие планы.
  • 0
    у AIX тоже неплохой «top» (topas)

    www.ibm.com/developerworks/aix/library/au-aixoptimization-memtun2/fig01.jpg
  • 0
    kSar жеже, для визуализации логов sar собранных по крону. sourceforge.net/projects/ksar/
  • 0
    Для работы kerneltop надо включить профайлинг ядра (добавить, как минимум, profile=1 в командную строку) и перезагрузиться. После перезагрузки действительно появится /proc/profile.

    Снимок с примером работы kerneltop:

    image

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.