posix_fadvise (WILLNEED) делает IO медленнее? - PullRequest
6 голосов
/ 08 февраля 2011

На компьютере CentOS 5.5 с ядром Linux версии 2.6.18-194.26.1.el5 я заметил, что posix_fadvise (WILLNEED) делает чтение 60К файлов намного медленнее, чем обычный ввод-вывод, почти на 200%.

Кажется, что фактический вызов fadvise является синхронным, и это также задерживает планирование других потоков в приложении, которые используют данные, считываемые из файлов.

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

Мой вопрос: есть ли какие-либо настраиваемые параметры ядра, которые можно было бы использовать для обеспечения асинхронного поведения для posix_fadvise (WILLNEED)?Как увеличение потоков ввода-вывода в ядре, кеш страниц?

1 Ответ

7 голосов
/ 09 февраля 2011

Это только недавно спросили на LKML . Вот только как это разработано. Если вам нужна неблокирующая fadvise, сделайте это в другом потоке.

...