= Сообщение: 9564 из 10753 ===================================== RU.UNIX.BSD = От : Slawa Olhovchenkov 2:5030/500 01 Jan 20 21:08:44 Кому : Victor Sudakov 01 Jan 20 21:08:44 Тема : vfs.zfs.arc_max FGHI : area://RU.UNIX.BSD?msgid=2:5030/500+5e0ce713 На : area://RU.UNIX.BSD?msgid=2:5005/49+5e0cd30c = Кодировка сообщения определена как: FIDO =================================== ============================================================================== Hello Victor!
02 Jan 20, Victor Sudakov writes to Slawa Olhovchenkov:
VS>>>>> Почему сабж не ограничивает размер ARC? AK>>>> сломали нахрен AK>>>> он проверяет одно, а память жрет другое, в этом другом он не AK>>>> учитывается.
AK>>>> slw@ тут детально разбирал года полтора назад, с тех пор стало AK>>>> только хуже.
AK>>>> https://reviews.freebsd.org/D7538 позволяющий этой хренью не AK>>>> страдать вовсе и просто отдать всю ненужную в данный момент AK>>>> память arc - по прежнему висит в "need review". Разрабочикам из AK>>>> iX нахрен не надо решать эту проблему - им не за такие решения AK>>>> начисляются бонусы.
VS>>> Там бы английский текст привести в порядок, а то IMHO никто VS>>> понять не может, о чём оно. Очень уж косноязычно написано, при VS>>> всём уважении к личности автора.
SO>> предложи свой вариант.
VS> Я не смог понять текст.
ну а что именно там непонятно? вот прям каждое предложение непонятно? или непонятны все же отдельные предложение и/или может связи между ними?
А, хотя я наверное знаю на какой фразе затык. Сам уже с трудом могу вспомить что я там думал, похоже результат несогласованных редактирований.
VS> Ты можешь по-русски изложить, а я переведу?
Hу окей. Там правда может и не все уже актуально, но что бы два раза не вставать если по размышлении окажется что все же стоит излагать -- приведу полный текст
1. В illumos needfree является частью подсистемы VM [его значение кореектируется/вычисляется подсситемой VM] которое ZFS просто учитывает
В случае FreeBSD эту переменную приходится эмулировать. Текущая эмуляция кривая: в случае дефицита needfree устанавливается в btoc(arc_c >> arc_shrink_shift) и не изменяется пока arc_size не станет меньше arc_c. В процессе освобождения памяти ARC arc_c уменьшается до arc_c_min, освобождая все больше и больше памяти, если arc_size недостаточно быстро освобождается. В результате ZFS ARC уменьшается пиздец как, до arc_min. Я наблюдал излишнее освобождение памяти в объемах 10x до 100x раз.
[вообще это можно нахер выкинуть, это было актуально когда первая версия патча публиковалась, с тех пор версия во фре уже себя так не ведет, перемнную выкинули и все надо иначе описывать]
[а дальнейшее продолжает быть акутальным]
1. arc_shrink() помещает освобожденную память в zone cache, эта память не доступна системе [для аллокаций]. Вызываем arc_kmem_reap_now() что бы сделает её доступной 2. arc_kmem_reap_now() не освобождает per-CPU zone cache. Делаем uma_reclaim_zone_cache() и arc_drain_uma_cache() для освобождения. 3. Большой объем свободной памяти непосредственно доступной ARC находится в zone cache, проверяем это когда вызывается arc_reclaim_needed() для избегания ситуации ложного дефицита памяти.
SO>> если что непонятно -- спроси. SO>> что все гордые-то просто пиздец какие, я прям не могу.