LINUX.ORG.RU
ФорумAdmin

Я ффш0ке от производительности zfs с сжатием gzip-9 на чтение.


0

2

Коротко: zfs с gzip-9 живущая в файловом контейнере на ext4 в 2 раза опережает сам ext4 на чтение.

Все началось с того что обнаружил в текущем Debian Wheezy поставленном на древнем 10+летнем ноуте с Celeron-1.6 пакет: zfs-fuse и поставил его.
Когда пару лет назад я начал ковырять zfs - она работала исключительно на x64 компьютерах и мне пришлось лишь для неё ставить Debian x64 на компе и нетбуке.
Сейчас она реализована и на x32, но в этой реализации отсутствует Алгоритм сжатия lz4, потому я поставил gzip-9, создал на корне 10Gb Контейнер и забил его корнем+частью из /home.
Устроив чтение дерева в /dev/null подумал
что 25 минут это долго и начал читать с нативного раздела. На момент 25 минут было считано лишь 5Gb. Я разочаровался было в ext4 но обнаружил там xfs, запустил онлайн дефраг но это не исправило ситуацию. Однако разница в два раза меня ошеломила и я пошел на другой комп:

с процессором: Intel(R) Celeron(R) CPU E3400 @ 2.60GHz
К нему по USB3 подключен 3TB Seagate NAS3T, на нем ext4 раздел с корнем
свежепоставленного Debian Wheezy смонтированный в /mnt/root:
Total Used Free
47G 4,2G 40G

читаем этот корень:
#find root -type f -exec cat '{}' \; |pv|dd of=/dev/null
3,44GB 0:07:41 [7,63MB/s] [ <=> ]
7144764+124516 записей считано
7205901+1 записей написано
скопировано 3689421565 байт (3,7 GB), 461,169 c, 8,0 MB/c

Там же делаем 10Gb контейнер:

#dd if=/dev/zero of=zfs-10G.zfs bs=1048576 count=0 seek=10240

Затем делаем в нем zfs
#zpool create zfs-over-ext4 /mnt/root/zfs-10G.zfs
устанавливаем упаковку gzip-9
#zfs set compression=gzip-9 zfs-over-ext4

Копируем /mnt/root на zfs в контейнере на ext4.
#/usr/bin/time rsync -axvPH --exclude=/zfs-10G.zfs /mnt/root/ /zfs-over-ext4
sent 3698550260 bytes received 2594892 bytes 4281255.24 bytes/sec
total size is 3690113480 speedup is 1.00
38.01user 71.12system 14:23.83elapsed 12%CPU (0avgtext+0avgdata 52060maxresident)k
5681360inputs+7203210outputs (0major+41076minor)pagefaults 0swaps

Теперь читаем записанное:
#find /zfs-over-ext4 -type f -exec cat '{}' \; |pv|dd of=/dev/null
3,44GB 0:04:36 [12,7MB/s] [ <=> ]
7144723+124584 записей считано
7205901+1 записей написано
скопировано 3689421565 байт (3,7 GB), 276,59 c, 13,3 MB/c

Упс... тут тоже разница 4:36 минут против 7:41 на чистом ext4
я ффш0ке...

Понимаю что тут compressratio=2.49, но на древнем ноуте с тормозным целероном он 1.71. Тестирование конечно слабое, но радует что zfs есть теперь и для x32.
я ффш0ке...

И на довесок скопируем тот же корень в нативный 2.6T zfs с упаковкой lz4

#/usr/bin/time rsync -axvPH --exclude=/zfs-10G.zfs /mnt/root/ /opt
sent 3698550254 bytes received 2594886 bytes 5898239.27 bytes/sec
total size is 3690113480 speedup is 1.00
39.33user 78.36system 10:27.53elapsed 18%CPU (0avgtext+0avgdata 53960maxresident)k
7882326inputs+7203010outputs (6major+32134minor)pagefaults 0swaps
10 минут против 14 минут.

Теперь читаем:
find /opt -type f -exec cat '{}' \; |pv|dd of=/dev/null
3,44GB 0:06:21 [9,21MB/s] [ <=> ]
7144846+124348 записей считано
7205901+1 записей написано
скопировано 3689421565 байт (3,7 GB), 381,878 c, 9,7 MB/c
Где то посередине между gzip-9 в контейнере поверх ext4 и ext4

Вообще от zfs пока в основном положительные впечатления.
Если у кого есть отрицательные отзывы - интересно будет послушать.

