Gets the most out of your graphics card — extending its life and bringing quiet to the room.
Raises performance, lowers heat output.
Version 0.9.2 · 2026-09-01
General · Status · The method · Modes · Requirements · KAIF
Every number above is read from the bench's own records (runs/graphics/*.json), two runs per state, alternated. Redraw it with node tools/build-comparison-card.mjs.
The run dashboard. The card carries its own readouts; the column reports the search. The window is fed by the run's pulse: when the run goes quiet for longer than it promised, the state line turns red and names the rung that was on the card at that moment. One click swaps the card for the tuning curve itself — stock, our line, the rungs that survived the stress test, the hang floors the engine honours, and the rung under test right now.
- Undervolting trades voltage for heat and noise. Every graphics card ships with a voltage guardband — a margin the vendor adds so the worst chip in the batch survives the worst conditions. Your chip is not the worst one, and your room is not the worst room. Part of that margin is yours to take back.
- Taking it back by hand means hours in a curve editor, one point at a time, with a stress test between every change. KAGO does that loop instead of you and writes down what it found.
- No third-party GUI is required, and none will be added. The card is driven through the driver's own command-line interface first, and through an in-house NVAPI bridge after that. MSI Afterburner is not a dependency of this project.
- Four modes ship — 🚀 Max Perfomance, ⚖️ Optimised, ❄️ Silent Cold, 🔄 Stock Default — each with its own definition of optimal. Each is a desktop shortcut, and a tray icon shows which one is live.
- Factory state is the default. Profiles live in the GPU's volatile memory. Crash the machine or simply reboot — the card comes back stock, and you do nothing.
Silicon differs from chip to chip. Between five identical cards of one model, the lowest safe voltage varies by as much as 70 mV — so a profile copied from someone else's card is not a shortcut, it is a guess with your hardware as the stake. KAGO ships the method, never someone else's numbers.
2026-09-25 — the method was turned around. Searching the voltage edge of every frequency through a machine failure yielded 5 edges of 389 in six weeks. By the owner's decision the project is done when the four modes are validated WHOLE — a curve from a model of this chip (the trend of the known edges) plus a margin per frequency band, checked under a mixed load and a week of real use — while deeper undervolting stays available step by step. Plan:
MASTER_PLAN.md, epicplans/101. The text below describes the state before the turn.
Four phases of six are closed, and the card has been measured. The research base, the architecture,
the test bench and KAGO's own bridge to the driver are done; the card runs undervolted and comes
back on command. The owner-facing shell is on the desktop too: four shortcuts apply through
pre-registered elevated tasks, the last verified apply is remembered and re-applied at logon through
the same gates, a passive tray icon shows the live mode (kill it — nothing happens to the card),
and the three working modes refuse honestly until phase 6 qualifies their numbers —
an unproven undervolt cannot be applied by a double-click. The search engine exists, judges a
candidate by three different load shapes at once and takes the worst verdict — and it has now found
this card's edge on live silicon: at the top of the range the card survives 870 mV and hangs the
machine at 865, reproduced on two adjacent frequencies in independent sittings. A hang is survivable
by design — the intent is written and fsync-ed before the first byte reaches the card, so the rung
that killed the machine names itself on the next launch — but since 2026-08-30 it is no longer
called a normal path. The owner's ruling: a hang is possible and tolerated, and it counts as OUR
failure in the fuse and the oracle; every one of them owes a defect analysis, and their number per
evening is a quality figure that must fall.
The undervolt is measured, not claimed. With the whole voltage/frequency curve raised and nothing offered above the clock the card already delivered, it draws 7.71 W (5.6 %) less and runs 5 °C cooler at exactly the stock clock — and no clock lock is used, so the card still boosts and still drops to idle speeds. One number from one pair of runs; two independent series are what will make it a result.
Every live sweep rides under an armed fuse — and here is exactly what that does and does not buy. A deadman judge in its own process listens to millisecond liveness beats from a driver probe; N ms of silence — the threshold derived from a measured floor under load, not invented — and it kills the burn (0.26 ms, syscall), returns the card to factory voltage in a detached hand that verifies by read-back, and stops the sweep before the next rung. Rehearsed end-to-end against the death of the WRITER: trip at 61 ms, load gone, stock confirmed.
🔴 What it does NOT catch, stated plainly because it was paid for. On 2026-08-30 the owner's machine hung mid-sweep and the fuse recorded zero trips. The judge is a process on the same OS: when the OS stops, the judge stops with it, and a deadman that shares fate with the patient cannot pronounce death. Everything it had been proved against was a simulated process death on the twin — and a twin cannot freeze its host, so that class was never merely untested, it was untestable on the stand where "proved" was pronounced. The prediction side is a different matter and is achievable: the machine recorded driver errors 110 seconds before it died. Work is tracked in the blocking epic — a guard must now declare, next to itself, the threat it exists for, what it was actually proved against, and the gap between the two, or the build reddens. The card also has a digital twin (the owner's term): a virtual card derived from this card's own measured dictionaries, deep enough to burn rungs, find edges and die by the machine's real death profiles — the seam inventory and device port are done, and the sweep engine is being assembled onto it so fuses and sweeps can be drilled with zero risk to the real machine.
The bench samples the card, loads it with KAGO's own CUDA workloads, watches the Windows event log, and returns a three-way verdict — PASS, SDC or CRASH — by comparing a run against a golden reference captured at stock. SDC is the one that matters: more than half of undervolting failures corrupt data before anything crashes, so "it did not fall over" is not a passing run. One command runs the whole phase-1 acceptance:
npm run phase1:acceptKAGO writes to the card, and the way back is executed rather than promised. One module owns every write; a profile is applied, re-read until two consecutive samples agree, and rolled back — the round trip has run on the live card. The card also has its own bridge now: KAGO talks to the NVIDIA driver API directly from Node, with no third-party GUI and no compiled binary, and reads the 128-point voltage/frequency curve.
The measurement it produced first is the one that licenses every other number: the meter's own run-to-run spread, taken over ten stock runs in two independent series — 1.28 W (0.65 %) on power. A difference thinner than that is not an effect, and the tool prints that sentence beside every delta it computes. The throughput half of that figure did not survive: measured across separate runs, the same stock workload varies 4.3 %, so performance is judged on the delivered clock, which is exact.
And the load matters more than the meter. A real path-traced game load drives this card to 300 W,
99 % and 77 °C. KAGO's original compute workload reached 137 W at the same reported utilization — half
the envelope — and read nothing from VRAM, so memory faults were invisible to it by construction. That
was the project's largest measured debt, and v0.9 pays it: the burn now holds the card at 305 W median
with the driver reporting sw_power_cap, moving ~5 TB through VRAM in ten seconds, at 75 °C. The
optimum turned out to be a blend — too little arithmetic and the cores stall on memory (207 W with more
traffic than the winner), too much and the memory pipe drains (229 W). Every unit it loads folds its
result into the same checksum, so a fault anywhere still moves the oracle's number.
npm run gpu:infoGPU NVIDIA GeForce RTX 5070 Ti
Driver / VBIOS 610.88 / 98.03.58.40.8b
Power limit 300.00 W (default 300.00 W)
Power range 250.00 … 300.00 W → only 50 W of headroom
Graphics clock 1050 MHz (max 3090 MHz)
Temperature 52 °C Perf state P5
Memory clocks 405, 810, 7001, 13801, 14001 MHz
Clock ladder 1651 points total, 389 per full rung, 180 … 3090 MHz (the edge search's space)
identical on all 4 full memory rungs — sweep the graphics clock once
Ladder step 7 MHz ×194, 8 MHz ×194 — measured on the 810 MHz memory rung.
This is the CLOCK grid. The VOLTAGE grid is 127 rungs, 450 … 1240 mV,
spaced 5 mV in 94 places and 10 mV in 32 — NOT uniform, read off the live curve.
That headroom line is the finding that shaped everything else. The driver will only move
the power ceiling from 300 W down to 250 W — 50 W. The targets this project was built for need two
to three times that, so power limiting alone was never going to be enough, and curve editing became
mandatory. The full reasoning is in researches/01; the
roadmap is in MASTER_PLAN.md; the current state is
STATUS.md.
The naive recipe — drop the voltage until it crashes, then step back one — is what most guides teach, and it has two holes that measurements close.
Hole one: a crash is not the first failure. In a study of 57 programs across four GPU generations, more than half failed silently before they ever crashed: the card kept drawing frames and returning answers, and the answers were wrong. A test that only watches for crashes walks straight through the corruption zone without noticing.
Hole two: the edge is a cliff, not a slope. For one program, the error rate went from 3 % to 90 % across two percent of voltage. Stopping at the last setting that passed leaves you standing on that cliff, where a warm afternoon or a heavier game is enough to push you off.
So KAGO does it differently:
| Step | What happens |
|---|---|
| Golden reference | The workload set runs at stock, and its outputs are stored. Everything later is compared against them — not against "looks fine". |
| Three-way verdict | Each trial ends as PASS, SDC (output changed, nothing crashed), or CRASH (driver TDR, WHEA, application death, BSOD). The middle column is the one that matters. |
| Bracket the edge | Coarse descent to first failure, then a binary search to locate it at grid resolution. The search never dwells at a failing point. |
| Add the margin | The shipped voltage sits one grid step above the last stable rung — above the voltage at which the frequency still worked, not above the failure point. The distinction matters: the edge is probabilistic, so the anchor is observed stability rather than an observed failure. |
| Diverse workloads | Branchy code and arithmetic-dense code fail differently, and the lowest safe voltage varies by ~100 mV between programs. A point's threshold is the worst result across the whole set, never the first one found. |
| Transients, not just load | Supply noise matters more than temperature here, so the hard test is rapid load changes — not a flat 100 % burn. |
| A burn that reaches the power limit | The trial load holds the card at its 300 W ceiling and moves terabytes through VRAM — measured 305 W median, the driver reporting sw_power_cap, against 233 W and zero memory traffic for the earlier load. A voltage proved under a third of the electrical stress a game applies is proved against the wrong load. |
| Recorded against the frequency that actually ran | A frequency cannot be ordered from the card: its own boost governor picks it, bounded by the curve, the power limit and temperature. Under a burn that reaches the power limit, the card answers a lower voltage by dropping the clock. So the tool measures which frequency the card actually ran at and records the voltage against that one. A verdict recorded against a frequency the burn never ran at is worse than no verdict. |
| Bind to the driver | Every profile records the driver and VBIOS it was proved against. A driver update invalidates it until re-validated. |
The measurements behind each of these are cited in
researches/02.
The owner split the original two profiles into four modes, each with its own objective. One mechanism serves them all — the whole voltage/frequency curve is raised, and only the placement of the clock ceiling differs — and none of them locks the clock: the card still boosts and still drops to idle speeds.
All four modes carry the SAME voltage vector. The search produces one thing — «frequency → the lowest safe voltage, plus 10 mV» across the whole curve — and a mode is that one vector plus a single handle. Max Perfomance and Optimised are near twins: they differ by the power limit and nothing else.
| Objective | Voltage vector | Power limit | Frequency ceiling | |
|---|---|---|---|---|
| 🚀 Max Perfomance | everything into speed; temperature is not a goal, fans may spin as fast as they like | the same | 300 W | none beyond the card's own maximum |
| ⚖️ Optimised | "almost the same as Max Perfomance" — but quiet (fans ≤ 60 %, ≈ 71 °C) and relatively cold, at FPS within 5 % | the same | 250 W | none beyond the card's own maximum |
| ❄️ Silent Cold | the MOST performance that fits under the temperature fans hold at 40 % — 59 °C, measured | the same | 250 W | yes, ~2800 MHz |
| 🔄 Stock Default | factory power limit and clocks in one click; the curve reset in this shortcut is being fixed | factory | factory | — |
Two iron rules the owner set: never drive the card above its own maximum (this die: 3090 MHz — the vendor's 2452 MHz boost figure is a floor, not a ceiling), and a profile is a vector of voltages, not a number of megahertz — it was that second confusion which let a ceiling be deleted without anyone seeing the consequence.
The prices are the owner's budgets, not inherited promises: the numbers this table will finally carry are measured on this die, and they are reported next to the meter's own run-to-run spread, because "no loss" measured with a blunt instrument is not a finding.
The fourth shortcut resets the card to factory settings, and all four write the remembered
state that is re-applied at logon — whichever you clicked last is what you come back to. The
passive tray icon shows which mode is live and nothing else — no menu, no buttons, and killing it
changes nothing on the card. The shortcuts and the tray wear one icon set, picked by the owner
from a rendered comparison: Microsoft's Fluent Emoji 3D (MIT), shipped in assets/icons/.
The shortcuts already sit on the desktop, and the shell around them is proven: every click ends in
a verified state — applied and re-read to agreement, or refused with nothing written. Optimised
was qualified on the previous graphics driver; its numbers are the ones in the image above, measured
by two alternated runs per state. After the driver update it waits for a new check and stays off until
then: a write proven on one driver is not applied on another. Max Perfomance and Silent Cold still ship as refusing
drafts — Max Perfomance has now been measured (the image above) but its acceptance is not
closed, and Silent Cold has no ceiling yet: its clock cap is being chosen by the fan speed it
lands on (target 40–50 %), which is a measurement nobody has taken on top of the tuned curve.
A double-click on a draft refuses out loud rather than apply an unproven undervolt. Beyond the shell,
what has been proven on this hardware: the driver gives writes back (power limit and clock lock,
each re-read to stability and rolled back); the card's power↔performance curve is measured across
ten points; the meter's own spread is 1.28 W; and KAGO's own NVAPI bridge reads the 128-point
voltage/frequency curve, whose voltage grid turned out to be 5 mV rather than the 6.25 mV folklore
assumes.
- Windows 11
- Node.js ≥ 18
- An NVIDIA GPU with a current driver. Developed against a GeForce RTX 5070 Ti; the method is general, the numbers are not.
- Administrator rights — the driver refuses clock and power writes without them.
Undervolting changes how your hardware is powered. Done carelessly it costs you a frozen screen, a failed benchmark run, or corrupted output you do not notice for months. KAGO is built to make that unlikely and always reversible, and it is still your card. MIT means no warranty, and that clause is not decoration.
The project runs under KAIF 2.8 — the author's framework for AI agents: external memory, autonomy made wider and better, and the discipline that keeps a claim of "it works" attached to an observation.
MIT © 2026 Mikalai Kryvusha (KOT KRINIK). See LICENSE.
Выжимает максимум из вашей видеокарты — продлевая ей жизнь, даруя тишину в комнате.
Повышает производительность, снижает тепловыделение.
Версия 0.9.2 · 2026-09-01
Общие сведения · Состояние · Методика · Режимы · Что нужно · KAIF
Каждое число выше прочитано из записей прибора (runs/graphics/*.json), по два замера на состояние, чередованием. Перерисовать: node tools/build-comparison-card.mjs.
Дашборд прогона. Показания карты живут на самой карте, справа — ход поиска края. Окно кормится пульсом прогона: если прогон молчит дольше, чем обещал, строка состояния краснеет и называет ступень, которая была на карте в этот момент. Один щелчок меняет карту на саму тюнинг-кривую — сток, нашу линию, ступени, выдержавшие стресс-тест, полы зависания, которые держит движок, и ступень под тестом прямо сейчас.
- Андервольтинг меняет напряжение на тепло и тишину. Каждая карта уезжает с завода с запасом по напряжению — производитель закладывает его так, чтобы худший чип в партии выжил в худших условиях. Ваш чип не худший, и комната у вас не худшая. Часть этого запаса можно забрать себе.
- Забирать руками — это часы в редакторе кривой, по одной частоте, со стресс-тестом после каждой правки. KAGO проходит этот цикл вместо вас и записывает, что нашёл.
- Сторонний GUI не нужен, и его тут не появится. Картой управляет сначала штатная утилита драйвера, а затем собственный мост к NVAPI. MSI Afterburner в зависимостях проекта нет.
- Режима четыре — 🚀 Max Perfomance, ⚖️ Optimised, ❄️ Silent Cold и 🔄 Stock Default, — и у каждого свой критерий оптимальности. Каждый лежит ярлыком на рабочем столе, а иконка в трее показывает, какой сейчас включён.
- Заводское состояние — состояние по умолчанию. Профиль живёт в энергозависимой памяти GPU. Упала система, просто перезагрузились — карта вернулась стоковой, и делать для этого ничего не надо.
Кремний у каждого чипа свой. У пяти одинаковых карт одной модели самое низкое безопасное напряжение расходится на 70 мВ — поэтому чужой профиль не короткий путь, а догадка, ставка в которой ваше железо. KAGO отдаёт методику, а не чужие числа.
2026-09-25 — метод развёрнут. Поиск края напряжения каждой частоты через отказ машины за шесть недель дал 5 краёв из 389. По решению владельца работа окончена, когда четыре режима проверены ЦЕЛИКОМ: кривая по модели этого кристалла (тренд известных краёв) плюс запас по полосам частот, проверенная смесью нагрузок и неделей обычного пользования; углубление андервольта остаётся доступным шаг за шагом. План —
MASTER_PLAN.md, эпикplans/101. Текст ниже описывает состояние до разворота.
Закрыты четыре фазы из шести, и карта измерена. Разведка, архитектура, испытательный стенд и
собственный мост KAGO к драйверу готовы; карта работает с пониженным напряжением и возвращается по
команде. Оболочка для владельца тоже стоит: четыре ярлыка применяют режим через заранее
зарегистрированные повышенные задачи, последнее проверенное применение запоминается и
восстанавливается при входе в систему через те же ворота, пассивная иконка в трее показывает
активный режим (убьёте её — с картой не случится ничего), а три рабочих режима честно отказывают,
пока фаза 6 не примет их числа, — недоказанный андервольт двойным кликом не применяется. Движок
поиска написан, судит кандидата сразу тремя разными формами нагрузки и берёт худший вердикт — и
край этой карты он уже нашёл на живом кремнии: наверху диапазона карта выдерживает 870 мВ и вешает
машину на 865, воспроизведено на двух соседних частотах в независимых заходах. Зависание здесь
переживаемо по устройству — намерение записывается и fsync-ится до первого байта в карту,
поэтому ступень, убившая машину, называет себя сама на следующем запуске, — но с 2026-08-30 оно
больше не называется штатным путём. Решение владельца: зависание возможно и допустимо, и оно
считается НАШИМ провалом в предохранителе и оракуле; каждое требует разбора, а их число за вечер —
показатель качества, который обязан падать.
Андервольт измерен, а не заявлен. Когда вся кривая «напряжение — частота» поднята, а выше той частоты, которую карта и так выдавала, не предлагается ничего, она берёт на 7,71 Вт (5,6 %) меньше и работает на 5 °C холоднее при ровно стоковой частоте — и никакой фиксации частоты при этом не применяется, так что карта по-прежнему разгоняется и по-прежнему сбрасывается на простое. Это одно число из одной пары прогонов; результатом его сделают две независимые серии.
Каждый живой прогон идёт под взведённым предохранителем — и вот что именно это даёт, а чего не даёт. Судья-deadman в отдельном процессе слушает миллисекундные удары живости от пробы драйвера; N мс тишины — порог выведен из измеренного пола под нагрузкой, не выдуман — и он убивает прожиг (0,26 мс, сисколл), возвращает карте заводское напряжение отдельной рукой с проверкой чтением и останавливает развёртку до следующей ступени. Отрепетировано конец-в-конец против смерти ПИСАТЕЛЯ: трип на 61 мс, нагрузка снята, сток подтверждён.
✅ А 2026-08-31 08:12 он сработал ВПЕРВЫЕ НА ЖИВОЙ КАРТЕ, и цепь спасения отработала целиком: тишина ударов 500,61 мс → прожиг убит → заводское напряжение возвращено и подтверждено чтением (остаточных смещений 0). Машина осталась жива. До этого дня у предохранителя было наблюдение только на двойнике; теперь оно есть там, где ходит владелец.
bugs/88, проверяется на двойнике.
Мы оставляем обе редакции видимыми намеренно: цена объяснения, назначенного без замера, — это то,
что проект платит и записывает, а не прячет.
🔴 Чего он НЕ ловит — сказано прямо, потому что за это заплачено. 2026-08-30 машина владельца
зависла посреди прогона, и предохранитель записал ноль трипов. Судья — процесс на той же ОС:
встала ОС — встал судья, а deadman, делящий судьбу с пациентом, смерть пациента не констатирует.
Всё, против чего он был доказан, — это смоделированная смерть процесса на двойнике, а двойник по
построению не может заморозить свой хост: класс был не просто не проверен, он был недоказуем на том
стенде, где произносилось слово «доказан». Сторона предсказания — другое дело, но её обещание пришлось
исправить замером 31.08: «за 110 секунд» оказалось временем до ПЕРЕЗАГРУЗКИ ВЛАДЕЛЬЦА, а не до
смерти машины (Kernel-Power/41 штампуется при следующей загрузке). Настоящее окно между криком
драйвера и последним fsync-нутым вздохом наших приборов — 0,134 секунды, и оно отрицательное:
сэмплер замолчал раньше, чем драйвер закричал. На другой смерти того же архива окно было настоящим
и составило 28 секунд, поэтому канал драйвера всё же получил голос — но обещание теперь звучит
измеримо: он успевает в двух смертях из четырёх. Работа идёт в блокирующем эпике —
сторож обязан теперь объявить рядом с собой угрозу, против чего он доказан на самом деле и зазор
между этими двумя, иначе сборка краснеет.
🔴 И самая крупная поправка, купленная 08.09 четырьмя смертями машины за день. Предохранитель сторожит ПРОЖИГ. А машина, как выяснилось, умирает в ПАУЗЕ между прожигами — на записи следующего, более глубокого напряжения, до всякой нагрузки. Четыре смерти дня имеют в журнале упреждающей записи одну и ту же форму: прожиг прошёл, вердикт записан, следом записано намерение на 900…925 мВ — и смерть, вердикта нет; разрыв 2…10 секунд. Для одной из них это доказано двумя независимыми приборами (потактная запись показала, что прожиг после того намерения не стартовал ни разу, а дамп ядра назвал модуль — обращение по неверному адресу внутри драйвера NVIDIA); три остальные совпадают формой журнала, и свидетеля у них нет — это названо, а не замазано. Механизм не назван: «смерть приходит после записи» ещё не значит «запись убивает». Под этот вопрос построен новый прибор — чёрный ящик ЗАПИСИ, две строки на диск вокруг каждого обращения в драйвер: незакрытый вызов и есть отпечаток «ушёл и не вернулся». Прежде наш самый мелкий след был в восемьдесят раз крупнее искомого события, потому что одна ступень — это до 79 обращений подряд, а журнал писал одно намерение на всю ступень.
🔴 09.09: машина зависла снова, и все ЧЕТЫРЕ входа оказались слепы ПО ПОСТРОЕНИЮ — это главное, что проект знает о своём предохранителе сегодня. Смерть случилась на 3090 МГц / 900 мВ, между ступенями, до всякой нагрузки. Кольцо чёрного ящика говорит поимённо: вход 1 видел идеальные удары (зазор 0,01…2,4 мс — драйвер ОТВЕЧАЛ на опрос, встала карта); вход 2 не имел источника ни одного такта из 20 546 (прожига не было — нечему стучать); вход 3 к тому дню разоружён, потому что у его порога не осталось родословной. Общий корень: ни один вход не спрашивает САМУ КАРТУ, считает ли она. Три спрашивают наши процессы, четвёртый — драйвер о его показаниях.
Из этого выросли две вещи. Вход 4 — «карта перестала обновлять телеметрию»: единственная величина, которая ту смерть видела. Обе стороны измерены — здоровье 515 мс на 95 000 тактов настоящей работы против 44 726 мс одной площадкой в кольце смерти, разрыв в 87 раз; порог взят от потолка здоровья, а не из середины разрыва. И матрица отказов — перечисление сценариев, где для каждого записано, что видит каждый вход и кто обязан сработать; сценарий, которого не ловит никто, называется ДЫРОЙ вслух и роняет сборку. Она окупилась на первом же прогоне дважды: назвала дыру той смерти и тут же покраснела на трёх ЗДОРОВЫХ сценариях, поймав, что фикстуры держали мощность константой — то есть описывали мёртвую карту и называли её здоровой.
Этот пятый вход построен и измерен 9 сентября — он называется канарейкой. Отдельный процесс со своим контекстом посылает карте ядро в один блок каждые 5 миллисекунд, ждёт ответа неблокирующим опросом и стучит судье, когда карта работу завершила. Поток создаётся с наивысшим приоритетом, который карта даёт (диапазон у неё спрошен: шесть уровней). На холостой карте доставлено 2001 удар из 2001 в каждом из трёх прогонов. Под настоящим горном, держащим карту на 300 ваттах, доставка та же — 18 001 из 18 001, — а медиана паузы между ударами не сдвинулась вовсе: 5,000 миллисекунды против 5,000 на холостой. Это и есть проверка приоритета: без него канарейка стояла бы в очереди за запусками горна по 280 миллисекунд.
Из худшей паузы под полной нагрузкой — 11,3 миллисекунды — выведена уставка тем же правилом, каким выведен четвёртый вход: 34 миллисекунды против прежних полутора секунд, то есть в 44 раза быстрее. Канарейка стоит прожигу 2,93 процента пропускной способности; контрольная сумма при этом совпала во всех прогонах, то есть вердикт стабильности не сдвинулся.
И следствие, которое важнее самой цифры: узкое место переехало с обнаружения на спасение. Раньше глаза стоили полторы секунды против четверти секунды на руки — руки были мелочью. Теперь 34 миллисекунды против 282: девять десятых времени спасения тратят руки. Заказанные миллисекунды достигнуты на входе и пока не достигнуты по всему пути. Уставка остаётся кандидатом: она снята за один вечер на одной форме нагрузки, а как ведёт себя опрос на действительно вставшей карте — ещё не наблюдалось, и до этого наблюдения вход не взводится.
Что из этого починено в ночь на 31.08 — три вещи, и границы каждой названы. Чёрный ящик судьи пишет теперь строку жизни раз в секунду с немедленным сбросом на диск: после смерти без штатного закрытия на диске остаётся след последних секунд, тогда как 30 августа не осталось ничего. Тем же способом починена проба драйвера: её журнал писал только аномалии и потому не отличал «аномалий не было» от «проба умерла». И у оракула появился накопитель: 30 августа он сообщил о подстое пять раз, и ни один сигнал не имел права ни на что повлиять — теперь три подстоя за прогон останавливают полосу, а два подстоя у самого стока (там, где андервольта нет вовсе, то есть речь о здоровье машины) останавливают её раньше. Порог не выдуман: за всю историю архива подстоев было пять, и все пять — в день смерти машины; на здоровых прогонах их ноль. 🔴 Чего это НЕ означает: сброс на диск доказан против смерти ПРОЦЕССА, а не машины — стенд не умеет убить ОС, и мутация, снимающая сброс, проходит зелёной. Доказано свойство «улика переживает отсутствие штатного закрытия», а не «улика переживает зависание хоста». Разница записана прямо в коде рядом со сторожем, а не только здесь. У карты есть и цифровой двойник (термин владельца): виртуальная карта, выведенная из измеренных словарей именно этого экземпляра, — достаточно глубокая, чтобы жечь ступени, находить края и умирать по настоящим профилям смертей этой машины; опись швов и порт устройства готовы, движок развёртки собирается на двойника, чтобы предохранители и развёртки репетировались с нулевым риском для живой машины.
Стенд снимает телеметрию, грузит карту своими ядрами на CUDA, читает журнал Windows и выносит вердикт из трёх — PASS, SDC или CRASH, — сверяя прогон с эталоном, снятым на заводских настройках. Важен средний: больше половины отказов от андервольта портят данные раньше, чем что-нибудь упадёт, поэтому «не свалилось» — это не пройденный прогон. Вся приёмка первой фазы идёт одной командой:
npm run phase1:acceptKAGO пишет в карту, и обратная дорога не обещана, а пройдена. Записывает один-единственный модуль; профиль применяется, перечитывается до совпадения двух проб подряд и откатывается — круговой рейс прогнан на живой карте. И у карты теперь есть свой мост: KAGO разговаривает с драйвером NVIDIA напрямую из Node, без стороннего GUI и без единого скомпилированного бинарника, и читает кривую «напряжение — частота» из 128 точек.
Первым же замером он выдал число, которое даёт право на все остальные: собственный разброс прибора между прогонами — десять стоковых прогонов двумя независимыми сериями, 1,28 Вт (0,65 %) по мощности. Разница тоньше этой — не эффект, и инструмент печатает эту фразу рядом с каждой дельтой, которую считает. А вот половина этой цифры про производительность не выжила: между отдельными прогонами одна и та же стоковая нагрузка расходится на 4,3 %, поэтому производительность судится по выданной частоте — она точна.
И нагрузка важнее прибора. Настоящая игровая нагрузка с путевой трассировкой загоняет эту карту в
300 Вт, 99 % и 77 °C. Прежняя вычислительная нагрузка KAGO давала 137 Вт при той же заявленной
загрузке — половина конверта — и не читала из видеопамяти ни байта, то есть отказы памяти были ей
невидимы по построению. Это был самый крупный измеренный долг проекта, и версия 0.9 его закрывает:
прожиг держит карту на 305 Вт медианы при sw_power_cap от драйвера, прогоняя около 5 ТБ через
видеопамять за десять секунд, при 75 °C. Оптимум оказался смесью: мало арифметики — ядра стоят в
ожидании памяти (207 Вт при трафике БОЛЬШЕМ, чем у победителя), много — сохнет конвейер памяти
(229 Вт). Каждый нагруженный блок складывает результат в ту же контрольную сумму, поэтому отказ любого
из них по-прежнему двигает число оракула.
npm run gpu:infoGPU NVIDIA GeForce RTX 5070 Ti
Driver / VBIOS 610.88 / 98.03.58.40.8b
Power limit 300.00 W (default 300.00 W)
Power range 250.00 … 300.00 W → only 50 W of headroom
Graphics clock 1050 MHz (max 3090 MHz)
Temperature 52 °C Perf state P5
Memory clocks 405, 810, 7001, 13801, 14001 MHz
Clock ladder 1651 points total, 389 per full rung, 180 … 3090 MHz (the edge search's space)
identical on all 4 full memory rungs — sweep the graphics clock once
Ladder step 7 MHz ×194, 8 MHz ×194 — measured on the 810 MHz memory rung.
This is the CLOCK grid. The VOLTAGE grid is 127 rungs, 450 … 1240 mV,
spaced 5 mV in 94 places and 10 mV in 32 — NOT uniform, read off the live curve.
Строка про запас и определила всё остальное. Потолок мощности драйвер двигает только с
300 Вт до 250 Вт — на 50 Вт. Цели, ради которых проект затевался, требуют в два-три раза больше,
так что одним потолком мощности их было не взять никогда, и правка кривой стала обязательной. Весь
разбор — в researches/01, дорожная карта — в
MASTER_PLAN.md, текущее состояние — в STATUS.md.
Наивный рецепт — «снижай напряжение, пока не упадёт, потом шаг назад» — ему учит большинство руководств, и в нём две дыры, которые закрываются измерениями.
Дыра первая: крах — не первый отказ. В исследовании 57 программ на четырёх поколениях карт больше половины отказывали молча, ещё до всякого краха: карта продолжала рисовать кадры и возвращать ответы, и ответы были неверные. Тест, который следит только за крахом, проходит зону порчи данных насквозь и не замечает её.
Дыра вторая: у края обрыв, а не склон. У одной программы вероятность ошибки выросла с 3 % до 90 % на двух процентах напряжения. Остановиться на последней прошедшей настройке — это встать ровно на обрыв, с которого хватит тёплого дня или игры потяжелее.
Поэтому KAGO делает иначе:
| Шаг | Что происходит |
|---|---|
| Золотой эталон | Набор нагрузок прогоняется на стоке, выходы сохраняются. Всё дальнейшее сравнивается с ними, а не с «вроде нормально». |
| Трёхзначный вердикт | Каждая проба заканчивается как PASS, SDC (выход изменился, ничего не упало) или CRASH (сброс драйвера, WHEA, гибель приложения, BSOD). Средняя графа и есть главная. |
| Взять край в вилку | Грубый спуск до первого сбоя, затем бинарный поиск края по сетке. На сбойном напряжении поиск не задерживается. |
| Добавить запас | Отгружаемое напряжение стоит на один шаг сетки выше последней стабильной ступени — не выше порога сбоя, а выше того напряжения, на котором частота ещё работала. Разница существенна: край вероятностен, и якорем служит наблюдённая устойчивость, а не наблюдённый отказ. |
| Разные нагрузки | Ветвистый код и счётный отказывают по-разному, а самое низкое безопасное напряжение гуляет между программами на ~100 мВ. Порог ЧАСТОТЫ — худший результат по всему набору, а не первый найденный. |
| Переходы, а не просто нагрузка | Шум питания тут значит больше температуры, поэтому тяжёлый тест — это быстрая смена нагрузки, а не ровные 100 %. |
| Прожиг, упирающийся в предел мощности | Испытательная нагрузка держит карту на её потолке в 300 Вт и гоняет терабайты через видеопамять — замерено 305 Вт медианы при sw_power_cap от драйвера, против 233 Вт и нулевого трафика памяти у прежней. Напряжение, доказанное при трети той электрической нагрузки, что даёт игра, доказано не тем. |
| Замер пишется на ту частоту, которая была | Частоту у видеокарты заказать нельзя: её выбирает собственный регулятор буста, ограниченный кривой, пределом мощности и температурой. Под предельным прожигом карта отвечает на снижение напряжения снижением частоты. Поэтому инструмент измеряет, на какой частоте карта реально шла, и записывает напряжение против неё. Вердикт о частоте, на которой прожиг не шёл, хуже, чем отсутствие вердикта. |
| Привязка к драйверу | Профиль записывает драйвер и VBIOS, на которых был доказан. Обновление драйвера делает его недействительным до перепроверки. |
Измерения под каждым пунктом названы в
researches/02.
Владелец расщепил прежние два профиля на четыре режима, у каждого — свой критерий оптимальности. Механизм при этом один: поднимается вся кривая «напряжение — частота», а различает режимы только место потолка частоты. И ни один из них не фиксирует частоту — карта по-прежнему разгоняется и по-прежнему сбрасывается на простое.
Все четыре режима несут ОДИН И ТОТ ЖЕ вектор напряжений. Поиск даёт одну вещь — «частота → минимальное безопасное напряжение плюс 10 мВ» по всей кривой, — а режим это тот самый вектор плюс одна ручка. Max Perfomance и Optimised — почти близнецы: различает их лимит мощности и больше ничего.
| Цель | Вектор напряжений | Лимит мощности | Потолок частоты | |
|---|---|---|---|---|
| 🚀 Max Perfomance | всё в скорость; температура не цель вовсе, вертушки крутятся сколько угодно | тот же | 300 Вт | нет, кроме железного максимума карты |
| ⚖️ Optimised | «почти то же самое, что Max Perfomance» — но тихо (вентиляторы ≤ 60 %, ≈ 71 °C) и относительно холодно, при FPS не ниже 95 % | тот же | 250 Вт | нет, кроме железного максимума карты |
| ❄️ Silent Cold | МАКСИМУМ производительности, помещающийся под температуру, которую держат вентиляторы на 40 % — 59 °C, замерено | тот же | 250 Вт | есть, ~2800 МГц |
| 🔄 Stock Default | заводские мощность и частота в одном клике; сброс кривой в этом ярлыке — в починке | заводской | заводской | — |
Два железных правила владельца: никогда не гнать карту выше её собственного максимума (у этого экземпляра 3090 МГц — паспортные 2452 МГц это нижняя граница, а не потолок) и профиль это вектор напряжений, а не число мегагерц — именно вторая путаница позволила однажды молча удалить потолок, не увидев последствий.
Цены в таблице — бюджеты владельца, а не унаследованные обещания: числа, которые она в итоге понесёт, измеряются на этом кристалле и приводятся рядом с собственным разбросом прибора, потому что «потери нет», снятое тупым инструментом, находкой не является.
Четвёртый ярлык возвращает карту к заводским настройкам, и все четыре записывают запомненное
состояние, которое восстанавливается при входе в систему, — куда кликнули последним, туда и
вернётесь. Пассивная иконка в трее показывает активный режим и больше ничего — ни меню, ни кнопок,
а её гибель карту не трогает. Ярлыки и трей носят один набор иконок, выбранный владельцем по
отрендеренному сравнению: Fluent Emoji 3D от Microsoft (MIT), едет в репозитории в assets/icons/.
Ярлыки уже лежат на рабочем столе, и оболочка вокруг них доказана: каждый клик заканчивается
проверенным состоянием — применено и перечитано до совпадения, либо отказано, не записав ничего.
Optimised прошёл приёмку на прежнем драйвере видеокарты — его числа те, что на картинке выше,
сняты двумя чередующимися замерами на каждое состояние. После обновления драйвера режим ждёт новой
проверки и до неё не включается: запись, доказанная на одном драйвере, на другом не применяется. Max Perfomance и Silent Cold
по-прежнему отгружены честными черновиками: Max Perfomance теперь измерен (та же картинка), но
приёмка его не закрыта, а у Silent Cold ещё нет потолка — его подбирают по оборотам вентилятора, на
которые режим садится (цель 40…50 %), и этого замера поверх тюнинг-кривой ещё никто не делал.
Двойной клик по черновику отказывает вслух, вместо того чтобы применить недоказанный андервольт. Что на
этом железе доказано помимо оболочки: драйвер отдаёт записи назад (потолок мощности и фиксация
частоты, каждая перечитана до устойчивости и откачена); кривая мощность↔производительность снята по
десяти точкам; собственный разброс прибора — 1,28 Вт; а свой мост к NVAPI читает кривую из 128
точек, и шаг её сетки оказался 5 мВ, а не 6,25 мВ, как гласит фольклор.
- Windows 11
- Node.js ≥ 18
- Видеокарта NVIDIA со свежим драйвером. Разрабатывается на GeForce RTX 5070 Ti: методика общая, числа — нет.
- Права администратора: без них драйвер не примет запись частот и мощности.
Андервольтинг меняет то, как питается ваше железо. Сделанный небрежно, он стоит замёрзшего экрана, сорванного прогона или испорченных данных, которых вы полгода не заметите. KAGO построен так, чтобы это было маловероятно и всегда обратимо, — и карта всё равно ваша. MIT означает отсутствие гарантий, и это не украшение текста.
Проект живёт под KAIF 2.8 — авторским фреймворком для ИИ-агентов: внешняя память, расширенная и улучшенная автономия и дисциплина, которая держит заявление «работает» привязанным к наблюдению.
MIT © 2026 Николай Кривуша (КОТ КРИНИК). См. LICENSE.


