тогда я наверное не понял. А что именно еще можно было бы оптимизировать в стеках?
Читать полностью…Посмотрел(пролистал), честно говоря для оптимизации размера стэка особо ничего не увидел
в основном касается оптимизации копирования фреймов virtual thread continuation <-> platform thread stack
по оптимизации размера увидел планируемую в будущем компрессию фреймов, все (
ну если говорить про внешнюю систему, то там вообще ещё надо помнить про poison pill
Читать полностью…ну если получится доказать про память, то ок
но про параллельность /конкурентность все равно же в jdbc cp упрется
Я уверен, что решение на виртуальных потоках:
Позволит обработать каждое сообщение в батче параллельно
Будет стоить меньше по памяти, чем платформенный тред (на платформенных мы можем вылетать по OOM при ограниченных ресурсах)
Будет быстрее
Да норм идея, паттерн мульти трэдед консьюмер, где требуется обработка батча параллельно + тут поможет структурное конкарренси
Читать полностью…https://www.youtube.com/watch?v=6nRS6UiN7X0 - тут показывалась, как они оптимизации делают для этого
Читать полностью…Насколько понимаю, он и так в обычной куче лежит, его никуда двигать не надо, разве что регистрф сбрасывать (как и в нативных). Хороший вопрос - это как он расширяется, копированием (= медленно, но только до самой глубокой цепочки вызова) или ссылкой на следующую страницу (= не так медленно, но постоянно, потеря локалити, лишние инструкции)
Читать полностью…вспомнил кейс smallrye messaging (подотносительно Quarkus)
тайм-аут по умолчанию 60 сек воспринимается как сообщение, которое нельзя обработать и общение с Kafka и данным консьюмером блокируется.
я скорее к тому, что там действительно уже все сильно зависит от внешней системы, к подтверждению твоих слов как конкретный кейс
И в реальных системах никто пулы на 1к потоков не делает, а значит там будет базовый пул потоков + очередь, и эта очередь будет забиваться
Читать полностью…/channel/jvmchat/623423
Смотрим на res, дальше проецируем, что будет, когда в стеке окажется реальный код, а не два фрейма.
Топик с 1 млн сообщений, батчи по 1к сообщений, для каждого сообщения поход во внешний сервис для обогащения, батчи после успешной параллельной обработки записывается в базу через jdbc
Читать полностью…главная идея использования virtual threads в kafka consumer это именно уход от проблемы context switching.
Про память ещё доказать надо :)
Там предположение, что код будет делать fan-out для параллельных тасок, и у них будет минимальный стек.
Читать полностью…Я к тому что да, он в куче. Но он там есть.
Просто складывается ощущение что стэка нет. Локальных переменных нет. И т д
Вот бесплатные треды.
В jep написано, что стэк не будет глубоким. Но непонятно почему.
да не могут виртуальные треды больше памяти сожрать, кроме как только фактом своего количества
Читать полностью…