ZFS поддерживает сжатие файловой системы, а также кэширует часто или недавно используемые данные.
Если в системе много ЦП, но базовая система хранения данных работает медленно. Возможно, ZFS будет лучше работать с включенным сжатием. Это можно легко проверить при записи файлов, измерив использование и пропускную способность ЦП и диска. (конечно, может существовать задержка, но это не будет проблемой для больших файлов).
А как насчет кеша? Если данные придется распаковывать каждый раз при чтении, это, вероятно, не очень хорошая идея.
Кэшированные данные сжаты? У кого-нибудь есть информация по этому поводу?
Я задал этот вопрос Ричарду Эллингу, бывшему инженеру ZFS. Он сказал мне, что L2ARC не сжат, как и ARC.
Извините, я не могу предоставить документацию или спецификации. Мое единственное доказательство - это то, что один из парней, которые помогали разрабатывать ZFS, рассказал мне лично, когда я встретился с ним на прошлой неделе. :)
Сегодня L2ARC можно сжать с помощью LZ4, но ARC все еще не сжат. Более подробная информация доступна на сайте OpenZFS -> http://open-zfs.org/wiki/Features#l2arc_compression
Кэшированные данные в ARC или L2ARC всегда несжаты. Период. В противном случае каждое чтение из ARC или L2ARC будет иметь соответствующие накладные расходы ЦП, которые с некоторыми алгоритмами могут быть значительными (я смотрю на вас, bzip2). Предполагая, что сжатие = да в вашей файловой системе (ах), данные на дисках пула и ZIL (если применимо) всегда будут сжиматься.
Вы правы, при хранении данных, которые хорошо сжимаются, и система с большим количеством ЦП, но с ограниченным вводом-выводом может лучше преформироваться с включенным сжатием. Это не уникальная характеристика ZFS, вы найдете множество ссылок на нее в отношении включения сжатия в NTFS или других файловых системах.
Это изменилось в последних версиях zfs (по крайней мере, в Linux). Мы только что сравнили яблоки с яблоками с двумя наборами данных 32k, один со сжатием lz4, другой без него. В случае несжатой памяти arc использовалась вдвое больше памяти.
Похоже, что на самом деле обычно более эффективно распаковать данные, которые действительно необходимы, в краткосрочный кеш, поскольку кэш дуги часто считывает данные, которые никогда не запрашиваются. Вроде выбор был сделан на сжатие в память ..
Я также вижу несколько параметров в файле / proc / spl / kstat / zfs / arcstats, которые подтверждают это:
c 4 135156049920
c_min 4 8447253120
c_max 4 135156049920
size 4 3288083480
compressed_size 4 3070738432
uncompressed_size 4 9339208192
Этот коммит выглядит актуальным https://www.illumos.org/issues/6950
Да. ZFS будет кэшировать часто используемые данные в любой форме. Производительность со схемой сжатия по умолчанию хорошая и не требует ничего, кроме небольшого процессорного времени. Сжатие происходит на лету. Вы можете расширить это еще больше, добавив кэш-память SSD L2ARC.