В ядрото на Linux е ускорена обработката на входящите UDP пакети с 12%

В кода на базата, на която се формира ядрото на Linux 7.0, е приет набор от промени, по време на провеждане на стрес тестове в 100-гигабитна мрежа, които позволиха да се увеличи производителността на обработката на входящи UDP пакети с 12%. Оптимизацията е реализирана чрез ръчно инлайнване на 2 функции. Отбелязва се, че функцията timecounter_cyc2time() може да бъде извиквана за всеки входящ пакет, тъй като съвременните протоколи изискват отчитане на времето на постъпване на пакета. Поради това на натовареното сървър функция timecounter_cyc2time() може да бъде извиквана повече от 100 млн. пъти в секунда.

В тази ситуация автоматичните оптимизации, прилагани от компилатора, като FDO (Feedback Directed Optimization), LTO (Link Time Optimization) и PGO (Profile Guided Optimization), не успяха да открият горещия сегмент от кода и го игнорираха, очевидно поради факта, че драйверите на мрежовите карти се предоставят под формата на отделни модули. Въпреки това, ръчното inline разгръщане на функцията даде значителен ръст в производителността.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster