uz
Feedback
Бессонный кодер

Бессонный кодер

Kanalga Telegram’da o‘tish

Канал разработчика и поисковика ДПСО LizaAlert Связь: @sleeplessfeedbackbot или Direct канала (они бесплатные) По рекламе: @dpp_ads Купить рекламу: https://telega.in/c/sleeplesscode

Ko'proq ko'rsatish
4 330
Obunachilar
+324 soatlar
+17 kunlar
-8130 kunlar
Postlar arxiv
Дальше начался метод научного тыка. Сократил объём операций до 56 250 000 и начал тестировать разные гипотезы. Вот что получилось: Результаты: База (2 ГБ, batch = 1000): 8m 11s Расширенный Block Cache (10 ГБ): 7m 59s Уменьшенный batch (500): 8m 09s Увеличенный batch (2000): 8m 06s Лексикографически отсортированный batch: 7m 57s Лексикографически отсортированный весь get: 7m 57s Сокращение потоков вдвое: 7m 18s Увеличение потоков вдвое: 9m 32s Увеличение параллелизма и фоновых задач RocksDB: 8m 05s Что стало ясно: 1. Block Cache: Увеличение с 2 до 10 ГБ дало прирост всего ~2%. ➝ Значит, либо данные не влезают в кэш, либо узкое место — не RAM. 2. Batch size: Изменения в пределах 500–2000 почти не влияют. ➝ Значит, размер уже оптимален под текущий паттерн доступа. 3. Сортировка: Минимальный выигрыш от сортировки ключей (~14 секунд). ➝ Либо ключи уже достаточно локализованы, либо RocksDB сам всё делает неплохо. 4. Потоки: Вот где интересно: меньше потоков → быстрее (7:18), больше потоков → медленнее (9:32). ➝ Классический bottleneck по диску или lock'ам: ➝ меньше потоков → меньше переключений и блокировок, ➝ больше потоков → хаос и случайные I/O. 5. Параллелизм RocksDB: Изменение этих параметров почти не повлияло. ➝ Узкое место в другом. Когда идеи начали заканчиваться, пришла мысль — а что если всё загрузить в память и забыть про диск? Ну... не хватило 30 ГБ ОЗУ 😃 Больно, больно. И тут чёрт меня дёрнул проверить версию JNI-обёртки. Оказалось — она отстаёт на 2 мажорных версии. Обновил с RocksDB JNI 8 → 10 и... БАХ — 833 171 операций в секунду с диска. Время выполнения метода: 390 секунд. ПОБЕДА. 🧠 Итого: Три дня, куча боли, и в итоге: - Ускорение метода в десятки раз - Глубокое погружение в RocksDB - Новые знания о высоконагруженных системах А теперь слово моему копилоту:
Итоги оптимизации:
Обновление rocksdbjni дало основной прирост
Точное количество потоков имеет критичное значение
Сортировка ключей даёт минимальный, но стабильный прирост
Batch и cache — важны, но эффект умеренный
Использование NVMe SSD — must-have

Что дальше?
Архитектурные изменения: шардирование, горизонтальное масштабирование
Или full in-memory при небольших объёмах
Именно вот этим и интересна разработка в целом, это целый логический квест, где ты не знаешь что будет дальше, но точно уверен, главная ошибка тут - ты.

«Больные души»: Мрачная сатира на чиновничий абсурд Мрачное произведение Хань Суна — шедевр, который поразит своей безжалостн
«Больные души»: Мрачная сатира на чиновничий абсурд Мрачное произведение Хань Суна — шедевр, который поразит своей безжалостностью и мрачным юмором. Погрузитесь в антиутопическую больничную систему вместе с Ян Вэем, который вместо ожидаемой командировки оказывается затянутым в лабиринт медицинских неурядиц. Здесь здравый смысл теряется среди бессмысленных диагнозов и бесконечных ожиданий, а вдохновение от Кафки и Пелевина соединяется с буддийской философией и искусственным интеллектом. Если вы жаждете провокационных размышлений о человеческой боли и извращенности бытия, эта книга — ваш новый верный спутник! Готовы ли вы ощутить жар болезни и абсурда? Тогда «Больные души» уже ждут вас на Ozon! 

