Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
Westtrdчитателей и писателя на одно ядр, Основная модель - 1P-1C Ключевые фиды мессаджинга работают на выделенных процессорных ядрах. А почему для 1P-1C не используете coroutines? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 17:50 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
не используете coroutines?, Опыт показал худшие результаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 17:52 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
Westtrdне используете coroutines?, Опыт показал худшие результаты. Не профилировали в чем их затык и оверхед? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 17:53 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
в чем их затык и оверхед?, Управление остановкой и возобновлением треда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 18:08 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
Westtrdв чем их затык и оверхед?, Управление остановкой и возобновлением треда Anatoly Moskovsky , ну вот, а вы говорили coroutines легкие и быстрые :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 20:39 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
coroutines легкие и быстрые, Мы ж код не видели. Может он их создавал непосредственно при вызове, а не заранее. Создание coroutine содержит оверхед на создание стека, т.е. выделение в куче и в ОСи соответствующих блоков памяти. Это не так много как оверхед создания обычного потока, но и не мало. Но переключение контекста между двумя уже созданными coroutine имеет оверхед в виде копирования нескольких регистров (причем не всех) в память и обратно - не знаю что тут может быть медленным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 20:45 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskycoroutines легкие и быстрые, Мы ж код не видели. Может он их создавал непосредственно при вызове, а не заранее. Создание coroutine содержит оверхед на создание стека, т.е. выделение в куче и в ОСи соответствующих блоков памяти. Это не так много как оверхед создания обычного потока, но и не мало. Но переключение контекста между двумя уже созданными coroutine имеет оверхед в виде копирования нескольких регистров (причем не всех) в память и обратно - не знаю что тут может быть медленным. Мне кажется что мы пытаемся экономить на спичках . Переключение контекста нитей тербует востановление состояния всех регистров. Затраты соизмеримы с вызовом-выходом_из функции. Это спички. Гораздо больше ресурсов в том числе и как минимум 2 барьера дожно уйти на вычисление , какой из нитей или конитей когда передавать управление и куда ( на какое ядро). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 22:17 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
ДохтаРAnatoly Moskovskycoroutines легкие и быстрые, Мы ж код не видели. Может он их создавал непосредственно при вызове, а не заранее. Создание coroutine содержит оверхед на создание стека, т.е. выделение в куче и в ОСи соответствующих блоков памяти. Это не так много как оверхед создания обычного потока, но и не мало. Но переключение контекста между двумя уже созданными coroutine имеет оверхед в виде копирования нескольких регистров (причем не всех) в память и обратно - не знаю что тут может быть медленным. Мне кажется что мы пытаемся экономить на спичках . А у Westtrd своё хранилище оказалось заметно быстрее использования готовых корутинов. ДохтаРПереключение контекста нитей тербует востановление состояния всех регистров. Затраты соизмеримы с вызовом-выходом_из функции. Это спички. Гораздо больше ресурсов в том числе и как минимум 2 барьера дожно уйти на вычисление , какой из нитей или конитей когда передавать управление и куда ( на какое ядро). Ещё достаточно большая часть кэша должна быть обновлена, подгружены новые PE в TLB. Но все это мелочи по сравнению с редкой частотой переключения контекста не позволяющей делать low latency обработку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 23:06 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
ДохтаР, Согласен, основа неблокирующих очередей как раз в избежании контекст свича. Кроме того, суть хранилища в том, чтобы балансировать нагрузку и различие в пропускной способности читателя и писателя. Я не говорю о том, что читатель всегда медленнее, но тем не менее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 23:28 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
своё хранилище, Все верно, но для меня было еще важно не столько достичь средней латенси на хорошем уровне, но и получить некие гарантии, что не будет существенных спайков. Изложенный механизм это позволил сделать. Пока это моя Конституция ) Далее время покажет. Хотя это очень специализированное решение, и глупо было бы его распространять на все попавшиеся под руку случаи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2013, 23:30 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, В ULL выделение ресурсов на лету считается дурным тоном :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2013, 00:13 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
своё хранилищеДохтаРпропущено... Мне кажется что мы пытаемся экономить на спичках . А у Westtrd своё хранилище оказалось заметно быстрее использования готовых корутинов. Когда стоит вопрос выбора красивый-умный ( производительный-надежный) Я бы ИМХО выбирал умный. Закладывая мутексы барьеры переключения контекстов итд в разумном количестве , до того как возникнут проблемы с происком UB в логике приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2013, 00:18 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
ДохтаР, Решение, безусловно, специализированное И таргетированное на совершенно конкретную микроархитектуру, так оно и собирается, с соответствующей оптимизацией. Насчет UB. Жесточайшие юниттесты с динамически изменяемой нагрузкой пока ничего не выявили. И в дебаге стоит немереное количество ассертов. Риски все поняты, измерены и приняты, цели высокие и жертвы понятны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2013, 01:00 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyПро локфри. В Бусте 1.53 появились несколько локфри контейнеров, в том числе очередь, которая наиболее часто используется для передачи сообщений между потоками. А сейчас эти lock-free контейнеры используются в самой boost.asio 1.53 - 1.54beta или собираются их использовать в будущих реализациях boost.asio? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 19:54 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
lock-free контейнеры, В 1.53 на библиотеку lockfree нет ссылок из других библиотек. Про намерения - не в курсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 20:15 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskylock-free контейнеры, В 1.53 на библиотеку lockfree нет ссылок из других библиотек. Про намерения - не в курсе. А что сейчас используется в boost.asio для "раскидывания" задач по потокам из пула, обычная очередь с мьютексом? Она одна или на каждый поток из пула своя блокировочная очередь, чтобы можно было через post() из разных потоков ставить задачи в очередь выполняющего потока? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2013, 20:29 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
lock-free контейнеры, Насколько я помню, очередь одна на все потоки и защищена стандартным мьютексом. Лень копаться в коде, чтобы перепроверить это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 00:34 |
|
||
|
Потоковый сервер на С++
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskylock-free контейнеры, Насколько я помню, очередь одна на все потоки и защищена стандартным мьютексом. Лень копаться в коде, чтобы перепроверить это. Т.е. "по легенде" освободившийся поток сам берет себе из этой общей очереди очередное задание? По идее тогда проблем не должно было быть с заменой lock-based очереди на lock-free. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2013, 01:39 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38221014&tid=2020113]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 332ms |
| total: | 479ms |

| 0 / 0 |
