Решил я попробовать поработать с 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.
Код: Выделить всё
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
Старый /usr монтируется в /oldoldusr
Ядро было пересобрано с параметром
Код: Выделить всё
options KVA_PAGES=512
Код: Выделить всё
zfs_load="YES"
u3g_load="YES"
speaker_load="YES"
vm.kmem_size_min=999M
vm.kmem_size_max=999M
Код: Выделить всё
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)
Код: Выделить всё
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 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)
Повторяем запуск в /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 работает медленно.
График положил во вложение.
Уважаемые знатоки, помогите побороть эту подлую сволочь!