Что может быть лучше технического поста? Технический пост, за которым стоит бэкграунд трёх дней мучений! Появилась у меня необычная потребность — ускорить выполнение одного метода. Изучив его работу, я понял: можно добиться ускорения через внедрение кэша. Простая задачка! (Эх, наивный…) Дано: У нас от 1 до 20 тысяч записей. Каждая запись выполняет от 1 до 20 тысяч вычислений — которые, к счастью, часто повторяются. А значит, могут быть закэшированы. Сложность: O(n²). Ну что ж, впихнём кэш. Первая реализация была на MapDB, ведь он уже использовался в другом методе этого проекта. Результат? Запрос 324 млн ключей через MapDB — идея плохая. Время выполнения: 8 часов. Окей, нужен вариант, готовый к хайлоаду. Выбор пал на RocksDB. Переписал всё под него. Результат: 2 часа выполнения (~21 000 операций/сек). Уже лучше, но всё ещё не то. Думаю — может, твикнем параметры Rocks? Что может пойти не так? Итог: нагрузка на диск — 1200 МБ/с, 0 операций в секунду. Красота… Начинаю твикать осознанно, читая доку. Что я сделал: - Отключил внутренний кэш RocksDB - Уменьшил размер блоков до 8 МБ - Отключил кэширование индексов - Включил кэширование страниц на уровне ОС - Увеличил размер страниц до 128 КБ - Снял лимит на число дескрипторов И ещё один важный шаг — переписал get-запросы на batched multiGet. Почему? - Меньше JNI-переключений между Java и C++ - Оптимизация I/O при чтении смежных ключей - Внутренний параллелизм RocksDB при multiGet И… да! Ускорение до 1.5 часа. Что дальше? Подключил GPT, начали вместе думать. Появилась идея: батч в 18 000 ключей — перебор. Сократил до 1000 — и получил прирост! Результат: ~41 210 операций в секунду. Много? Да. Достаточно? Пока — нет. Продолжение следует…

Многие из вас слышали от Зейта, кодеров и тестеров ST о "скриптах", но что это такое вообще? Сюжет можно разделить на части: по локации, по ветке, по теме. Но как заставить это всё быть в игре, не ломать друг-друга и взаимодействовать с игрой не заставляя её выходить в окно? Именно тут на сцену выходят наши скрипты: это можно сказать описание и объект отдельной ветки сюжета, локации или механики. Скрипт описывает какие события из шины событий игры и шины событий нашей системы ему нужны для работы, он может хранить переменные которые нужны только ему и загружены в память только когда он работает и что самое главное - они могут быть включены и выключены. Во времена Игры бога, они включались и выключались по прохождению сюжета, с процессом прохождения сюжетных веток. В дальнейшем к условиям включения добавились скрипты механик, которые включались после того как Рома изучил механику и скрипты локаций, которые запускались за 50-100 блоков до того как Рома зайдёт в неё и спавнили энтити. Небольшая оптимизация, а сколько ресурсов экономит!

Кстати об играх, я вас понял, Игра Бога так Игра Бога, это уже точно. А пока я готовлю для вас контентик, начнём с интересного факта. Сейчас при разработке сюжета мы стараемся выдерживать длительность серии в 25-30 минут сюжетных минут. А знаете что было в первой серии Игры Бога? - "продолжительность сюжета на серию - 2 минуты" Вот так и подросли мы, в 14 раз)

Я надеюсь вам понравилась прошлая неделя, теперь мы можем вернутся в наш график стандартных постов до 10к подписчиков) Замечали ли вы что последнюю неделю наш любимый Подпольный Транскриптор мог долго обрабатывать войсы, или игнорировать их и потом резко отрабатывать все, как вы думаете, в чём было дело? А правильный ответ - РосКомНадзор! Наши няшки поняшки сломали сетевое взаимодействие между микросервисом ответственным за предварительную обработку медиа и микросервисами которые непосредственно транскрибируют их. (кто бы думал). Так что да, мне пришлось немного поменять конфиги и теперь у нас есть несколько бенефитов. 1) Бот работает, уже хорошо, да? 2) Поверх SSL/TLS шифрации, трафик между микросервисами теперь дополнительно оборачивается в ещё один слой шифрации моей внутренней частной сети в которой взаимодействуют мои сервера. 3) Наконец туннели между всеми серверами использует не только Prometheus (личное достижение) Вот как-то так, сидишь, держишь бота в рунете, а приходит дядя РКН и ломает сетевую связанность.

🎉 Результаты розыгрыша: 🏆 Победители: 1. Necr0manth (@necr0manth) 2. Кофеман (@gamcreator) 3. молвин :p 4. ༺♡༻Астория Малфой 🪄༺♡༻#𝐷𝑜𝑟𝑜𝑟𝑜 (@Whome993) 5. Alkimor (@Alkimor) ✔️Проверить результаты

