запись через RAM-диск или массовое кеширование файловой системы?
10832
Will
У меня есть программа, которая очень сильно поражает файловую систему, читая и записывая случайным образом набор рабочих файлов. Размеры файлов составляют несколько гигабайт, но я могу сэкономить оперативную память, чтобы хранить их в основном в памяти. Машины, на которых работает эта программа, обычно являются блоками Ubuntu Linux.
Есть ли способ настроить файловую систему, чтобы иметь очень очень большой кеш, и даже кешировать записи, чтобы они попадали на диск позже? Я понимаю проблемы с потерей питания или около того, и готов принять это. Падение в сторону, при нормальной работе записи должны в конечном итоге достичь диска!
Или есть способ создать RAM-диск с возможностью записи на реальный диск?
Вы видите большое количество ожиданий ввода-вывода, указывающих на то, что запросы на чтение и запись не выполняются через существующие буферы? Как уже отмечали другие, Linux очень хорош в предоставлении резервной оперативной памяти для буферов, поэтому вы должны сначала проверить это.
Если вы не видите ожидания ввода-вывода, возможно, что ваши проблемы с производительностью (у вас даже есть проблемы? Ваш вопрос не задан) связаны с переключением контекста ядра из-за множества небольших операций ввода-вывода, инициируемых программой. В этом случае вы можете значительно повысить производительность, переписав свое приложение для использования отображенных в памяти файлов. Но это больше вопрос для StackOverflow.
хм ... последний ответ перед моим был 3 месяца назад, ОП не видели с момента публикации вопроса, никаких других очевидных действий, но он появился на первой странице ... Я думаю, система пытается получить ответы на вопросы
Anon 14 лет назад
0
Это как раз то, для чего нужен аккаунт Сообщества - натыкаясь на оставшиеся без ответа вопросы. http://stackoverflow.com/users/-1/community
Corey 14 лет назад
0
: shrug: ОП уже давно нет, а больше никому нет дела
Anon 14 лет назад
0
Мне все равно, и я вернулся; у меня уйдет время, чтобы переварить ваш вопрос и ответить на него честно, наберитесь терпения
Will 14 лет назад
0
5
RolKau
Подумайте об использовании файловой системы ext4 с использованием параметров быстрого и свободного подключения:
noatime,data=writeback,nobh,barrier=0,commit=300
отложить запись данных из кеша обратно на физический диск.
Кроме этого, вы можете использовать aufsдля монтирования объединенной файловой системы tmpfs поверх вашей обычной файловой системы, выполнить всю запись и затем объединить tmpfs обратно с реальной файловой системой.
Значение параметров: http://www.mjmwired.net/kernel/Documentation/filesystems/ext3.txt
netvope 13 лет назад
3
1
Hamish Downer
Linux по умолчанию использует любую свободную оперативную память в качестве файлового кэша, поэтому для этого не требуется никаких настроек.
Вы можете рассмотреть возможность использования ext4 в качестве файловой системы. Он использует целый ряд методов для ускорения доступа к диску, включая отложенное распределение, которое:
Это имеет эффект группирования распределений в более крупные серии. Такая задержанная обработка уменьшает использование ЦП и имеет тенденцию уменьшать фрагментацию диска, особенно для файлов, которые растут медленно. Это также может помочь сохранить непрерывность выделения, когда несколько файлов растут одновременно.
Потеря данных довольно редко из-за использования журналирования .
Ext4 теперь является файловой системой по умолчанию в последних выпусках Linux, хотя вы, вероятно, захотите убедиться, что ядро, которое вы используете, по крайней мере, 2.6.30
1
gthomas
Используйте mmap для этих файлов - он использует превосходное кэширование ядра, что делает его намного быстрее.
1
Bytemain
Вы можете увидеть мой ответ здесь: зарезервируйте RAM для кеша и буфера . Если вы хотите зарезервировать память для кеша и буфера: echo 10> / proc / sys / vm / vfs_cache_pressure, когда 100 является значением по умолчанию. Затем вы можете ограничить максимальную оперативную память, используемую каждым приложением: echo 8192> / proc / sys / vm / max_map_count.
0
nik
Linux использует вашу оперативную память очень эффективно . Я не думаю, что вам действительно нужно работать над кэшированием больших файлов. Чтобы проверить это сами, попробуйте эти вещи .
Дисковый кеш Linux очень ненавязчив. Он использует запасную память для значительного увеличения скорости доступа к диску и не отнимает память у приложений.
Проверьте, сколько оперативной памяти имеет ваша система и можете ли вы увеличить ее. Для этого нет необходимости в RAM-диске, дисковый кеш будет хорошо работать со всем доступным объемом оперативной памяти.
Я не думаю, что речь идет о Linux, эффективно использующей оперативную память, а скорее о кэшировании диска, как о Linux, эквивалентном FlashFire: http://flashfire.org/xe/
14 лет назад
0
0
Martin
RapidCache предоставляет RAM-диск с сквозной записью, но в настоящее время находится в стадии бета-тестирования.