Диагностика потребностей кеша ZFS
У меня есть особая нагрузка на машину, которая ограничена дисковым вводом-выводом, в основном читает.
Большая часть ввода-вывода происходит на медленном подключенном к сети диске, который отформатирован с ZFS.
Используя iostat, я ясно вижу, что использование этих дисков составляет около 100%, поэтому, по крайней мере, я знаю, что это узкое место.
Более того, я вижу, что на этих дисках я в основном читаю.
Медленный диск содержит около 3T.
Я был настроен оптимистично и установил кеш L2ARC и использовал zpool iostat
Я вижу что-то вроде этого:
pool alloc free read write read write
----------------------------- ----- ----- ----- ----- ----- -----
virtio-993974c9-d6be-412d-9 3,02T 1,85T 13 0 95,9K 0
cache - - - - - -
/root/cache.l2arc 12,5G 2,47G 15 2 152K 116K
----------------------------- ----- ----- ----- ----- ----- -----
sam. févr. 9 19:48:58 CET 2019
capacity operations bandwidth
pool alloc free read write read write
----------------------------- ----- ----- ----- ----- ----- -----
virtio-993974c9-d6be-412d-9 3,02T 1,85T 18 0 104K 0
cache - - - - - -
/root/cache.l2arc 12,5G 2,47G 19 0 176K 0
----------------------------- ----- ----- ----- ----- ----- -----
sam. févr. 9 19:48:59 CET 2019
capacity operations bandwidth
pool alloc free read write read write
----------------------------- ----- ----- ----- ----- ----- -----
virtio-993974c9-d6be-412d-9 3,02T 1,85T 23 308 152K 7,42M
cache - - - - - -
/root/cache.l2arc 12,5G 2,47G 31 3 276K 204K
----------------------------- ----- ----- ----- ----- ----- -----
Так что L2 помогает, но не сильно. Более того, я вижу, что L2 не полностью заполнен, поэтому больший не поможет, верно?
У меня разумная скорость кеширования, 98,5% для ARC и 73,7% для L2.
Более того, медленный диск все еще используется примерно на ~100%, поэтому, если бы я мог удалить работу с диска, мое приложение работало бы быстрее.
Есть ли способ узнать, что я должен попробовать дальше? Что может помочь?
1 ответ
L2ARC большего размера вполне может заполниться примерно до той же емкости, что и та, что у вас есть сейчас (что довольно мало, если я правильно понял - всего 12,5 ГБ?)
L2ARC заполняет из вытеснения ARC, и вполне возможно, что то, что происходит, это просто то, что содержимое L2ARC и ARC является большей частью вашего действительно "горячего" набора данных, и у вас нет много повторяющихся чтений, которые еще не находятся в кеше,
Как обычно в обсуждениях L2ARC, вам, скорее всего, будет лучше, если вы добавите больше оперативной памяти на сервер для использования с ARC. Сколько у вас оперативной памяти? Сколько из этой оперативной памяти доступно для использования в качестве ARC? (См. /Etc/modprobe.d/zfs.conf; по умолчанию используется 50% физической памяти в системе.)