2015-12-13 2 views
1

Я создаю приложение поверх гипервизора KVM, где я получаю (тысячу раз) небольшую базу данных (3 мб), вызывая непосредственно функции ядра VFS Linux.Есть ли механизм кеширования при непосредственном использовании функций Linux VFS?

После создания стабильного прототипа моего приложения я хочу оптимизировать его доступ к базе данных (добавив кэш, например). Я знаю, что, выполняя файловые операции из пользовательского пространства, Linux использует кеш-страница для ускорения приложения, верно ли это также при использовании функций VFS из пространства ядра?

ответ

2

Да, как вы ожидаете, VFS - это уровень абстракции, идея состоит в том, что все файловые системы выглядят одинаково независимо от их деталей реализации.

Таким образом, VFS может выполнять некоторую кешировку на уровне VFS, а затем буферный кеш для всех блочных устройств дальше вниз по лепестку слоя.

+0

Я чувствую, что чтение файла базы данных много раз делает мое приложение медленным, чтение всего этого на одном и выполнение моих вычислений занимает намного меньше времени. Есть ли необходимость проверять, что мое приложение кэширует (или нет) кеш каждый раз, когда он читает файл? –

+1

Хм, интересно, есть способы отбросить хотя бы некоторые кеши, написав материал в/proc, но пытаться делать тесты с доступом после недействительности или не звучать немного неудобно, ваша проблема не та, что я непосредственно как таковой имел перед лицом. Вы посмотрели на «perf», это отличный инструмент и позволяет вам переходить в ядро ​​и что он делает, но он работает с помощью выборки, поэтому он имеет ограничения. Хорошо для того, чтобы помочь найти, где время тратится, хотя ... Может или не поможет вам в этом, независимо от того, является ли это проблемой кеша FS. Местный кеш приложения всегда будет быстрее всего. – Michael

+0

Я посмотрю инструмент «perf», спасибо за ваш ответ :) –

Смежные вопросы