На компьютере CentOS 5.5 с ядром Linux версии 2.6.18-194.26.1.el5 я заметил, что posix_fadvise (WILLNEED) делает чтение 60К файлов намного медленнее, чем обычный ввод-вывод, почти на 200%.
Кажется, что фактический вызов fadvise является синхронным, и это также задерживает планирование других потоков в приложении, которые используют данные, считываемые из файлов.
Возможно ли, что ядро занято извлечением данных с дисковиз-за fadvise вызова, и заканчивает тем, что задержал другую запланированную задачу?Кажется, это противоречит ожидаемому асинхронному поведению предварительной выборки, которое мы ожидаем от выполнения вызова fadvise.
Мой вопрос: есть ли какие-либо настраиваемые параметры ядра, которые можно было бы использовать для обеспечения асинхронного поведения для posix_fadvise (WILLNEED)?Как увеличение потоков ввода-вывода в ядре, кеш страниц?