ZFS Будь он не ладен медленный и странно себя ведет в целом

Все вопросы по установке, обновлению и эксплуатации FreeBSD: конфигурация и сопровождение.

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Pianist
проходил мимо
Сообщения: 2
Зарегистрирован: 2010-04-22 7:17:00

ZFS Будь он не ладен медленный и странно себя ведет в целом

Непрочитанное сообщение Pianist » 2010-10-17 1:12:34

Всем привет.
Решил я попробовать поработать с ZFS на одной из своих фрях, тем более, что 160 гб хард начал кончаться. Перечитал всё, что смог найти. Книжку правда SUN’овскую ни асилил пока… Нудная больно и сюжет так себе . Но вскольз читал.

В общем система –

Код: Выделить всё

FreeBSD 8.1 Release, i386
CPU: Intel(R) Pentium(R) Dual  CPU  E2220  @ 2.40GHz (2394.02-MHz 686-class CPU)
2 ГБ оперативной памяти DDRII
ad7: Старый хард 160 ГБ SATA II, размеченный UFS, на нем система
ad8, ad9: Два новых харда по 1 ТБ SATA II.
Физические показатели хардов, снятые diskinfo:

Код: Выделить всё

ad7 >
Transfer rates:
        outside:       102400 kbytes in   0.982162 sec =   104260 kbytes/sec
        middle:        102400 kbytes in   1.109304 sec =    92310 kbytes/sec
        inside:        102400 kbytes in   1.868130 sec =    54814 kbytes/sec

ad8 >
Transfer rates:
        outside:       102400 kbytes in   0.825577 sec =   124034 kbytes/sec
        middle:        102400 kbytes in   0.969241 sec =   105650 kbytes/sec
        inside:        102400 kbytes in   1.607994 sec =    63682 kbytes/sec

ad9 >
Transfer rates:
        outside:       102400 kbytes in   0.780139 sec =   131259 kbytes/sec
        middle:        102400 kbytes in   0.962239 sec =   106418 kbytes/sec
        inside:        102400 kbytes in   1.629290 sec =    62849 kbytes/sec
Из двух хардов сделал zmirror pool, в котором поднял файловую систему /usr, которая заменила старый /usr
Старый /usr монтируется в /oldoldusr

Ядро было пересобрано с параметром

Код: Выделить всё

options         KVA_PAGES=512
Loader.conf:

Код: Выделить всё

zfs_load="YES"
u3g_load="YES"
speaker_load="YES"

vm.kmem_size_min=999M
vm.kmem_size_max=999M
arc_summary.pl, часть:

Код: Выделить всё

