Как заставить ядро ​​Linux отслеживать статистику ввода-вывода для блочного устройства, которое я создаю в загружаемом модуле?

Если вы не настроили (сложный )мониторинг, вы не сможете узнать, какой процесс использует ЦП после завершения процесса.

нет такой "стандартной" вещи, как таблица с

exec path;exec name;stime,etime,%sys,%io,%wait,%idle,...

вы должны поймать процесс во время выполнения.

0
29.09.2020, 14:35
2 ответа

Итак, я нашел это... кажется, что ядро ​​предоставляет вам вспомогательные функции....

вам нужна очередь запросов _, биография и гендиск, вызывайте их до и после обработки io...

unsigned long start_time;
start_time = jiffies;
generic_start_io_acct(q, bio_op(bio), bio_sectors(bio), &gd->part0);

generic_end_io_acct(q, bio_op(bio), &gd->part0, start_time);

и вуаля, статистика и ваше блочное устройство начинают отображаться в iostat.

0
18.03.2021, 23:01

Файл статистики называется disk stats вместо blkdev stats или аналогичного. Это подсказка. Статистические данные выводятся diskstats_show()в block/genhd.c, и он использует структуры struct gendiskв качестве источника информации.

Вы создали блочное устройство, но для обычных дисков это только первый шаг. После этого обычно следует alloc_disk()для выделения struct gendiskдля всех младших номеров, представленных драйвером устройства, и add_disk()после указания основных свойств каждого диска, с которым работает драйвер устройства.

Но вы сказали, что вам не нужны очереди, поэтому вы, вероятно, пропустили эту часть, чтобы просто получить базовое блочное устройство. Что ж, вы получили именно то, что просили -на самом деле, базовое блочное устройство так что худощавое и среднее, даже не требуется время для подсчета статистики, если только вы не сделаете ваш модуль сделать это.

Похоже, что ваш драйвер получит свои диски в /proc/diskstats, только если он участвует в структуре gendisk/genhd. Если вы не хотите использовать это, похоже, вам придется собирать собственную статистику.

Для получения дополнительной информации это может быть полезно:https://olegkutkov.me/2020/02/10/linux-block-device-driver/

1
18.03.2021, 23:01

Теги

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