Вопрос к тем, кто использовал boost::asio под нагрузкой с 10000 соединений и выше. Не было ли у вас ситуации, что серьёзно фрагментируется память? Как раз начинаю с этим разбираться. По идее io_service должен содержать внутри себя часто изменяемый список функторов, что должно приводить к частой работе с кучей. Если критичной фрагментации не происходит, то прошу рассказать, за счёт чего в boost::asio решается эта проблема.
На практике пока не сталкивался с проблемой критичной фрагментации памяти, но заглянув внутрь boost::asio начинаю беспокоиться об этом. Сервер должен бесперебойно работать много лет и то, чего не видно под нагрузкой сейчас по идее может всплыть из-за принципиального устройства библиотеки.
Здравствуйте, DmitryShm, Вы писали:
DS>На практике пока не сталкивался с проблемой критичной фрагментации памяти, но заглянув внутрь boost::asio начинаю беспокоиться об этом. Сервер должен бесперебойно работать много лет и то, чего не видно под нагрузкой сейчас по идее может всплыть из-за принципиального устройства библиотеки.
Смотря как ты реализуешь сервер. Если стандартно — то будет фрагментация. Если будешь использовать custom memory allocation — то не будет (например смотри внизу этой ветки
http://rsdn.ru/forum/cpp.applied/4303091.1Автор: TrimS
Дата: 08.06.11
).
Вообще перед реализацией серьезного проекта я бы на твоём месте погуглил и по изучал исходники boost::asio samples — там много чего нужного/интересного в примерах. А ещё поискал бы по этому форуму темы, где отписался abrarov — он очень толковые советы и разъяснения по boost::asio тут давал.
Здравствуйте, DmitryShm:
В этом видео автор Asio показывает где могут быть аллокации и как от них избавляться:
https://www.youtube.com/watch?v=U6HCL2bZHOA