При тестировании благодаря патчам удалось повысить пропускную способность чтения мелких файлов в конфигурации с 8 потоками с 9.9-10.4 до 30-33 миллионов операций в секунду (прирост в 3 раза), с 4 потоками — с 8.9-11.6 до 25-26 млн/сек (прирост в 2 раза), а при однопоточной нагрузке с 7.9-8.1 до 8.8-8.9 млн/сек. Прирост производительности объясняется тем, что при одновременном обращении к страничному кэшу возникает жёсткая конкуренция между потоками при доступе к кэшу. Например, когда 8 потоков пытаются одновременно читать по 16 байт данных 99.92% времени тратится не на само чтение, а на ожидание доступа к счётчику ссылок.
В патче для гарантирования корректности данных вместо выставления отдельных блокировок, изменения счётчиков ссылок или промежуточной буферизации применяется обходной вариант, использующий отложенное освобождение памяти с синхронизацией при помощи механизма RCU (Read-Copy-Update). Предложенный в патче метод гарантирует, что страница памяти не будет физически освобождена, пока читающий поток не завершит копирование данных, что позволяет читать данные напрямую без выставления отдельных блокировок.
Источник: http://www.opennet.ru/opennews/art.shtml?num=66447
