Всем пользователям OpenSolaris, кто работал с данными на флешках, известна проблема низкой производительности драйвера файловой системы PCFS (FAT). До недавнего времени запись данных на флеш и чтение с них выполнялись в разы медленнее, чем под другими ОС. Теперь у нас есть новогодний подарок от участника KirovOSUG, Руслана Увашева, — оптимизированный драйвер PCFS.
Имеется ограничение — оптимизация не работает и в будущем не планируется реализовывать для устройств с ФС FAT_X, имеющих размер кластера < 4КБ, т.е. меньших размера страницы памяти. Данное ограничение подаляющего большинства флешек не касается.
Оптимизация основана на механизме упреждающего чтения данных с диска в память. Причиной отказа от оптимизации с размером кластера меньших размера страницы является сильное усложнение алгоритма упреждающего чтения.
На данный момент доступна 32-битная версия нового драйвера PCFS.
Предлагаем всем скачать (не забудьте убрать разрешение файла .txt) и протестировать. В случае выявления ошибок- писать об этом на форуме.
Файл драйвера следует располагать в /usr/kernel/fs/.
Получение информации о драйвере: modinfo | grep pcfs
Выгрузка драйвера: modunload –i <Id>
Загрузка драйвера: modload /usr/kernel/fs/pcfs
Сначала следует выгрузить старый драйвер, а потом — загрузить новый.
Результаты тестирования:
старый драйвер чтение — 3 МБ/с запись — 2.2 МБ/с
новый драйвер чтение — 9 МБ/с запись — 10 МБ/с
Кроме того, в драйвере пофикшен баг с определением фат в логических
разделах.
Скачать драйвер PCFS (не забудьте убрать разрешение файла .txt)
Попробуйте, отпишитесь, затем я дополню результаты тестирования
А исходник посмотреть можно? Очень интересно.
http://src.opensolaris.org/source/search?q=pcfs&defs=&refs=&path=&hist=&project=%2Fonnv
файлы pc_*.*
Найдена ошибка при записи с размерами кластеров в 16 и 32 Кб для FAT и FAT32, в оптимизированной версии, в исходной же найдены отклонения в чтении по сравнению с виндовой версией при просмотре таблицы фат.
Идет исправление…