Я только что купил 6-ядерный Phenom с 16G оперативной памяти. Я использую его в основном для компиляции и кодирования видео (и иногда web/db). Я обнаружил, что все действия привязаны к диску, и я просто не могу держать все 6 ядер загруженными. Я покупаю SSD рейд, чтобы сидеть между HDD и tmpfs.
Я хочу настроить "многоуровневую" файловую систему, в которой чтения кэшируются на tmpfs, но записи безопасно проходят через SSD. Я хочу, чтобы файлы (или блоки), которые не были прочитаны в последнее время на SSD, затем записывались обратно на жесткий диск с использованием сжатой FS или блочного слоя.
Так что в основном читает:- Проверьте tmpfs - Проверьте SSD - Проверьте HD
И пишет:- Прямо на SSD (для безопасности), затем tmpfs (для скорости)
И периодически, или когда места становится мало:- Перемещайте наименее часто используемые файлы вниз на один слой.
Я видел несколько интересных проектов. CacheFS, cachefsd, bcache кажутся довольно близкими, но у меня возникают проблемы с определением, какие из них практичны. bcache кажется немного рискованным (раннее принятие), cachefs кажется связанным с конкретными сетевыми файловыми системами.
Существуют "union" проекты unionfs и aufs, которые позволяют вам монтировать файловые системы друг на друга (обычно USB-устройство на DVD), но оба распространяются в виде патча, и у меня складывается впечатление, что этот вид "прозрачного" монтирования собирался стать ядром особенность, а не FS.
Я знаю, что ядро имеет встроенный дисковый кеш, но, похоже, не очень хорошо работает с компиляцией. Я вижу увеличение скорости в 20 раз, когда я перемещаю свои исходные файлы в tmpfs. Я думаю, это потому, что стандартные буферы предназначены для конкретного процесса, а компиляция создает и уничтожает тысячи процессов во время сборки (просто догадываясь). Похоже, я действительно хочу, чтобы эти файлы были в кеше.
Я прочитал, что tmpfs может использовать виртуальную память. В таком случае практично ли создавать гигантские tmpfs со свопом на SSD?
Мне не нужно загружаться с получившейся многоуровневой файловой системы. Я могу загрузить grub, kernel и initrd из других мест, если это необходимо.
Так что это фон. Вопрос состоит из нескольких компонентов:
- Рекомендуемая ФС и / или блочный уровень для SSD и сжатых HDD.
- Рекомендуемые параметры mkfs (размер блока, опции и т.д.)
- Рекомендуемая технология кэширования / монтирования для прозрачного связывания слоев
- Обязательные параметры монтирования
- Обязательные параметры ядра / патчи и т.д.