Чи є спосіб дізнатися, яка програма використовує більшу частину пропускної здатності в Linux? [зачинено]


56

Я шукаю утиліту, яка могла б показати мені, яку пропускну здатність використовує кожен процес. Він повинен просто надрукувати дані та вийти, оскільки я хочу передати цей список у коні.

Відповіді:


71

Ви можете спробувати NetHogs .

NetHogs - це невеликий інструмент 'net top'. Замість того, щоб скорочувати трафік за протоколом або по підмережі, як це робить більшість інструментів, він групує пропускну здатність за процесом . NetHogs не покладається на спеціальний модуль ядра для завантаження. Якщо раптово багато мережевого трафіку, ви можете запустити NetHogs і відразу побачити, який PID викликає це. Це дозволяє легко визначити програми, які зачарували і раптом зайняли вашу пропускну здатність.

NetHogs_Screenshot


Майже саме те, що мені потрібно, але воно просто не працює :(
vava

Ну, що не працює? Будь-які помилки? Це не починається взагалі? Вихід консолі?
Мільде

це не працює з ipv6
zb '29

Ви повинні запустити його як root. Рекомендується промікозний режим. sudo nethogs -p eth2. Ви повинні вказати свою мережу, якщо вона за замовчуванням не є eth0.
Ананду М Дас

@vava Існує проблема з проблемою в репо, вона виправлена ​​в 0.8.1, але ви повинні побудувати з джерела (що надзвичайно просто). Дивіться цей пост: askubuntu.com/questions/726601/…
Метью

6

Існує чимало перерахованих тут .

Мої фаворити, однак, залишаються iftop та tcpdump . Wireshark - це також дуже хороший варіант.


У мене є етичні проблеми з Wireshark, якщо не один в мережі ... Якщо у вас немає способу змусити його досліджувати лише localhost, в такому випадку мене цікавить.
Gnoupi

5
Якщо не ввімкнути розбещений режим, він повинен фіксувати лише трафік, спрямований на ваш хост.
Амок

Так, ні одна з цих утиліт не може сказати мені, який процес використовує найбільшу пропускну здатність, і це те, про що я пішов.
vava

5

Спробуйте atop ... щоб максимально використати це, можливо, вам доведеться включити кілька додаткових патчів ядра (патчі обліку вводу / виводу).

Якщо atopце не варіант, тоді використовуйте netstat -anp --inet(як root), щоб перелічити, які порти TCP / UDP використовуються якими процесами (або можливо, lsofдля цього). Звідти просто повторіть кожен процес, який має відкритий сокет, і приєднайтеся до нього за допомогою ltrace -Sчи straceперегляньте прочитане, записування, відправлення та отримання або використовуйте tcpdumpфільтр із зазначенням ваших локальних IP-адрес та портів TCP / UDP. які були перелічені.

atopце, звичайно, найзручніше з них ... якщо у вас є і встановлена ​​необхідна підтримка ядра. У минулому у мене були замовники та роботодавці, які встановлювали спеціальні системи (відмінні від їхніх виробничих зображень) з єдиною метою підтримки використання профілів вводу / виводу atop. Однак ці інші методи приведуть вас туди.

Я впевнений, що ми також могли б щось зробити за допомогою SystemTap ... але я не знаю жодних простих заздалегідь приготовлених рецептів для цього. SystemTap - це дуже великий інструмент аналізу програм.


якщо ви просто хочете знати , який процес викривлення мережі, а не реальне пропускна здатність використовується, ви можете просто використовувати netstat -anp --inet, щоб переглянути Recv-Qі Send-Qстовпці
golimar
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.