Есть ли способ узнать, какое приложение использует большую часть полосы пропускания в Linux?
Я ищу утилиту, которая могла бы показать мне, сколько пропускной способности использует каждый процесс. Он должен просто распечатать данные и выйти, так как я хочу передать этот список в conky.
3 ответа
Вы можете попробовать NetHogs.
NetHogs - это небольшой инструмент для работы с сеткой. Вместо того, чтобы разбивать трафик на протокол или подсеть, как это делают большинство инструментов, он группирует пропускную способность по процессам.NETHogs не требует загрузки специального модуля ядра. Если внезапно появляется большой сетевой трафик, вы можете запустить NetHogs и сразу увидеть, какой PID вызывает это. Это позволяет легко идентифицировать программы, которые вышли из строя и внезапно занимают вашу пропускную способность.
Пытаться atop
... чтобы получить максимальную отдачу от этого, вам, возможно, придется включить некоторые дополнительные исправления ядра (исправления учета ввода / вывода).
Если atop
не вариант, тогда используйте netstat -anp --inet
(как root), чтобы предоставить список того, какие порты TCP/UDP используются какими процессами (или, возможно, используют lsof
для этого). Оттуда просто переберите каждый процесс, у которого есть открытый сокет, и либо присоедините его, используя ltrace -S
или же strace
смотреть на чтение, запись, отправку и получение, или использовать tcpdump
с фильтром, указывающим ваш локальный IP-адрес (а) и перечисленные порты TCP/UDP.
atop
безусловно, самый удобный из них... если он у вас есть и установлена необходимая поддержка ядра. В прошлом у меня были клиенты и работодатели, которые настраивали специальные системы (отличные от их производственных образов) с единственной целью поддержки профилирования ввода-вывода с использованием atop
, Однако эти другие методы доставят вас туда.
Я уверен, что мы могли бы также сделать что-то, используя SystemTap... но я не знаю каких-либо простых заранее приготовленных рецептов для этого. SystemTap - это инструмент анализа программ.