Я пытаюсь понять внутреннюю работу ZFS ARC. Однако меня смущают несколько вещей:
фактический (zfs:0:arcstats:size
) против размера цели (zfs:0:arcstats:c
). Я понимаю, что фактический размер выделяется и хранит кешированное содержимое. Но каков тогда целевой размер? В чем разница между этими двумя?
mru_size (zfs:0:arcstats:p
) + mfu_size (zfs:0:arcstats:c
- zfs:0:arcstats:p
) vs data_size (zfs:0:arcstats:data_size
). Разве data_size не должен быть суммой mru_size и mfu_size? Каков правильный размер ARC? В соответствии с http://lists.freebsd.org/pipermail/freebsd-fs/2012-June/014643.html, так должно быть hdr_size + data_size (mru_size + mfu_size + anon_size) + other_size + l2_hdr_size
, но это не имеет смысла, поскольку mru_size
обычно больше, чем data_size
.
для чего используется дроссель с памятью дуги?
Спасибо за любые ответы / указатели.
Я считаю, что целевой размер ARC - это то, до какого размера он может вырасти, а фактический - это то, сколько он использует в настоящее время. Я вижу это на своем сервере, где я даю ему 12 гигов, но на самом деле он не будет размещаться на 12 гигах, если я не нажму его. И обычно любит сидеть на 10-11 гигах.
Вот ссылка, чтобы объяснить дроссель памяти. Похоже, ZFS изначально не была запрограммирована на то, чтобы съесть всю вашу память, скорее всего, поэтому она там есть. (http://www.zfsbuild.com/2012/04/18/let-zfs-use-all-of-your-ram/)
А насчет №2 я не уверен. Сожалею.
Надеюсь, это поможет!