Facebook представил наработки по оптимизации IPv6 в ядре Linux
Facebook представил серию патчей, решающих проблемы с масштабируемостью IPv6-стека в ядре Linux. В частности, подготовлена реализация системы заполнения кэша маршрутизации по необходимости (cache on demand), позволяющая преодолеть проблему с разрастанием дерева маршрутов IPv6, которая приводит к повышенной нагрузке на CPU и неэффективной работе сборщика мусора.
При оценке эффективности работы кэша на одном из рабочих серверов для таблиц /128 в дерево маршрутов попало 300 тысяч маршрутов, при том, что 299 тысяч были созданы впустую. Применение патча позволило кардинально сократить число элементов в дереве маршрутов, оставив там только необходимые записи. В итоге, на тестовой системе каждый запуск сборщика мусора с патчем приводит к чистке примерно 500 записей, вместо 200 тысяч элементов кэша при использовании обычной конфигурации.
Из других патчей отмечается оптимизация выполнения вызова fib6_lookup() и решение ряда проблем для маршрутов /128. Подготовленные изменения уже переданы для включения в состав основного ядра Linux. В дальнейшем оптимизацию планируется продолжить, так как по оценке Facebook из-за неэффективных методов блокировки производительность IPv6-стека примерно на 10 процентов отстаёт от стека IPv4.