Неделя, она, она кончается! Настало время последнего розыгрыша этой недели, а что же у нас будет? Я хотел чтобы это было что-то что понравится ребяткам которые пришли от Ромы (учитывая что большую часть, так что, ловите грандиозный конец! ➡️ 1 место - пара коллекционных фигурок JDH и Lololoshka ➡️ 2 место - шоппер "вселенная стремится к порядку" ➡️ 3 место - шоппер Рома и JDH ➡️ 4 место - подушка с Ромой ➡️ 5 место - подушка "приляг ко мне на коленочки" ‼️Доставка возможна только в СНГ, если победитель из Москвы, можем лично встретиться ‼️

🎉 Результаты розыгрыша: 🏆 Победители: 1. Марат (@funfth) 2. ₱|∆t0ⁿ (@TypicalInternetUser) 3. 1234 (@neznayka047) 4. Nordin (@Nord7n) 5. Oimasi (@Oimasi) ✔️Проверить результаты

Вах, вот и выходные, приближается грандиозный конец недели (есть шанс что я щас отсыпаюсь после рабочей недели и бот сам выкладывает эту отложку). А пока настал более необычный розыгрыш, все прошлые были цифровыми, но как я говорил в одном посте, ВСЕГДА ХОЧЕТСЯ ПОТЫКАТЬ. ➡️ 5 книг от меня с доставкой ‼️Доставка возможна только в страны СНГ, если победитель из Москвы, можем лично встретиться ‼️

🎉 Результаты розыгрыша: 🏆 Победители: 1. Tim 2. Саид (@chelovek6457) 3. N1KOLAI (@nekit_lkn) 4. Даня бротик (@brotikdanya) 5. Ryzex (@Ry3ex) ✔️Проверить результаты

ПЯТНИЦА! П Я Т Н И Ц А! Впереди выходные, рабочая неделя уже всё, а это значит что настало время очередного розыгрыша! ➡️ 5 бусти подписок на бусти MrLololowka Смотрим бусти эксклюзивы прямо на выходе)

🎉 Результаты розыгрыша: 🏆 Победители: 1. Константин (@kostya112221) 2. Санечка (@g1444332) 3. 『🫧』— 𝘒𝘖𝘛𝘌𝘠𝘒𝘈 𝘈𝘖𝘒𝘐 (@Koteyka64) 4. 🇫🇷 Что? 🌻 (@JUSTTELLHIMTHAT) 5. Уран (@TheUran) ✔️Проверить результаты

Четверг почти как понедельник, день тяжкий, нет вайба пятницы, но уже устал после 3 дней работы. Но есть вещь вещь которая может улучшить ситуацию, очередной розыгрыш! ➡️ 5 бусти подписок на мой бусти Там и всякие дополнительные материальчики и чатик с обсуждениями.

🎉 Результаты розыгрыша: 🏆 Победители: 1. Nordin (@Nord7n) 2. Алексей (@Lesha_levkin) 3. Даня бротик (@brotikdanya) 4. 🔰Rabyth🔰 (@Rabyth_228) 5. Тим кук (@timkuk332) ✔️Проверить результаты

Что это? It is Wednesday my dudes, а значит очередной розыгрыш! Сегодня, разыгрываем промокоды на моего первого большого и ст
Что это? It is Wednesday my dudes, а значит очередной розыгрыш! Сегодня, разыгрываем промокоды на моего первого большого и ставшего относительно популярным бота - Подпольного транскриптора) ➡️ 5 промо-кодов на 60 минут в @pwvoicebot Это же говорить не переговорить сколько всего можно выговорить.

🎉 Результаты розыгрыша: 🏆 Победители: 1. Ярослав (@Alastor529) 2. Ivan (@JstIvan) 3. Рома (Re) (@ReRoma7) 4. 💤 (@ponmeown) 5. Tim (@Tim_Tim_Flin) ✔️Проверить результаты

Хм, уже второй день недели, а это значит что время второго розыгрыша! Сегодня у нас гифты на 5$ в боте который был сознан мом давним другом и очень крутым специалистом - Котей! ➡️ 5 гифт-кодов на 5$ в @godlike_gpt_bot Получается, можно будет без VPN и не выходя из телеги спросить: "почему прекрасен дебт хант?"

🎉 Результаты розыгрыша: 🏆 Победители: 1. aliinsik (@aliinsik) 2. Necr0manth (@necr0manth) 3. Рома (Re) (@ReRoma7) 4. Tiver (@Tiver211) 5. Lmc_rn (@LimyCorn) ✔️Проверить результаты

А начинается наша неделя розыгрышей с проходок на сервер "Рыбка", от моего коллеги и хорошего друга Дюпы по полочкам 🐂. ➡️ 5 проходок на сервер "Рыбка" ‼️ Учтите, что для входа требуется наличие лицензии Minecraft: Java Edition. ‼️