То есть видно, что элементы добавляются за O(1), а поиск идет за O(log
N) времени. То есть Reiser4 вполне себе подходит для больших объемов
данных, особенно если учитывать возможность построения custom'ных
индексов по хранимым файлам (в том числе и по содержанию). Скорость
работы тоже вполне приемлима.
В NTFS под Windows все намного хуже — видна работа маляра Шлэмиля (или
менее оптимальные алгоритмы работы с диском):
C>Сегодня сделал тесты разных файловых систем. Исходник вот здесь: C>http://rsdn.ru/File/37054/benchmark.zip (для компиляции требуется версия C>Boost из CVSа).
C>В тесте создается каталог с N файлами, а затем M раз выполняется stat() C>и fopen/fclose, где N — первый параметр, M — второй параметр.
C>В NTFS под Windows все намного хуже — видна работа маляра Шлэмиля (или C>менее оптимальные алгоритмы работы с диском):
Отключена ли генерация коротких имен?
Эта фича может съедать много времени на больших каталогах (касается функции stat).
MShura wrote: > C>В NTFS под Windows все намного хуже — видна работа маляра Шлэмиля (или > C>менее оптимальные алгоритмы работы с диском): > Отключена ли генерация коротких имен?
Да, как и отслеживание времени последнего доступа. Также поставлен режим
"большого кэша".
Я долго и безуспешно пытался сделать Windows быстрее
C>Я долго и безуспешно пытался сделать Windows быстрее
Хорошо, тогда возможно это связано с тем, что Linux открывает все файлы которые видит (даже если они никогда не будут открыты) более того при закрытии файла описатель файла по прежнему живет.
В NTFS for Windows правда тоже есть так называемое туннелирование (ускорение открытия только что закрытого файла), но к сожалению в этом вопросе я не большой спец.
Возможно политика открытия файлов + туннелирование в Linux продуманы лучше, а может лучше подходит для данной тестовой ситуации.
К тому же, по-моему, Reiser4 значительно моложе NTFS и у них было больше шансов учесть преимущества/недостатки предыдущих FS.
В Reiser4 все есть дерево и листья на этом дереве. Файлы и директории реализованы, как плагины для доступа к этому дереву. Журналирование реализовано через однократную запись, т.е. запись в журнале после коммита транзакции становится частью файловой системы, а значит и нет выделенного места для хранения журнала (выделены только структуры, управляющие журналом). Также реализована перестановка очереди записи в кеше.
Здравствуйте, MShura, Вы писали:
MS>Хорошо, тогда возможно это связано с тем, что Linux открывает все файлы которые видит (даже если они никогда не будут открыты) более того при закрытии файла описатель файла по прежнему живет.
Их там в каталоге было до миллиона (а я делал тесты и до нескольких миллионов потом уже).
MS>Возможно политика открытия файлов + туннелирование в Linux продуманы лучше, а может лучше подходит для данной тестовой ситуации. MS>К тому же, по-моему, Reiser4 значительно моложе NTFS и у них было больше шансов учесть преимущества/недостатки предыдущих FS.
Конечно. Вот только MS не собирается даже поддерживать полноценное подключение других файловых систем. А так бы можно было подключить Reiser4 вместо старой NTFS и наслаждаться.
C>Конечно. Вот только MS не собирается даже поддерживать полноценное подключение других файловых систем. А так бы можно было подключить Reiser4 вместо старой NTFS и наслаждаться.
Странно, я почему-то думал что это возможно. Ведь была же тулза, позволяющие видеть FAT32-диски WindowsNT 4.0. Или что имеется в виду под полноценным подключением? Возможность грузить Windows с диска форматированного Reiser4?
Left2 wrote: > C>Конечно. Вот только MS не собирается даже поддерживать полноценное > подключение других файловых систем. А так бы можно было подключить > Reiser4 вместо старой NTFS и наслаждаться. > Странно, я почему-то думал что это возможно. Ведь была же тулза, > позволяющие видеть FAT32-диски WindowsNT 4.0.
Можно и ext2-диски подключать.
> Или что имеется в виду под полноценным подключением? Возможность > грузить Windows с диска форматированного Reiser4?
Да.
Здравствуйте, Cyberax, Вы писали:
C>Сегодня сделал тесты разных файловых систем. Исходник вот здесь: C>http://rsdn.ru/File/37054/benchmark.zip (для компиляции требуется версия C>Boost из CVSа).
C>В тесте создается каталог с N файлами, а затем M раз выполняется stat() C>и fopen/fclose, где N — первый параметр, M — второй параметр.
А я твой вариант без Boost-а сделал и еще несколько доработок:
— создаются файлы случайного размера;
— для проверки времени обращения к описанию файла используется access;
— для проверки времени обращения к файлу производится загрузка файла (по идее, эти операции должны выгружать больше информации из кэша файловой системы).
На моем нуотбуке под Linux-ом (2.6.13) и ReiserFS получаются следующие значения:
1000 файлов и 1000000 итераций:
Starting 'Populating'...
Finish 'Populating', total: 0, per opt: 0
Starting 'Accessing'...
Finish 'Accessing', total: 0.79, per opt: 7.9e-07
Starting 'Manipulating'...
Finish 'Manipulating', total: 0.79, per opt: 7.9e-07
Starting 'Removing'...
Finish 'Removing', total: 0, per opt: 0
100000 файлов и 1000000 итераций:
Starting 'Populating'...
Finish 'Populating', total: 0.22, per opt: 2.2e-06
Starting 'Accessing'...
Finish 'Accessing', total: 0.91, per opt: 9.1e-07
Starting 'Manipulating'...
Finish 'Manipulating', total: 0.91, per opt: 9.1e-07
Starting 'Removing'...
Finish 'Removing', total: 0.07, per opt: 7e-07
1000000 файлов и 1000000 итераций:
Starting 'Populating'...
Finish 'Populating', total: 2.24, per opt: 2.24e-06
Starting 'Accessing'...
Finish 'Accessing', total: 1.06, per opt: 1.06e-06
Starting 'Manipulating'...
Finish 'Manipulating', total: 1.06, per opt: 1.06e-06
Starting 'Removing'...
Finish 'Removing', total: 0.73, per opt: 7.3e-07
Даже ReiserFS v3 очень хорошо себя ведет.
А вот NTFS под WinXP на том же ноутбуке..
1000 файлов и 1000000 итераций:
Starting 'Populating'...
Finish 'Populating', total: 1.687, per opt: 0.001687
Starting 'Accessing'...
Finish 'Accessing', total: 12.768, per opt: 1.2768e-005
Starting 'Manipulating'...
Finish 'Manipulating', total: 12.738, per opt: 1.2738e-005
Starting 'Removing'...
Finish 'Removing', total: 1.161, per opt: 0.001161
100000 файлов и 1000000 итераций:
Starting 'Populating'...
Finish 'Populating', total: 269.361, per opt: 0.00269361
Starting 'Accessing'...
Finish 'Accessing', total: 209.98, per opt: 0.00020998
Starting 'Manipulating'...
Finish 'Manipulating', total: 47.645, per opt: 4.7645e-005
Starting 'Removing'...
Finish 'Removing', total: 168.138, per opt: 0.00168138
Хорошее время для теста 'Manipulating', видимо, объясняется тем, что нужная информация была закэширована при выполнении 'Accessing'.
А тест на 1M файлов в каталоге я даже запускать не стал
eao197 wrote: > А я твой вариант без Boost-а сделал и еще несколько доработок: > — создаются файлы случайного размера; > — для проверки времени обращения к описанию файла используется access; > — для проверки времени обращения к файлу производится загрузка файла (по > идее, эти операции должны выгружать больше информации из кэша файловой > системы).
Ухх... Мне лень было столько писать. Поэтому я и взял Boost — в нем уже
все есть
> Все настройки для FS по умолчанию. > Ну а вообще Unix-овые FS -- это классно!
Точно!
> PS > Кстати, у тебя трудносопровождаемый стиль кодирования. Нет пробелов даже > между << и операндами
Я обычно потоки ввода/вывода вообще не использую И мне нравится,
когда один логический блок "сплошной" — без лишних пробелов.
Здравствуйте, eao197, Вы писали: E>А вот NTFS под WinXP на том же ноутбуке.. E>1000 файлов и 1000000 итераций: E>
E>Starting 'Populating'...
E>Finish 'Populating', total: 1.687, per opt: 0.001687
E>Starting 'Accessing'...
E>Finish 'Accessing', total: 12.768, per opt: 1.2768e-005
E>Starting 'Manipulating'...
E>Finish 'Manipulating', total: 12.738, per opt: 1.2738e-005
E>Starting 'Removing'...
E>Finish 'Removing', total: 1.161, per opt: 0.001161
Попробовал NTFS под WinXP на обычном:
Starting 'Populating'...
Finish 'Populating', total: 0.359, per opt: 0.000359
Starting 'Accessing'...
Finish 'Accessing', total: 7.797, per opt: 7.797e-006
Starting 'Manipulating'...
Finish 'Manipulating', total: 7.672, per opt: 7.672e-006
Starting 'Removing'...
Finish 'Removing', total: 0.187, per opt: 0.000187
Но однажды была сбойная ситуация, одновременно работали компьютеры WinFX + NTFS и Linux Suse 9.2 Professional + ReiserFS.
WinFX нормально справился, а вот Linux пришлось переустанавливать.
Как по надежности?
Alex57 wrote: > Но однажды была сбойная ситуация, одновременно работали компьютеры WinFX > + NTFS и Linux Suse 9.2 Professional + ReiserFS. > WinFX нормально справился, а вот Linux пришлось переустанавливать. > Как по надежности?
Reiser3/4 — это журналируемые FS. Вдобавок в Reiser4 еще и гарантируется
атомарность, так что FS _никогда_ не перейдет в inconsistent-состояние
(при условии нормальной работы команд синхронизации и атомарной записи в
винчестерах, что не всегда так).
Здравствуйте, Alex57, Вы писали:
A>Но однажды была сбойная ситуация, одновременно работали компьютеры WinFX + NTFS и Linux Suse 9.2 Professional + ReiserFS. A>WinFX нормально справился, а вот Linux пришлось переустанавливать.
Я думаю, что многие могут подтвердить твой опыт, а многие привести прямо противоположный.
A>Как по надежности?
А бог его знает. Вообще-то ReiserFS -- это журналируемая система, должна выживать после мягких сбоев.
Хотя как-то на linux.org.ru было обсуждение, связанное с надежностью ReiserFS, и многие говорили, что ext3 надежнее. Но на эти слова было много возражений о "кривых ручках"
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Alex57 wrote: > C>Ну а если диск осыпается — то тут уж как повезет. > Нет, диск не осыпался, но компьютеры без UPS. > Не смог откатить последнюю транзакцию.
Reiser4 не нужно _откатывать_ транзакции. Незафиксированые данные просто
пропадут.
У некоторых винчестеров неправильно реализованы команды сброса кэшей
(чтобы работали быстрее), так что возможно была аппаратная проблема.
Alex57 wrote: > C>Ну а если диск осыпается — то тут уж как повезет. > Нет, диск не осыпался, но компьютеры без UPS. > Не смог откатить последнюю транзакцию.
Reiser4 не нужно _откатывать_ транзакции. Незафиксированые данные просто
пропадут.
У некоторых винчестеров неправильно реализованы команды сброса кэшей
(чтобы работали быстрее), так что возможно была аппаратная проблема.
E>А бог его знает. Вообще-то ReiserFS -- это журналируемая система, должна выживать после мягких сбоев. E>Хотя как-то на linux.org.ru было обсуждение, связанное с надежностью ReiserFS, и многие говорили, что ext3 надежнее. Но на эти слова было много возражений о "кривых ручках"
Кривые ручки могут уронить все, что можно. Даже то, что нероняемо
Кодёнок wrote: > А насколько трудно будет получить встраиваемый рейзер4 под Windows? > Например, чтобы работать с файлом как в ФС.
В теории, это возможно. Есть, например, read-only драйвер для Reiser3.
На практике это будет достаточно сложно, так как механизмы VFS в Windows
и Linux очень различны.
Ну и производительность все равно будет ниже, чем в Линуксе.
Reiser4 не использует в настоящее время VFS (за что Ганса очень сильно пинают мэйнтейнеры).
А насчет таких фич, как рейсер4 в венде, то политика у Ганса проста: заплатите — и все будет