Я наверное всех уже утомил, пойду спать.

★★★

Последнее исправление: n0mad (всего исправлений: 2)
Ответ на: комментарий от blind_oracle

Я к тому, что в реальности никто кэш не скидывает перед каждой дисковой операцией и производительность файловой системы это несколько большее чем просто скорость записи/чтения диска в обход кэша.

EvgGad_303 ★★★★★
()
Ответ на: комментарий от emulek

вот и сравнивай ext4 без сжатия с zfs без сжатия

Доведем до абсурда и сравним ext4 и непакующую zfs живущую в файловом контейнере на ext4
#zfs set compression=off zfs-over-ext4
#rm -rf /zfs-over-ext4/*
# /usr/bin/time rsync -axvPH --exclude=/zfs-10G.zfs /media/NAS3T-root/* /zfs-over-ext4/
sent 3698549805 bytes received 2594857 bytes 5080500.57 bytes/sec
total size is 3690113201 speedup is 1.00
39.64user 88.27system 12:08.78elapsed 17%CPU (0avgtext+0avgdata 59200maxresident)k
8044408inputs+7203994outputs (1major+28837minor)pagefaults 0swaps

12:08 против 14:23 При копировании на сжатую lz4
Теперь читаем (без сброса кэшей):
#find /zfs-over-ext4/ -type f -exec cat '{}' \; |pv|dd of=/dev/null
3,44GB 0:06:01 [9,75MB/s] [ <=> ]
7144730+124580 записей считано
7205901+1 записей написано
скопировано 3689421565 байт (3,7 GB), 360,958 c, 10,2 MB/c

6:01 и 10.20МБ/с против 7:41 и 8МБ/с на самом ext4

И на финал Создадим непакующий раздел на нативной 2.6t zfs.
#zfs create NAS3T-pub/zfs-Unpacked
#zfs set compression=off NAS3T-pub/zfs-Unpacked
Скопируем:
#/usr/bin/time rsync -axvPH --exclude=/zfs-10G.zfs /media/NAS3T-root/ /opt/pub/zfs-Unpacked/
sent 3698550262 bytes received 2594894 bytes 4635122.30 bytes/sec
total size is 3690113480 speedup is 1.00
39.25user 80.42system 13:18.27elapsed 14%CPU (0avgtext+0avgdata 54460maxresident)k
8003002inputs+7203010outputs (0major+41764minor)pagefaults 0swaps

13:18 против 12:08 в файлконтейнере на ext4

Теперь читаем:
#find /opt/pub/zfs-Unpacked/ -type f -exec cat '{}' \; |pv|dd of=/dev/null
3,44GB 0:06:50 [8,58MB/s] [ <=> ]
7144852+124351 записей считано
7205901+1 записей написано
скопировано 3689421565 байт (3,7 GB), 410,236 c, 9,0 MB/c

Итого 6:50 на 2.6Т разделе против 6:01 в файловом 10Gb контейнере на ext4.
При этом как помним чистая ext4 дала 7:41. zfs на линейном чтении сделала ext4 во всех вариантах.

n0mad ★★★
() автор топика
Ответ на: комментарий от emulek

Я смотрю, ты как делал ненужные и бесполезные тесты, так и делаешь.

Их у меня есть.
Есть результаты и тестов:bonnie,dbench,fsmark,iozone
Для разделов с установкой контрольных сумм в: fletcher2,fletcher4,off,on,sha256
Для разделов с упаковкой:off,on,lz4,lzjb,zle,gzip[1-9]
Например для сравнения моя боевая конфигурация:checksum=on,compression=lz4 и ext4
dbench в 100 потоках.
zfs:


Operation Count AvgLat MaxLat
----------------------------------------
NTCreateX 4836324 0.449 604.793
Close 3551894 0.025 291.271
Rename 205024 2.668 704.066
Unlink 976886 35.643 803.555
Qpathinfo 4386673 0.073 399.625
Qfileinfo 764863 0.002 63.424
Qfsinfo 803708 0.008 59.462
Sfileinfo 394807 0.150 267.126
Find 1693894 0.695 613.436
WriteX 2389826 0.136 396.385
ReadX 7584936 0.089 346.275
LockX 15748 0.004 6.086
UnlockX 15748 0.002 0.057
Flush 339229 58.343 1096.627

Throughput 250.726 MB/sec 100 clients 100 procs max_latency=1096.630 ms

