Re: asio (& boost::asio), latency и c500k
От: abrarov Россия http://asio-samples.blogspot.com/
Дата: 01.04.16 13:15
Оценка:
Здравствуйте, SkyDance, Вы писали:

SD>Сейчас у нас есть обработчик этого добра на чистом epoll и незамутнённом C.


Насколько я помню, у asio есть проблемы с производительностью на ОС, где "искаропки" есть только реактор — epoll/kqueue (на Windows по умолчанию используется системный проактор — IOCP). В случае использования подхода "один экземпляр asio::io_service и несколько рабочих потоков (по количеству логических CPU), работающих с ним (asio::io_service::run())" получается bottleneck где-то во внутренностях asio (mutex). В этом случае я предпочитаю использовать подход "несколько экземпляров asio::io_service (по количеству логических CPU) и по одному рабочему потоку на каждый из экземпляров". Самое интересное, что эти два подхода можно скрестить и выбирать нужный в runtime (при старте) — см. echo_server (https://github.com/mabrarov/asio_samples).
Programs must be written for people to read, and only incidentally for machines to execute
Отредактировано 01.04.2016 13:18 abrarov . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.