---commit c73bda7c792a850dc24dc22cf6065eaaad717b69
Author: Dmitry Kozlov <xeb@mail.ru>
Date: Wed Oct 22 19:23:02 2014 +0400
ppp: implemented delayed unit close via unit cache
Due to kernel slowly destroys interfaces closing unit file descriptor blocks working threads which causes overall stuck.
Thus (if unit-cache option is not zero) do not close unit file descriptor immediatly, but put it into unit cache.
Additional helper thread was introduced which closes descriptors from unit cache which overruns configured unit cache size.
Т.к ядро медленно удаляет интерфейсы, закрытие файловых дескрипторов связанных с ппп интерфейсом приводит к тому, что рабочие потоки блокируются в ожидании, что, в свою очередь, приводит к общему подвисанию работы демона.
Этим патчем закрытие файловых дескрипторов интерфейса не происходит в контексте рабочего потока, а переносится в вспомогательный поток через unit-cache.
Т.е. рабочий поток не закрывает сам дескриптор, а ложит его в unit cache, а вспомогательный поток берёт эти дескрипторы из кэша и закрывает их неспеша, к тому-же вновь подключающиесе тоже не тратят время на создание новых интерфейсов, а берут из кэша, что увеличивает общую отзывчивость системы.
Напоминаю, кол-во дескрипторов которые хранятся в кэше (не закрываются) указываеются в параметре unit-cache.
Если unit-cache=0, то весь этот функционал выключается и работает как раньше, т.е. рабочие потоки сами закрывают дескрипторы.