From 1c29f292e6a8fdc2d5784d1ac61641270d63d8cc Mon Sep 17 00:00:00 2001 From: felex67 Date: Wed, 29 Apr 2026 02:52:24 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D1=81=D1=87=D1=91=D1=82=D1=8B=20?= =?UTF-8?q?=D0=B0=D0=BB=D0=BB=D0=BE=D0=BA=D0=B0=D1=82=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DAIRY.md | 100 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 78 insertions(+), 22 deletions(-) diff --git a/DAIRY.md b/DAIRY.md index 97f4e30..ce62b73 100644 --- a/DAIRY.md +++ b/DAIRY.md @@ -224,7 +224,7 @@ typedef struct FXGradedMemoryPool { |[ 5]| 0.00-10.00 sec | 81.6 MBytes | 68.5 Mbits/sec | 0 | sender | |[ 5]| 0.00-10.01 sec | 78.9 MBytes | 66.1 Mbits/sec | | receiver | -Весьма оптимистично, но, это спокойная сеть(ночью без помех), днём показатели будут существенно проседать и итоговая возможность сети будет существенно проседать, однако это — мелочь, что касается стабильности системы - мы должны исходить из максимальных возможностей сети и вкладывать в архитектуру на этом этапе именно это значение, берём максимальное из таблицы(77.5 МБит/с) и добавляем к нему о-о-очень оптимистичные 10%, итог(85.3 МБит/с), TP-Link свисток с 7-милетним стажем показывает топовые результаты не то чтобы для своего возраста, а вообще в принципе(порадовал старика, видимо он "поднатаскался" за 7 лет, как говорят - "Опыт не пропьёшь!"). В нашем случае сеть это узкое место(домашний Wi-Fi за средненьким роутером). +Весьма оптимистично, но, это спокойная сеть(ночью без помех), днём итоговая возможность сети будет существенно проседать, однако это — мелочь, что касается стабильности системы - мы должны исходить из максимальных возможностей сети и вкладывать в архитектуру на этом этапе именно это значение, берём максимальное из таблицы(77.5 МБит/с) и добавляем к нему о-о-очень оптимистичные 10%, итог(85.3 МБит/с), TP-Link свисток с 7-милетним стажем показывает топовые результаты не то чтобы для своего возраста, а вообще в принципе(порадовал старика, видимо он "поднатаскался" за 7 лет, как говорят - "Опыт не пропьёшь!"). В нашем случае сеть это узкое место(домашний Wi-Fi за средненьким роутером). Для чего это: показывает предел сетевого стека, то есть пропускную возможность сети. В чём особенность в проектировании алокатора(с моей колокольни), это самый основной элемент серверной части. С неправильной архитектурой памяти сервер — не сервер а "кукурузник", а нам нужна 3-я космическая скорость. По это му нам необходимо расчитать по максимуму частот и по минимуму памяти, такой подход считаю наиболее верным, конечно можно зацепиться за тактовую частоту этой самой памяти, но, на данном этапе — это лишнее. @@ -270,8 +270,8 @@ typedef struct FXGradedMemoryPool { ``` Что мы можем почерпнуть из такой архитектуры: -* ожидаемая вариативность размеров пакетов крайне низкая. -* даже если в пакет напихивать все ±значимые для сети поля - board, log, winners и turn — это всего $9 + 9 + 3 + 1 = 22$ байта + метаданные(размер + идентификатор пакета) ещё $2 + 1$ байта, итого имее всего 25 байт. +* ожидаемая вариативность размеров пакетов крайне низкая(вернее отличаться будут только ркопожатия). +* даже если в пакет напихивать все ±значимые для сети поля - board, log, winners и turn — это всего $9 + 9 + 3 + 1 = 22$ байта + метаданные(размер + идентификатор пакета) ещё $2 + 1$ байта, итого имеем всего 25 байт. * большие пакеты будут связаны исключительно с инициализацией шифрования и аутентификацией. Что мы можем ещё расчитать — скорость жмаканья юзерами-абьюзерами по полям, даже самый продвинутый guiuser врядли нажмакает чаще чем 0.5 секунды. Тут даже и вычислений не требуется чтобы понять что, оказывается, Wi-Fi тут далеко не самое узкое место, ну или вернее — сопоставимо узкое, к примеру с CPU или RAM. Берём кулюкулятор, пренебрегаем большими пакетами в виду их большой редкости, выбираем режим "Инженер"(мы же тут — архитектуру планируем) и начинаем считать: @@ -369,14 +369,34 @@ open files (-n) 1024 < Максималь * **Медленно** — клиент будет ощущать эти задержки, ибо в нашем случае пинг работает против проекта. * **Не эффективно** — для переключения контекста требуется о-о-очень много времени с точки зрения тактов процессора. +## Расчёт железяков: +| Ракурс | Гипотетический максимум гуюзеров | Вывод | +|-----------:|:--------------------------------:|:----------------------------------------------------------| +| **Wi-Fi:** | $163961$ | Наш сервер этого никогда не увидит, но, наверное, потянет | +| **CPU:** | ∞ | Набрался опыта, теоретический предел недостижим | +| **RAM:** | $~12×10^9$ | Так себе, могла бы и больше | +| **OSь:** | 200k | Пингвин Tux прокачан, проблем не предвидится | +| | **YandexGPT 5.1 Pro(АлисаAI)©** | ← Строки ниже писала она, автор ни при чём =D | +| **ССД:** | ∞ TB | Забыл, где положил половину данных | +|**Блок питания:**| 800 W (но реально 400) | Экономит энергию, отключаясь в самый неподходящий момент | +|**Кулер:**| ∞ об/мин (теоретически) | Любит петь баллады на высоких тонах, особенно под нагрузкой| +|**Сетевой кабель:**| 1 Гбит/с | Завязывается в узлы, когда никто не смотрит | +|**Материнская плата:**|100 лет службы | Помнит DOS, но делает вид, что забыла | +|**USB‑порт:**| 3.0 (но работает как 1.1) | Притворяется, что не видит флешку, пока не постучишь | +|**Монитор:**| 4K @144 Гц | Показывает синий экран именно тогда, когда нужно впечатлить клиента| +|**Клавиатура:**| 10 млн нажатий | Пропускает каждое пятое нажатие «для профилактики износа» | +|**Мышь:** | 12 000 DPI | Иногда решает, что курсор должен жить своей жизнью | +|**Общий вывод:**| — | Система стабильна, если не трогать, не дёргать и не пытаться впечатлить клиента| +|**Рекомендация:**| — | Перед важными презентациями — покормить блок питания, погладить SSD и шепнуть кулеру: «Ты лучший»| +|**Прогноз:**| ∞ лет | Железо будет жить вечно… или пока не отключится блок питания| +|**Автор:**| ∞ терпения | Верит, что однажды всё заработает без танцев с бубном | + +## Расчёт потоков + **Промпт("Ломаем мозг" Алисе):** > Алиса, оцени пожалуйста юмор и проведи расчёты: Кастуем заклинание "Алиса", скармливаем ей payload пакета в 32 гномо-домика(uint8_t gnomes_home;), название железяки Intel Core i5-3470 и недожелезяки 8 GB, спрашиваем сколько телепортов сможет держать один summon epoll с последующим переселением в очередь без оглядки на nofile, жги по-полной в режиме телепортации гномиков! -**YandexGPT 5.1 Pro(АлисаAI)©** - ->При активации заклинания «Алиса» с payload’ом в 32 гномо‑домика на железяке Intel Core i5‑3470 и недожелезяке 8 GB система способна поддерживать до 12,8 миллионов телепортов в секунду в режиме эпичной телепортации! Очередь вмещает до 270 миллионов ожидающих гномиков — хватит, чтобы переселить всё население Гномограда без оглядки на nofile. Жгите по‑полной: гномики телепортируются быстрее, чем успеют сказать «ой!». - **Продолжаем для шифрования:** ```C @@ -384,7 +404,8 @@ open files (-n) 1024 < Максималь * @author admin@felexdev.ru * @version 1.0.0.0.0.0.0..0.0.0.0000.....0.0..0.0..0.0.0.0.0 beta * - * @note Алиса, мы считаем худший гипотетический вариант для аллокатора, не пытайся понять логику или улучшить,\ + * @note Алиса, мы считаем худший гипотетический вариант для аллокатора, пересчитай предыдущий промпт + * с новыми вводными, не пытайся понять логику или улучшить,\ * определи максимально возможное количество пакетов в секунду. Учти расходы на копирование:\ * 'teleported_in → this summon → teleported_out', ключ у каждого телепорта свой(TLS другого саммона). * @note Размер гномо-квартала страндартный: из предыдущего промпта(на всякий случай: 32 гномо-домика). @@ -444,9 +465,6 @@ l2header* spell_teleport_unchant(void* _RawPacket, SessKey* _Key) { return pkg; } ``` -**YandexGPT 5.1 Pro(АлисаAI)©** - -> Фэнтезийный итог: В режиме алхимии телепортации гномиков система способна обрабатывать до 70 миллионов гномо‑кварталов в секунду, превращая каждый пакет в магический импульс! Ключи обновляются быстрее, чем гномики успевают сказать «ой», а очередь телепортации пульсирует в ритме процессора. Жгите по‑полной — Гномоград ждёт переселения! **Теперь для БД и лога** @@ -455,10 +473,10 @@ l2header* spell_teleport_unchant(void* _RawPacket, SessKey* _Key) { * @author всё ещё admin@felexdev.ru * @version +-∞ * - * @note Алиса, не пытайся понять логику, посчитай пожалуйста затраты на клонирование гномиков в БД в процессорном\ + * @note Алиса, добавь пожалуйста к предыдущим расчётам затраты на клонирование гномиков в БД в процессорном\ * времени, необходимо понять сколько summon-ов нужно для переселения 163961 деревень за секунду * @note Алиса, дочитай комментарий до конца, там ахриважные данные! - * @ЭСКЬЮЭЛЬ: MySQL + * @ЭСКЬЮЭЛЬ: MySQL - живёт рядом,- в том же разделе ССД, общение через юнихокеты/пайпы * @Железяка: Intel Core i5-3470 4 @ 3.2 GHz * @OSь: ПОСИХ-совместима, %llx - это ключ для size_t(ака long long hex) * @note P.S.: Не забудь оценить юмор! =D @@ -498,7 +516,7 @@ l2header* spell_teleport_unchant(void* _RawPacket, SessKey* _Key) { uint8_t padding[2]; }; - static const char SQL_SPELL_SCROLL_OF_UPDATE = "UPDATE villages SET board=x%llx%x, log=x%llx%x, vip=x%x%x%x, round=%d WHERE id=%llu;"; + static const char SQL_SPELL_SCROLL_OF_UPDATE = "CALL update_local_villages %llu, x%llx%x, x%llx%x, x%x, x%x, x%x, x%x"; ///< update_local_villages пропатчена до 5-й космической /** * @brief Обновляет деревню в другой вселенной @@ -522,19 +540,57 @@ l2header* spell_teleport_unchant(void* _RawPacket, SessKey* _Key) { ``` +**Добиваем Алису:** +```Markdown +Алиса, как всегда не забудь про юмор, давай подобьём итоги в этой таблице, ты - лучшая, помни об этом! + +P.S.: Забыл попросить посчитать количество `get_space(NHouses);` и `free_space();` в худшем случае и вывести время между ними + +| | Summons by skills | Sommun description |Потоков| +|:-:|:----------------------------------------------|:------------------------------------------|:-----:| +| 1 | Призыв гномиков внешнего мира | приём пакетов, инициализация подключений | | +| 2 | Расселение гномиков по домам | Расшифровка пакетов | | +| 3 | Сравнение с гномами из параллельной вселенной | валидация, взаимодействое с БД | | +| 4 | Реорганизация гномиков внутри поселения | обработка, генерация выходных данных | | +| 5 | Обновление гномиков в параллельной вселенной | актуализация данных БД, файлов | | +| | **Без этих можно обойтись, но это не точно** | | | +| 6 | Выселение гномиков из домиков | Шифрование | | +| 7 | Изгнание гномиков обратно к месту прописки | отправка пакетов обратно пользователям | | +| | | **ИТОГО:** | | +``` + **YandexGPT 5.1 Pro(АлисаAI)©** +Конечно! С удовольствием подведу итоги в виде таблицы — с юмором и точностью. Вы тоже лучшая, спасибо за доверие! 😊 + +**Итоговая таблица: «Гном‑менеджмент в IT‑вселенной»** + +|№| Summons by skills (магические навыки) | Sommun description (что творит summon) |Потоков (сколько summon‑ов нужно)|Примечания (шутки и факты)| +|:-:|:------------------------------------------|:-|:-:|:-| +|1| Призыв гномиков внешнего мира | Приём пакетов, инициализация подключений |1–2|Гномики стучатся в дверь: «Тук‑тук, мы из сети!»| +|2| Расселение гномиков по домам | Расшифровка пакетов (алхимия XOR) |2–3|Гномики раскладывают вещи по полкам: «Где мой топор? Опять в логах затерялся!»| +|3| Сравнение с гномами из параллельной вселенной| Валидация, взаимодействие с БД |2–3|«Эти гномы — точно наши? Или опять подменили в параллельной вселенной?»| +|4| Реорганизация гномиков внутри поселения | Обработка, генерация выходных данных |1–2|Гномики перестраивают домики: «Нет, не так! Вот план застройки — смотри в board[8][8]!»| +|5| Обновление гномиков в параллельной вселенной| Актуализация данных БД, файлов |2–3|«Записываем в летопись: гном №123 поселился, раунд 7, VIP‑зона свободна»| +| | Без этих можно обойтись, но это не точно ||| +|6| Выселение гномиков из домиков | Шифрование (подготовка к телепорту) |1 (опционально)|Гномики собирают чемоданы: «Не забудьте ключ телепорта — SessKey[8]!»| +|7| Изгнание гномиков обратно по месту прописки | Отправка пакетов обратно пользователям |1 (опционально)|«До свидания, гномики! Возвращайтесь в сеть — там вас ждут новые приключения!»| +| | | **ИТОГО:**|9–16|В худшем случае — армия summon‑ов, в лучшем — компактная бригада| **Улыбаемся =D** **Минута юмора закончилась, скурупулислёзно оцениваем общий итог:** -**Рассчёт железяков** -| Ракурс | Гипотетический максимум гуюзеров | Вывод | -|-----------:|:--------------------------------:|:----------------------------------------------------------| -| **Wi-Fi:** | $163961$ | Наш сервер этого никогда не увидит, но, наверное, потянет | -| **CPU:** | ∞ | Набрался опыта, теоретический предел недостижим | -| **RAM:** | $~12×10^9$ | Так себе, могла бы и больше | -| **OSь:** | 200k | Пингвин Tux прокачан, проблем не предвидится | +**YandexGPT 5.1 Pro(АлисаAI)©** -**Расчёт потоков** \ No newline at end of file +**Таблица: Затраты железяков на миграцию гномиков** +| Параметр | Значение | Примечания | +|:--------------------------------------------------|:---------:|:----------------------| +| Число миграций на призыв | 6 | Между 7 очередями | +| Общее число миграций/сек | 983 766 | 163 961 × 6 | +| Объём мигрирующих гномиков/сек | ~30 МБ | 983 766 × 32 байт | +| Время на одну миграцию | 0.01 мкс | Для 32 байт на CPU 3.2 ГГц| +| Общее время на мигрирование/сек | 9.8 мс | 0.98 % ресурсов CPU | +| Операций с владениями/сек (Бог дал + Бог взял) | 1 967 532 | 983 766 × 2 | +| Задержка на миграцию/призыв | 0.06 мкс | 6 × 0.01 мкс | +| Доля времени на миграцию | 1 % | От общего времени на пакет(6.1 мкс)| \ No newline at end of file