Записать поток запросов в Linux из пространства пользователя на устройство? - PullRequest
1 голос
/ 09 августа 2010

Я не понимаю, что происходит, когда я выполняю запись из пространства пользователя в Linux. Каков полный поток, вплоть до запоминающего устройства? Предположим, я использую CFQ и ядро, которое все еще использует pdflush.

Говорят, что CFQ помещает запросы в очереди синхронизации и синхронизации. Например, запись выполняется с синхронизацией, поэтому она поступает в очередь с синхронизацией в соответствии с приоритетом ввода / вывода. Очередь получит ЦП в соответствии с временными интервалами CFQ, настройками срока действия и т. Д. Отлично.

В то же время пишет грязные страницы. Запись грязных страниц запускается настройками виртуальной машины и выполняется в контексте потока pdflush, который запускает копию background_writeout (), которая вызывает writeback_nodes (). Когда это происходит, записи pdflush обязательно синхронизируются.

Означает ли это, что у нас есть две конкурирующие записи, которые потенциально могут выполняться для одних и тех же или аналогичных запросов на запись - одна управляется механизмами очередей CFQ, а другая запускается подсистемой VM?

Означает ли это, что подсистема VM эффективно нарушает правила CFQ, как только мы нажмем dirty_background_ratio, так как pdflush не имеет такой же приоритет io, как и процесс запроса?

И как только мы нажмем dirty_ratio, настройки CFQ становятся более или менее устаревшими, поскольку все записи становятся синхронизированными?

Я прочитал много конкретной информации о двух подсистемах, но мне еще предстоит понять весь поток запросов на запись. Интерактивная карта ядра Linux не включает планировщик ввода-вывода.

Любые указатели на всю картину будут оценены.

Спасибо, Alex

1 Ответ

1 голос
/ 20 августа 2010

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

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