Як я можу дізнатися, чи процес пов'язаний з процесором, пам'яттю чи диском?


42

Як я можу дізнатися, чи пов'язаний процес до процесора, пам'яті чи диска?


Якщо ви використовуєте графічний інтерфейс gnome, ви можете додати на панель аплет System Monitor. У налаштуваннях ви можете встановити втрачені цикли, щоб IO-Wait відображався як білий, а також встановити графіки пам'яті, процесора та читання / запису диска. Зазвичай я змінюю кольори графіків за замовчуванням, щоб полегшити розрізнення пам'яті користувача / ОС та читання / запис диска. Це не справжнє рішення, але зручно мати поряд із усіма інструментами, згаданими у відповідях.
Джеремі

1
@ luis-alvarado Я не погоджуюся з тим, що це питання не корисне, хоча я можу стверджувати, що це може бути краще для StackOverflow тощо. Я прийшов сюди шукати рішення.
skeggse

Проблема із запитаним запитанням полягає в тому, що воно не враховує середовище виконання. Який метод є найбільш ефективним при виявленні вузького місця вузького компонента завдання / процесу, тісно пов'язаний із часом виконання, середовищем виконання, операційною ОС, апаратним забезпеченням та іншим завданням та які інструменти доступні для кожного компонента для його огляду. Деякі періоди виконання (наприклад, Ерланг або JVM IBM) мають поглиблені інструменти для цього, ніж охоплюють усе середовище, інші повністю бракують інструментів і залишають вас робити освічені здогадки на основі будь-якого htop / iotop / тощо. може показати вам.
zxq9

Відповіді:


19

Для цього потрібне певне вуду. Це залежить. Приклад:

  • Якщо пам'яті достатньо, а диски не здаються надто зайнятими, можливо , це пов'язано з процесором. Подивіться на використання процесора, і якщо його межа на 100%, це пов'язано з процесором. Якщо це не так, у реалізації є штучне вузьке місце. Наприклад, у двоядерному процесорі процес однопотокової передачі не перевищує 50% використання процесора.

  • Якщо процесор і пам'ять доступні, але диски дуже зайняті, або затримка введення-виводу здається високою, швидше за все, його введення-виведення пов'язане. Перевірте, чи допомагає додавання більше дисків (RAID?)

  • Жодні з вищезазначених? Перевірте наявність пам'яті.

  • Досить пам'яті? У самому процесі може виникнути штучне вузьке місце, тобто, можливо, хтось забув зняти сон (1)? Ні, звичайно, це не так просто. ;)

Є причина, чому у більшості компаній, що займаються продуктами, що відрізняються ефективністю, у нас є ціла лабораторія для інженерів продуктивності!

Використовуйте такі інструменти, як sar, vmstat, iostat, oprofile, lockstat, dtrace, специфічні для продукту інструменти моніторингу перф і т.д., для налагодження проблем з перф.


2
Чи є інструмент, який пов’язує все це разом?
ssanj

зазвичай ні, але якщо dtrace доступний у вашій системі (Solaris / FreeBSD / Mac OS X?), ви можете далеко зайти, просто скориставшись цим.
Sudhanshu

Я просто згадав, що на Linux є Systemtap (подібний до dtrace), за винятком того, що я не впевнений у зрілості інструменту.
Sudhanshu

vmstat корисний.
Джеймс


9

Інструмент, який може бути корисним для перевірки в режимі реального часу декількох статистичних даних процесів (пам'ять, використання процесора, введення / виведення тощо), є htop . Він не замінює більш спеціалізовані інструменти, названі Судханшу, але може стати гарним початком.


4

Як і інші згадані інструменти, запустіть ps l PID, вставивши відповідний ідентифікатор процесу або подивіться на ДЕРЖАВНІ та WCHAN стовпці вгорі або вгорі.

Якщо він знаходиться в D (для диска) стані, він робить файл IO. Це може бути тому, що це читання численних файлів, або тому, що він використовує багато пам’яті та обмінюється. Стовпець WCHAN повідомить вам, яка функція ядра знаходиться всередині; гуглити до них або запитати тут, можливо, дадуть вам певну інформацію про те, що вони означають.

Якщо він знаходиться в стані R (run), він використовує процесор у просторі користувача, іншими словами, він пов'язаний з процесором на той момент.

Якщо він знаходиться в стані S (сон), він знаходиться всередині переривного системного дзвінка, що може означати, що він насправді спить, або робить щось на кшталт очікування мережевого трафіку або блокування. Знову ж таки, дивлячись на конкретного wchan, ви розповімо більше.

Дивіться також Що таке "канал очікування" процесу?


2

Запустіть topі подивіться на рядок використання процесора. Високий користувач% вказує, що він пов'язаний з процесором. Високий% очікування вказує на те, що він пов'язаний IO.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.