docs: записать в бэклог план по видеокарте
Выбран приоритетный экран, а не листалка: устройство смотрится боковым зрением и должно само показывать то, что ближе к своему порогу. Совмещённый экран отвергнут по измерениям - вторая температура влезает только шрифтом 5x7, и смысл крупной цифры теряется. Отдельным пунктом записан опыт, который надо поставить до реализации: проверить, будит ли опрос дискретную видеокарту и не начнёт ли мониторинг сам расходовать батарею. Измеритель есть - датчик мощности разряда батареи, прав администратора он не требует. Записана и главная ловушка подхода: при близких к порогам показателях экран начнёт скакать между ними, нужна задержка переключения. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ed726f7fb6
commit
b15421305c
1 file changed
+84
-4
@@ -41,6 +41,9 @@
|
|||||||
|
|
||||||
Последний пункт — самый важный: он затрагивает смысл устройства, а не удобство.
|
Последний пункт — самый важный: он затрагивает смысл устройства, а не удобство.
|
||||||
|
|
||||||
|
**Для видеокарты выбран другой путь** — приоритетный экран без кнопки, см.
|
||||||
|
пункт 2. Листалка остаётся в силе для остального: памяти, батареи, сети.
|
||||||
|
|
||||||
### Что фактически доступно на этой машине
|
### Что фактически доступно на этой машине
|
||||||
|
|
||||||
Проверено перебором датчиков через `LibreHardwareMonitorLib` после установки
|
Проверено перебором датчиков через `LibreHardwareMonitorLib` после установки
|
||||||
@@ -80,7 +83,84 @@ NVIDIA отдаёт её через свой драйвер, ядро для э
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2. Обрезание строки при 100° и 100%
|
## 2. Мониторинг видеокарты: приоритетный экран
|
||||||
|
|
||||||
|
**Выбранный подход.** Не листалка, а **приоритетный экран**: плата сама
|
||||||
|
показывает то, что ближе к своему порогу. Греется видеокарта — показывает её,
|
||||||
|
в простое показывает процессор по умолчанию.
|
||||||
|
|
||||||
|
Обоснование: устройство стоит на столе и смотрится боковым зрением, от него
|
||||||
|
нужен ответ на один вопрос — «всё ли в порядке». Листалка заставляет либо жать
|
||||||
|
кнопку, либо ждать нужного экрана. Значок в углу при этом естественно
|
||||||
|
превращается в указатель, чьи данные показаны, и понадобится второй значок —
|
||||||
|
видеокарты.
|
||||||
|
|
||||||
|
Совмещённый экран отвергнут по измерениям: свободно 17 пикселей по ширине,
|
||||||
|
вторая температура влезет только шрифтом 5×7, и смысл крупной цифры теряется.
|
||||||
|
|
||||||
|
### Сторона агента
|
||||||
|
|
||||||
|
Работа одинакова для любого способа отображения и не ломает совместимость:
|
||||||
|
прошивка игнорирует незнакомые ключи, поэтому агента можно обновить раньше
|
||||||
|
прошивки.
|
||||||
|
|
||||||
|
- включить `IsGpuEnabled`;
|
||||||
|
- брать `Temperature/GPU Core` и `Load/GPU Core`;
|
||||||
|
- добавить в строку ключи `G=` (температура) и `GL=` (загрузка):
|
||||||
|
`T=67.0;L=34;G=61.0;GL=88`;
|
||||||
|
- **опрашивать видеокарту реже процессора**, примерно раз в 5 секунд (см. ниже).
|
||||||
|
|
||||||
|
Права администратора для видеокарты не нужны — NVIDIA отдаёт температуру через
|
||||||
|
свой драйвер, а не через MSR.
|
||||||
|
|
||||||
|
### Сторона прошивки
|
||||||
|
|
||||||
|
- **Свои пороги на каждый показатель.** У процессора 85/82. У ноутбучной
|
||||||
|
RTX 3050 Ti предел около 87, так что пороги будут другими — подобрать,
|
||||||
|
а не копировать.
|
||||||
|
- **Задержка переключения.** Главная ловушка подхода: когда оба показателя
|
||||||
|
близки к своим порогам, экран начнёт скакать между ними каждую секунду. Нужно
|
||||||
|
либо минимальное время удержания экрана (5–10 секунд), либо заметный отрыв
|
||||||
|
по «близости к порогу», при котором происходит переключение.
|
||||||
|
- **Свой буфер истории на каждый показатель** — по 72 байта, памяти достаточно.
|
||||||
|
- **Свой значок** для видеокарты, рядом с существующим значком процессора.
|
||||||
|
- **Устаревание по каждому ключу отдельно.** Если данных по видеокарте нет
|
||||||
|
дольше N секунд, её экран просто не участвует в выборе. Это же снимает вопрос,
|
||||||
|
что делать на машине без дискретной видеокарты: экран не появится никогда.
|
||||||
|
- **Сглаживание.** Температуру видеокарты усреднять так же, как процессорную,
|
||||||
|
но окно считать в замерах, а не в секундах: при опросе раз в 5 секунд окно
|
||||||
|
из 5 замеров даст 25 секунд, что слишком много. Вероятно, хватит 2–3.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2a. Сначала проверить: будит ли опрос видеокарту
|
||||||
|
|
||||||
|
**Выполнить до реализации.** У ноутбука переключаемая графика, и в простое
|
||||||
|
дискретная видеокарта уходит в сон. Опрос её датчиков может будить её и мешать
|
||||||
|
энергосбережению — то есть мониторинг начнёт сам расходовать батарею и греть
|
||||||
|
машину. Сейчас она отвечает (39 °C), значит не спит, но в глубоком простое
|
||||||
|
поведение будет другим.
|
||||||
|
|
||||||
|
**Как проверить.** Прямой измеритель уже есть: у батареи читается датчик
|
||||||
|
`Power/Charge/Discharge Rate` в ваттах, и права администратора для него не
|
||||||
|
нужны.
|
||||||
|
|
||||||
|
1. Отключить ноутбук от сети, оставить машину в простое, не трогать ввод.
|
||||||
|
2. Замер А: 10 минут писать мощность разряда **без** опроса видеокарты
|
||||||
|
(`IsGpuEnabled = false`), раз в 10 секунд.
|
||||||
|
3. Замер Б: 10 минут то же самое **с** опросом видеокарты раз в секунду.
|
||||||
|
4. Сравнить средние. Заодно записывать `GpuNvidia Power/GPU Package`: если при
|
||||||
|
опросе он перестаёт падать до нуля — видеокарта не засыпает.
|
||||||
|
|
||||||
|
**Что делать с результатом.** Разница в пределах шума — опрашивать раз в
|
||||||
|
секунду, как процессор. Разница заметная (скажем, больше половины ватта) —
|
||||||
|
оставить опрос раз в 5 секунд или реже и запомнить это решение здесь.
|
||||||
|
|
||||||
|
Оценка: около десяти минут работы плюс двадцать минут ожидания замеров.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Обрезание строки при 100° и 100%
|
||||||
|
|
||||||
При трёхзначной температуре и трёхзначной загрузке верхняя строка занимает 79
|
При трёхзначной температуре и трёхзначной загрузке верхняя строка занимает 79
|
||||||
пикселей из 72: `100` — 49 px, зазор 2, `100%` — 28 px. Лишние 7 пикселей
|
пикселей из 72: `100` — 49 px, зазор 2, `100%` — 28 px. Лишние 7 пикселей
|
||||||
@@ -96,7 +176,7 @@ NVIDIA отдаёт её через свой драйвер, ядро для э
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 3. Автозапуск не проверен перезагрузкой
|
## 4. Автозапуск не проверен перезагрузкой
|
||||||
|
|
||||||
Задание Планировщика `CPU Temp Agent` зарегистрировано с триггером «при входе в
|
Задание Планировщика `CPU Temp Agent` зарегистрировано с триггером «при входе в
|
||||||
систему», запускается вручную и работает. Живой перезагрузкой триггер не
|
систему», запускается вручную и работает. Живой перезагрузкой триггер не
|
||||||
@@ -107,7 +187,7 @@ NVIDIA отдаёт её через свой драйвер, ядро для э
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 4. Скрипт заливки
|
## 5. Скрипт заливки
|
||||||
|
|
||||||
Цикл «остановить агента → залить прошивку → запустить агента» делается тремя
|
Цикл «остановить агента → залить прошивку → запустить агента» делается тремя
|
||||||
командами вручную. Пока правок мало, это терпимо; если работа по экрану
|
командами вручную. Пока правок мало, это терпимо; если работа по экрану
|
||||||
@@ -118,7 +198,7 @@ NVIDIA отдаёт её через свой драйвер, ядро для э
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. Вес обзорного изображения
|
## 6. Вес обзорного изображения
|
||||||
|
|
||||||
`docs/promo.png` весит 2,1 МБ при исходниках примерно на 30 КБ. Сжатие до
|
`docs/promo.png` весит 2,1 МБ при исходниках примерно на 30 КБ. Сжатие до
|
||||||
300–500 КБ не ухудшило бы читаемость, но старый файл всё равно останется в
|
300–500 КБ не ухудшило бы читаемость, но старый файл всё равно останется в
|
||||||
|
|||||||
Reference in new issue
Block a user