ZFS Tunable (sysctl):
        kern.maxusers=384
        vfs.zfs.l2c_only_size=0
        vfs.zfs.mfu_ghost_data_lsize=0
        vfs.zfs.mfu_ghost_metadata_lsize=0
        vfs.zfs.mfu_ghost_size=0
        vfs.zfs.mfu_data_lsize=75070976
        vfs.zfs.mfu_metadata_lsize=906752
        vfs.zfs.mfu_size=75977728
        vfs.zfs.mru_ghost_data_lsize=0
        vfs.zfs.mru_ghost_metadata_lsize=0
        vfs.zfs.mru_ghost_size=0
        vfs.zfs.mru_data_lsize=94218240
        vfs.zfs.mru_metadata_lsize=718336
        vfs.zfs.mru_size=109753856
        vfs.zfs.anon_data_lsize=0
        vfs.zfs.anon_metadata_lsize=0
        vfs.zfs.anon_size=0
        vfs.zfs.l2arc_norw=1
        vfs.zfs.l2arc_feed_again=1
        vfs.zfs.l2arc_noprefetch=0
        vfs.zfs.l2arc_feed_min_ms=200
        vfs.zfs.l2arc_feed_secs=1
        vfs.zfs.l2arc_headroom=2
        vfs.zfs.l2arc_write_boost=8388608
        vfs.zfs.l2arc_write_max=8388608
        vfs.zfs.arc_meta_limit=163676160
        vfs.zfs.arc_meta_used=20034788
        vfs.zfs.mdcomp_disable=0
        vfs.zfs.arc_min=81838080
        vfs.zfs.arc_max=654704640
        vfs.zfs.zfetch.array_rd_sz=1048576
        vfs.zfs.zfetch.block_cap=256
        vfs.zfs.zfetch.min_sec_reap=2
        vfs.zfs.zfetch.max_streams=8
        vfs.zfs.prefetch_disable=1
        vfs.zfs.check_hostid=1
        vfs.zfs.recover=0
        vfs.zfs.txg.write_limit_override=0
        vfs.zfs.txg.synctime=5
        vfs.zfs.txg.timeout=30
        vfs.zfs.scrub_limit=10
        vfs.zfs.vdev.cache.bshift=16
        vfs.zfs.vdev.cache.size=10485760
        vfs.zfs.vdev.cache.max=16384
        vfs.zfs.vdev.aggregation_limit=131072
        vfs.zfs.vdev.ramp_rate=2
        vfs.zfs.vdev.time_shift=6
        vfs.zfs.vdev.min_pending=4
        vfs.zfs.vdev.max_pending=35
        vfs.zfs.cache_flush_disable=0
        vfs.zfs.zil_disable=0
        vfs.zfs.zio.use_uma=0
        vfs.zfs.version.zpl=3
        vfs.zfs.version.vdev_boot=1
        vfs.zfs.version.spa=14
        vfs.zfs.version.dmu_backup_stream=1
        vfs.zfs.version.dmu_backup_header=2
        vfs.zfs.version.acl=1
        vfs.zfs.debug=0
        vfs.zfs.super_owner=0
        vm.kmem_size=1047527424
        vm.kmem_size_scale=3
        vm.kmem_size_min=1047527424
        vm.kmem_size_max=1047527424
------------------------------------------------------------------------
Делаю ребут, сразу после включения системы и прогрузки всех демонов,
Делаю параллельно:

Код: Выделить всё

cmdwatch “perl arc_summary.pl | sed -n '/ARC Size:/,/(c_max)/p'”
cmdwatch “vmstat –h”
dd if=/dev/zero of=/usr/testzero1 bs=1024k count=2048
в скрине, в режиме, позволяющем просматривать три скрина одновременно

Сразу после ребута, до каких либо действий –

Код: Выделить всё

memory  
avm    fre   
787M  1257M   

ARC Size:
Current Size:61.35%383.06M (arcsize)
Target Size: (Adaptive)100.00%624.38M (c)
Min Size (Hard Limit):12.50%78.05M (c_min)
Max Size (High Water):~8:1624.38M (c_max)
Запускаем dd –

Код: Выделить всё

memory  
avm    fre   
844M   824M

ARC Size:
Current Size:96.92%605.15M (arcsize)
Target Size: (Adaptive)96.88%604.86M (c)
Min Size (Hard Limit):12.50%78.05M (c_min)
Max Size (High Water):~8:1624.38M (c_max)

2147483648 bytes transferred in 28.818070 secs (74518649 bytes/sec)
Относительно нормальная скорость, хотя могло бы быть и лучше.

Повторяю запуск,

Код: Выделить всё

2147483648 bytes transferred in 28.573045 secs (75157676 bytes/sec)

Остальные параметры в тех же пределах
НО, запускаю dd в старый раздел –

Код: Выделить всё

dd if=/dev/zero of=/oldoldusr/testzero1 bs=1024k count=2048
и ситуация меняется на глазах:

Код: Выделить всё

memory  
avm    fre   
841M    97M

ARC Size:
Current Size:37.46%233.86M (arcsize)
Target Size: (Adaptive)37.46%233.91M (c)
Min Size (Hard Limit):12.50%78.05M (c_min)
Max Size (High Water):~8:1624.38M (c_max)

2147483648 bytes transferred in 20.898474 secs (102757917 bytes/sec)
Кстати, быстрее, чем ZFS! Хотя все тесты и обещания SUN говорят о превосходстве над UFS2.

Повторяем запуск в /usr

Код: Выделить всё

memory  
avm    fre   
839M   140M

ARC Size:
Current Size:35.16%219.52M (arcsize)
Target Size: (Adaptive)35.16%219.52M (c)
Min Size (Hard Limit):12.50%78.05M (c_min)
Max Size (High Water):~8:1624.38M (c_max)

