Категорії
FreeBSD Solaris

zfs начинает тупить/притормаживать при заполнении почти всего пула

При заполнении пула почти на 90% (вообще-то у всех по-разному: у кого-то и в 70%, а у кого-то только при 98%) Zfs начинает сильно притормаживать, точнее искать свободное место в пуле, куда-бы записать. Связано это с тем, что по умолчанию установлено слишком большое значение параметра metaslab_min_alloc_size.

FreeBSD

Текущее значение можно посмотреть так:

# kgdb -w
....
(kgdb) print metaslab_min_alloc_size
$1 = 10485760

Налету выставим нужное (через kernel debugger – kgdb)

# kgdb -w
....
(kgdb) set metaslab_min_alloc_size=4096
(kgdb) print metaslab_min_alloc_size
$1 = 4096

Для перманентного изменения видимо придётся пересобирать ядро. Нашёл коммит http://gitorious.org/~avg/freebsd/avgbsd/commit/026055dd0ee0e837470fc51c8f5f4dc1447d42ab который должен внести патч с поправкой на значение по дефолту 0x1000 (вместо ранее дефолтного 10485760) . Так что вручную меняем значение переменной metaslab_min_alloc_size в файле sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c с DMU_MAX_ACCESS на 0x1000

Solaris

Текущее значение можно посмотреть так:

#echo metaslab_min_alloc_size::print | mdb -k
0x1800000

Рекомендуют ставить 0x1000. Налету это делается так:

#echo "metaslab_min_alloc_size/Z 1000" | mdb -kw
metaslab_min_alloc_size: 0x1800000 = 0x1000

Здесь видим старое и новое значение. Для постоянного изменения, заносим такую строку в /etc/system

set zfs:metaslab_min_alloc_size=0x1000

Ещё рекомендуют изменить параметр (но его уже убрали в Solaris 10Patch-ID# 147441-15, а значит нет и в Oracle Solaris 11, но есть в OpenSolaris )

set zfs:metaslab_smo_bonus_pct=0xc8

Вот краткое пояснение этого параметра из рассылки:

This is used to add more weight (i.e. preference) to specific
metaslabs. A metaslab receives this bonus if it has an offset which is
lower than a previously use metaslab. Sorry this is somewhat
complicated and hard to explain without a whiteboard. 🙂

Немаловажным фактором ещё является размер recordsize, который установлен на определённых ZFS. Поскольку, ZFS это COW, то чем больше размер блока, тем сложнее найти свободный блок большего размера. Как вариант, если у вас стоит , попробуйте уменьшить до 128К, или, до 32К, если это возможно.

3 коментарі “zfs начинает тупить/притормаживать при заполнении почти всего пула”

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff