выяснить, какой процесс отправляет текущий запрос io в ядре Linux

Вы можете найти его на снимках . Чтобы добавить соответствующий репозиторий, используйте следующую запись sources.list (или как новый файл в /etc/apt/sources.list.d ):

deb http://snapshot.debian.org/archive/debian/20150723T034653Z/ unstable main

1
01.01.2016, 20:21
1 ответ

Запрос дискового ввода-вывода в общем случае не может быть отслежен до конкретного процесса. Например, если два процесса обращаются к одному и тому же файлу в одно и то же время (т.е. процесс 1 выдает запрос, а процесс 2 выдает запрос на загрузку того же файла до того, как запрос от процесса 1 будет обработан), доступ должен быть отслежен до обоих процессов. При отложенной записи запись может быть произведена процессом, который уже не существует.

То, что iotop показывает для каждого процесса, это ввод/вывод на уровне файла, а не на уровне диска. Если бы вы смотрели на драйвер файловой системы, current обозначал бы процесс, который сделал запрос. Но вы смотрите на драйвер блочного устройства; если только процесс не обращается к диску напрямую (минуя файловую систему), запросы ввода-вывода будут поступать из внутренней подсистемы. Это причина, по которой статистика iotop по каждому процессу не совпадает с общей: общая статистика - для уровня диска.

Отследить запрос дискового ввода-вывода до процесса, который его вызвал, вообще невозможно, как мы видели выше. Я не знаю, есть ли режим отладки, который позволяет отследить это в тех случаях, когда это возможно; я ожидаю, что это будет очень ресурсоемко.

2
27.01.2020, 23:36

Теги

Похожие вопросы