ext4:
Operation Count AvgLat MaxLat
----------------------------------------
NTCreateX 3118005 0.379 1623.225
Close 2288734 0.002 49.596
Rename 132160 3.023 1620.695
Unlink 630864 5.795 1780.787
Qpathinfo 2828578 0.303 1318.553
Qfileinfo 492944 0.002 26.716
Qfsinfo 518798 0.005 56.062
Sfileinfo 254055 19.984 1628.039
Find 1093220 0.073 1106.919
WriteX 1540647 4.934 1627.857
ReadX 4892092 0.246 1623.654
LockX 10152 0.003 0.058
UnlockX 10152 0.002 0.066
Flush 218560 182.554 2297.372

Throughput 162.074 MB/sec 100 clients 100 procs max_latency=2297.409 ms


А сейчас пойду и запущу пачку тестов на древнем Celeron 1.6 и посмотрю как там отработает zfs.

n0mad ★★★
() автор топика
Последнее исправление: n0mad (всего исправлений: 1)
Ответ на: комментарий от Suntechnic

Купи SSD.

Хорошо издеваться над «сломанным админом».
Увы я не могу себе этого позволить.
Перенес травму подобную травме Шумахера, вот и «туплю» мучая старые накопившиеся железки.
Типа тренирую моск думать и анализировать

n0mad ★★★
() автор топика
Последнее исправление: n0mad (всего исправлений: 3)

И еще мне zfs нравится тем что вон в процессе тестирований я создал и пулы лежащие в файлах на ext4 и нативные пулы и подразделы, заслипал древний ноут и выключил usb диск с корнем.
Всё это не проснулось и решилось лишь жестким ресетом. После жесткого ресета система загрузилась смонтировав и файловые и нативные zfs разделы. Не требовалось править ни fstab ни другие скрипты.
Так что никто не мешает делать корень на ext4 а хомяки другие крупные подкаталоги отослать в zfs
т.е. делается минимальный корень а всё остальное место винта в zfs и потом динамично можно всё перераспределять создавая подразделы и монтируя их туда куда хочется и требуется.

n0mad ★★★
() автор топика
Последнее исправление: n0mad (всего исправлений: 3)
Ответ на: комментарий от user_id_68054

ну в BTRFS тоже есть два вида сжатия: ZLIB и LZO (и ведётся >работа над LZ4) ..

но только в отличии от ZFS — BTRFS не сломается после >обновления ядра :-)

ну а почему ты пытался сравнивать ZFS именно с EXT4 , а не с >BTRFS — вот это несовсем ясно (потому что бабка на лавке >сказала что BTRFS якобы глючит? ну уж наверно не больше там >«глюков» чем в неродной ZFS :))..

Кстати «ДА»!
У btrfs есть одно огромное преимущество.
Debian Wheezy на нее может поставиться как на корневую на x32 машинке. Для zfs корень лишь в x64 с zfsonlinux x64.

n0mad ★★★
() автор топика
Ответ на: комментарий от n0mad

на x32 машинке

обосрацо просто преимущество. ты лучше скажи, зачем тебе устанавливать 32 бита в 2014 году?

anonymous
()
Ответ на: комментарий от anonymous

обосрацо просто преимущество. ты лучше скажи, зачем тебе устанавливать 32 бита в 2014 году?

Потому что с компьютерами работать начал не один десяток лет назад и накопилось всякого. 10+ Летний Samsung P28 вполне работает и вполне чистый. Жаль сейчас идеология наращивания потребностей. Машина с 512Mb мозгов тормозит... 10 Лет нзад на серваках было по 64Mb рамы... Всё опошляется из года в год и обрастает свистелками и перделками - требующими наращивания мощностей. Стоит вот 8 компов на расстоянии вытянутой руки и лишь 3-x64 (включая нетбук на Атоме) - и еще 3 маршрутизатора с OpenWRT валяются на столе:)

О! У меня в углу под столом даже P133 Есть! :)
И когда то именно он был сервером :)

n0mad ★★★
() автор топика
Последнее исправление: n0mad (всего исправлений: 4)
Ответ на: комментарий от n0mad

Машина с 512Mb мозгов тормозит...

если системный блок — то его можно использовать вместо скамейки (наверное он уж ржавчиной покрылся).

а если ноутбук — то его можно подкладывать под что-нибудь (раньше подкладывали книжки..)

:-)

user_id_68054 ★★★★★
()

производительности ... с сжатием gzip-9 на чтение

и причём тут zfs? у squashfs результат будет как бы не лучше

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.