Общее количество байтов, прочитанных / записанных процессом Linux и его дочерними элементами - PullRequest
3 голосов
/ 13 января 2012

Я хотел бы напечатать общее количество байтов, прочитанных / записанных процессом Linux.Например, я запускаю

gcc -c a.c

и хотел бы узнать, сколько всего байтов GCC, включая его дочерние элементы, запросил из ядра Linux и сколько байт они отправили ядру.

Неполными решениями этой проблемы являются:

  • Поля rchar и wchar в /proc/PID/io показывают количество прочитанных / записанных байтов до сих пор.Он не учитывает дочерние процессы.Он теряется, как только процесс завершается.

  • Инструмент, такой как strace, можно использовать для распечатки системных вызовов процесса и его дочерних элементов (таких как: read, write syscalls), но он не может агрегировать количество прочитанных / записанных байтов.

Как напечатать общее количество байтов, прочитанных / записанных процессом Linux, и егодочерние процессы?

Ответы [ 2 ]

10 голосов
/ 13 января 2012

Маленький awk, и strace - это то, что вы хотите.

strace -e trace=read,write -o ls.log ls

выдает журнал системных вызовов для чтения и записи. Теперь вы можете взять этот журнал и суммировать последний столбец следующим образом:

cat ls.log | grep read | awk 'BEGIN {FS="="}{ sum += $2} END {print sum}'

Возможно, вы не захотите менять grep, чтобы он соответствовал только чтению в начале строки.

1 голос
/ 13 января 2012

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

EDIT:

Вы также можете проверить sysstat , который выглядит очень мощным для наблюдения за linux box. Согласно документации:

Может отслеживать огромное количество различных метрик:

  1. Статистика входов / выходов и скорости передачи (глобальная, на устройство, на раздел, на сетевую файловую систему и на задачу / PID Linux).
  2. Статистика ЦП (глобальная, для ЦП и для задачи / PID Linux), включая поддержку архитектур виртуализации.
  3. Статистика использования памяти, огромных страниц и пространства подкачки.
  4. Виртуальная память, статистика пейджинга и ошибок.
  5. Память для каждой задачи (для PID) и статистика ошибок страниц.
  6. Глобальная статистика ошибок ЦП и страниц для задач и всех их дочерних элементов.
  7. Операция создания процесса.
  8. Статистика прерываний (глобальная, на процессор и на прерывание, включая потенциальные источники прерываний APIC, аппаратные и программные прерывания).
  9. Обширная статистика сети: активность сетевого интерфейса (количество пакетов и килобайт, полученных и переданных в секунду и т. Д.), Включая сбои от сетевых устройств; статистика сетевого трафика по IP, TCP, Протоколы ICMP и UDP на основе стандартов SNMPv2; Поддержка для Протоколы, связанные с IPv6.
  10. NFS-сервер и активность клиента.
  11. Статистика сокетов.
  12. Запуск статистики очереди и загрузки системы.
  13. Статистика использования внутренних таблиц ядра.
  14. Активность переключения системы и задач Linux.
  15. Обмен статистики.
  16. Активность устройства TTY.
  17. Статистика управления питанием (мгновенная и средняя тактовая частота процессора, скорость вращения вентиляторов, температура устройства, входы напряжения, USB устройства, подключенные к системе).

И здесь вы найдете несколько примеров использования sar (основная команда пакета sysstat).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...