Loyd
kalloc
https://github.com/spacejam/tla-rust
kalloc
вот что-то типа такого
Loyd
Ну, реализованнных, чтоб проверялось моделчекингом я не видел, но просто протестированных и довольно популярных — на любой вкус
Loyd
Ну окей, может не на любой, но базовые (хешмапы, списки, очереди и т.д.) точно есть
kalloc
да, смотрю, норм
Αλεχ
պլհկ
crossbeam смотри
Αλεχ
как раз сегодня и вчера обсуждали
Loyd
Но часто lock-free не нужен и лучше взять parking_lot и облепить дешёвыми адаптивными локами
kalloc
lock-free и O(log n) :D
Loyd
Ещё, если повезёт (нет), seqlock
պլհկ
Loyd
xd
Loyd
Так себе "обсуждали"
Αλεχ
Sergey Noskov @Albibek июнь 02 23:32
На каком уровне тогда actix работает, если он без токио? Всё своё? Executor свой? Event loop свой?
Nikolay Kim @fafhrd91 июнь 02 23:33
С tokio-core пока
Αλεχ
окей, токио в каком-то виде есть
Αλεχ
Sergey Noskov @Albibek июнь 02 23:33
Со старым? А в будущем?
Nikolay Kim @fafhrd91 июнь 02 23:33
Сейчас переезжаю на tokio, current_thread
Но думаю executor свой сделать
Посмотрим
Сейчас потеря производительность 5%
Loyd
tokio-core же уже всё, так?
Αλεχ
Nikolay Kim @fafhrd91 11:27
5% потеря от переезда, не весело. От thread pool'a совсем грустно
Выбора нет
Sergey Noskov @Albibek 11:28
от переезда куда и откуда?
Nikolay Kim @fafhrd91 11:28
На tokio
С tokio-core
Sergey Noskov @Albibek 11:30
на current_thread?
Nikolay Kim @fafhrd91 11:30
Да
Loyd
Или tokio-core так же в основе tokio?
պլհկ
>В каком-то виде
https://github.com/actix/actix/blob/master/Cargo.toml
Αλεχ
короче сейчас токио и есть, но ненадолго
Loyd
Loyd
Параллельный экзекутор, который на пуле, даёт -5%?
Αλεχ
5% от переезда на токио
Αλεχ
с пулом хуже
Loyd
Loyd
issue есть какое?
Loyd
Ибо это же нихуя не логично
Αλεχ
отсюда можно все подряд читать
պլհկ
tl;dr плз. У меня пока такое ощущение что actix это fasthttp для руста, и 90% юзкейсов достаточно хупера
Loyd
Ну, в целом логично: чем больше у тебя работы в комбинаторах футурных, тем оправданнее использовать тредпул.
Loyd
отсюда можно все подряд читать
tldr: параллельный executor медленнее однопоточного (при условии что реактор и экзекьютер в одном потоке), так как тратится время на синхронизацию потоков. При пиковой нагрузке это существенно. activex-web однопоточный, если нужно что-то на цпу делать, то выносишь в акторы (activex)
պլհկ
>activex
Loyd
actix
Loyd
Сцука. Ну ты понел)
Loyd
Ну и да, автор переезжает на tokio current_thread
պլհկ
Чет я не очень понял. В токио же тоже затратные по цпу таски в тред пул выносятся
պլհկ
В чем разница
Loyd
Не, ты можешь руками выносить: взять current_thread экзекьютор и самостоятельно выносить, разницы не будет
Loyd
Но в threadpool экзекьюторе у тебя разные таски выполняются параллельно
Loyd
А синхронизация происходит, когда реактор (который и так и так однопоточный, ибо нужен один epoll) нотифаит экзекьютор.
Loyd
Ну, точнее он нотивает футуры, которые, уже экзекьютор, не суть.
պլհկ
current_thread в треде с реактором цпу таски выполняет?
Loyd
Ну, по идее должен. Но я не стану утверждать на 100%
պլհկ
Они ж заблочат там все нахер
Loyd
Почему?
Loyd
Если у тебя, условно, "hello world" отправлять в ответ, то это будет наибыстрейший вариант )
պլհկ
А если thread::sleep(10)
Loyd
Ну, в асинхронке так никто не делает
պլհկ
Ну это условно
Loyd
Ну, ты и в тредпуле можешь засрать все потоки
kalloc
это не проблема, это гибкость
kalloc
всегда есть го)
Loyd
Кстати, видел же blocking() api у threadpool-а?
պլհկ
Видел
kalloc
дада)
պլհկ
Так я чего не догоняю: по дефолту же токио выполняет в одном потоке (токио-коре как минимум). В чем претензия? Они поменяли это в токио (не коре)?
Loyd
Да. В tokio дефолтный теперь threadpool-ный
Loyd
И это правильно в общем случае, имхо
պլհկ
Вот теперь понятно
պլհկ
Надо посмотреть насколько это в доке заметно
պլհկ
Я уже вижу тонны вопросов типа "почему мой сервер может обработать только 4 запроса"
Loyd
На месте автора actix с его задачей на 1m/s я бы вообще пилил штуку, где потоки 100% работают на спинлоках. Тогда и потерять не будет на паркинг)
պլհկ
В чем тогда смысл 🤔
Loyd
Тут скорее о том, чтобы десериализацию/сериализацию/перекладывание байтиков, короче, то, что обычно происходит в футурных комбинаторах, разнести по потокам
Денис
процессороёмкую работу разнести по потокам то бишь
Loyd
Это обычно не понимается под "процессороёмкой работой"
պլհկ
Т.е будет два пула?
Evgεny
лол ты же мне какое-то время назад сам это объяснял
Loyd
Вообще автор actix там заливает про то, что у него 1m/s и вот ему ппц как нужен однопоточный и всё такое. По мне, так это свидетельствует об архитектурном провале, иметь такую нагрузку на машинку (если не пиздит, конечно). Где L3-балансировка? Где разделение по датацентрам?
պլհկ
Вот меня тоже смущает
պլհկ
Чето он странное делает