Anatoly
у меня один сервис крутится в 9 инстансах вместо 3х именно из-за стартап-тайма в 2 минуты
Ayrat
Ну лечится это потерей пикового перформанса на старте
окей, мы можем добавит ещё один слой - нативно скомпиленный с ПГО стартап, далее всё отдаётся житу который сделат по-настоящему оптимально
Anatoly
там иногда случается какая-то хрень и оно начинает каскадно падать
Anatoly
а новые ноды не успевают стартовать
Doge
ну и ОЗУ это херня, да
И да, ОЗУ - это херня, а вот размера кэша в проце и его использование - это нифига не фигня.
Doge
А если ты жрешь много ОЗУ - то и с кэшем у тебя тоже проблемы скорее всего
Anatoly
и вот пока шесть-семь нод умирают, новая как раз успеет стартовать
Doge
А кэш миссы - это бесконечно дорого в любом CPU-bound коде
Doge
Любой поход в реальную ОЗУ - это смерть, сотни циклов в никуда по сути
Doge
Даже L3 - это десятки циклов
Ayrat
впаяем ОЗУ в ЦПУ
Doge
давайте уже сделаем кэш размером в пару ТБ
Тогда он будет медленный (см. большие L3)
Kirill
почему?
а, прочитал дальше про пример
Ilya
давайте уже сделаем кэш размером в пару ТБ
Амд недавно показывала 192 МБ L3.
Ilya
Но да, медленно всё равно.
Anatoly
M1!
Kirill
но стартап тайм 2 минуты, это какой то прогрев идет или почему так? обычное дотнет приложение же быстрее заводится
Anatoly
но стартап тайм 2 минуты, это какой то прогрев идет или почему так? обычное дотнет приложение же быстрее заводится
да хер его знает, древнее легаси. что-то тянет из базы. это просто пример, почему стартап тайм _может_ стать критически важным. забивать на него нельзя. . в случае лямбд он очень важен - ты платишь за время, даже если лямбда ничего не делает и компилируется
Doge
окей, мы можем добавит ещё один слой - нативно скомпиленный с ПГО стартап, далее всё отдаётся житу который сделат по-настоящему оптимально
Проблема джита в том, что он не может делать больших и очень дорогих оптимизаций (типа норм векторизации, норм partial evaluation'а и суперкомпиляции, да даже обычных инлайн + DCE + т.п. ему не всегда в бюджет лезет). А они могут огромную роль играть и их наличие позволяет писать относительно высокоуровневый код, которые при этом всё равно будет компилиться в предельно эффективные вещи 100% времени. А с джитами зиро кост абстракции - это очень хрупкие вещи, которые разваливаются практически всегда
Doge
Ayrat
и с джитами то что было не зиро кост может стать зирокост, точнее оно уже так и работает
Doge
и с джитами то что было не зиро кост может стать зирокост, точнее оно уже так и работает
Только проблема в том, что зирокост может стать не зирокост
Ayrat
то есть ты пишешь говнокод, а он конфетка в рантайме. JS еры на V8 так живут
Doge
И это как раз и плохо
Doge
то есть ты пишешь говнокод, а он конфетка в рантайме. JS еры на V8 так живут
Там v8 разумно работает только в около числодробильном коде без абстракций. Реальный код от жсеров (типа реакта) всё равно превращается в говно, я смотрел в асм
Ayrat
в общем, моё мнение что для 99.99999% проектов житы - супер
Ayrat
пишешь на приятном языке, а там пердит рантайм который старается и делает хорошо
Ilya
Я вот жду, когда компилятор реакта поумнее и начнёт инлайнить компоненты, например.
Ayrat
ну и если ты не дебил и понимаешь как работает рантайм можно вообще чудеса творить
Doge
И тебе приходится выбирать между абстракциями и скоростью выполнения
Doge
В то время, как в языках с хорошими оптимизирующими компиляторами таких проблем особо нет
Doge
Как пример, см. разницу в скорости циклов и стримов в той же джаве vs скорость циклов против растовских итераторов
Ayrat
И тебе приходится выбирать между абстракциями и скоростью выполнения
в 99.99999% не приходится, т.к. после жита остаётся очень хороший код. Не просто нормальный, а очень хороший
Doge
У первых разница в 2 раза, у вторых - идентичный код с вручную написанным циклом
Doge
А почему тогда шарповый линк в разы медленее ручных циклов?
Ayrat
ты доказываешь что вручную можно сделать лучше. Да можно, кто ж спорит. Но разница там несущественная для подавляющего большинства задач
Ayrat
Это разница в разы, если что
и это несущественно, как я уже говорил, для 99.9999% проектов
Doge
и это несущественно, как я уже говорил, для 99.9999% проектов
Ну для 99.9999% производительность в целом не очень существенно, потому что всё равно всё упирается в кривые запросы к базе
Ayrat
Василий неплох
Ayrat
тонко
Mikhαil
Это ж статистическая погрешность
Mikhαil
Не более
Mikhαil
Крылатый
впаяем ОЗУ в ЦПУ
Давно пора.
Kirill
оптимизируем проект за счет кешей и выноса данных из sql в другие более специализированные хранилища раст не поможет(
Doge
и это несущественно, как я уже говорил, для 99.9999% проектов
Но контекст разговора всё же был про байтоебство, а не про то, как в бд сходить. Да и то, волшебные джиты и тут не особо всемогущи, вон тот же грааль умудряется и время старта сокращить на порядок, и потребление ОЗУ резать и код в целом ускорять (в некоторых случаях до 30% процентов)
Kirill
Крылатый
так уже
Сколько гигов воткнуто?
Ayrat
Ждём JIT AI
Doge
Ждём JIT AI
У джита есть проблема ещё одна - он не может LTO делать
Ayrat
как только ITER достроим, получим термояд, сразу заживём
Doge
Поэтому ты всегда (в случае той же JVM) оказываешься с кучей лишнего говнокода в бинарнике, который вырезан не будет.
Ayrat
Doge
ну это только размер бинарника же
В случае жвм - это ещё и потребление памяти
Doge
Потому что невырезанная метаинформация ощутимо её жрёт
Ayrat
не то чтобы это прям сильно страшная проблема. А что мешает в теории пошейкать либы и в случае жита?
Doge
не то чтобы это прям сильно страшная проблема. А что мешает в теории пошейкать либы и в случае жита?
Ну это всё равно надо будет делать каким-то относительно сложным компилятором (типа грааля), который тогда уж сразу и оптимизации сможет применить.
Ayrat
единственная проблема это рефлективные вызовы, но это извините.
Ayrat
то есть если пошейкать бинарник с условием что нет рефлективных вызовов, то ноу проблем
Doge
А вообще, сильно парит, что иногда нужно оборачивать в Rc и RefCell итд?
Ну без явных RefCell я спокойно справляюсь, а Rc - это вопрос оптимизации обычно и я их вставляю туда, где у меня точно иммутабельные данные и я хочу сэкономить на клонированиях.
Doge
А вообще, сильно парит, что иногда нужно оборачивать в Rc и RefCell итд?
Т.е. у меня на проект в примерно 20к строк - 12 использований Arc и 4 использования Rc, но тут дисклеймер нужен небольшой, что я очень активно использую арены, поэтому где у кого-то были бы Rc, у меня просто индексы на арену
Ilya
Давно пора.
дак м1 же так сделан
Vasiliy
Ооо классный выпуск про распад ссср