2147483648 bytes transferred in 46.483443 secs (46198894 bytes/sec)
Медленно как-то, не правда ли?
Если повторить процедуру с /oldoldusr пару раз, а затем опять протестировать /usr станет совсем плохо, я даже устал ждать

Код: Выделить всё

memory  
avm    fre   
846M    85M

ARC Size:
Current Size:12.50%78.04M (arcsize)
Target Size: (Adaptive)12.50%78.05M (c)
Min Size (Hard Limit):12.50%78.05M (c_min)
Max Size (High Water):~8:1624.38M (c_max)

2147483648 bytes transferred in 347.816170 secs (6174192 bytes/sec)
После ребута всё встает на свои места.
У меня поднята система monitorix, на его memory usage графике ситуация отображается следующим образом:
Когда желтого много, ZFS работает нормально, когда желтый полоской, всё плохо, ZFS работает медленно.
График положил во вложение.

Уважаемые знатоки, помогите побороть эту подлую сволочь!
Вложения
Untitled-2.jpg

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
manefesto
Группенфюррер
Сообщения: 6934
Зарегистрирован: 2007-07-20 8:27:30
Откуда: Пермь
Контактная информация:

Re: ZFS Будь он не ладен медленный и странно себя ведет в це

Непрочитанное сообщение manefesto » 2010-10-18 9:50:59

если я не ошибаюсь то суть именно в размере блока.
Была тема что mysql на zfs работает медленно, именно изза размера блока.
Попробуй погонять dd с другими значениями bs
я такой яростный шо аж пиздеЦ
Изображение

sch
сержант
Сообщения: 282
Зарегистрирован: 2009-05-28 14:36:50
Откуда: Кишинев

Re: ZFS Будь он не ладен медленный и странно себя ведет в це

Непрочитанное сообщение sch » 2010-10-18 13:47:08

еще есть мнение, которое озвучивалось в рассылке stable@, что скорость работы с ZFS будет выше, если не использовать ее одновременно с UFS. То есть, операционная система должна работать с одной ФС. С двумя одновременно - плохо получается. Менеджер памяти путается.
Подробней про это почитать можно в архиве рассылки stable@freebsd.org

ключевая фраза: zfs slowdown when mixed with another file system

Аватара пользователя
Mox
лейтенант
Сообщения: 757
Зарегистрирован: 2008-12-16 16:04:14
Откуда: питер
Контактная информация:

Re: ZFS Будь он не ладен медленный и странно себя ведет в це

Непрочитанное сообщение Mox » 2010-10-18 15:10:57

а вообще я для себя уяснил из тестов дисковой подсистемы, по крайней мере для UFS чем ближе данные к началу диска чем они быстрее читаются/пишутся, причем ощутимо. Для таких тестов лучше использовать отдельный диск.
"В мире программирования алгоритмы становятся более важными, чем код, и именно из-за академических корней в BSD изначально большое внимание уделялось проработке алгоритмов". Мэтт Диллон

Dark_ASU
сержант
Сообщения: 258
Зарегистрирован: 2009-10-31 22:13:04
Контактная информация:

Re: ZFS Будь он не ладен медленный и странно себя ведет в це

Непрочитанное сообщение Dark_ASU » 2010-10-18 22:36:52

Да и врекомендации к ZFS указано мин. 4гб оперативки.

Аватара пользователя
serge
майор
Сообщения: 2133
Зарегистрирован: 2006-07-30 15:34:14
Откуда: Саратов
Контактная информация:

Re: ZFS Будь он не ладен медленный и странно себя ведет в це

Непрочитанное сообщение serge » 2010-10-19 6:58:30

manefesto писал(а):если я не ошибаюсь то суть именно в размере блока.
Была тема что mysql на zfs работает медленно, именно изза размера блока.
Попробуй погонять dd с другими значениями bs
Да вот чето как-то не пошел zfs под innodb. При этом это был зеркальный пул на двух sata2 дисках. Скорость чтения больших по размеру файлов соответствовала скорости диска, т.е. была хорошей. Но если запустить mysql и нагрузить запросами тупило прилично. Тюнинговали по всякому.
В итоге сейчас gmirror и ufs.