Comments 4
А AtomicBoolean хорошо спрятался?
Спасибо.
Действительно, вызов sendfile()
блокируется на время чтения с диска (при отсутствии данных в дисковом кеше). Но по результатам профилирования раздатчика под нагрузкой sendfile()
не является проблемой — он обслуживает proxy-запросы (HTTP) и ненадолго блокируется только в 10-20% случаях (page cache miss) на чтении с SSD.
В нашем случае количество потоков большее числа ядер в первую очередь объясняется использованием независимых пулов для различных стадий конвейера, чтобы повысить управляемость и наблюдаемость системы.
Но и блокирующие операции, конечно, присутствуют — в частности, в докладе рассматривается чтение блоков с дисков для отправки в клиентский SSL-сокет, когда мы не можем использовать sendfile()
. Кроме того, запись блоков из OBS/OCS на диск при cache miss является блокирующей.
Реактивный раздатчик ok.ru/music