[enhancement] Ограничить частоту autosave при интенсивном пушечном огне #7

Closed
opened 2026-10-29 11:44:23 +00:00 by chexit · 1 comment
Owner

Проверено чтением 90379f6: контрольная сумма состояния теперь правильно учитывает боезапас, но любое изменение bursts приводит к сериализации всего состояния и вызову storage::set() в конце тика. У одной пушки очереди идут раз в 2 тика; несколько стреляющих со сдвигом установок могут инициировать сохранение на каждом тике (до 20 раз/с).

Это потенциальная лишняя нагрузка на сериализацию/WASM-host/storage; падение FPS или задержки диска не измерялись.

Предложение: накапливать dirty и сохранять с ограниченной частотой (например, раз в 0.5–1 с), обеспечив принудительное сохранение при закрытии/смене мира и явной команде сохранения. Не откладывать повтор после ошибки бесконечно. Добавить счётчики save calls/bytes/time до и после изменения.

Код:

// Damage is saved too: a destroyed system stays destroyed. So are where the units stand

Критерий: при непрерывном огне частота сохранений ограничена; после перехода в другой мир/нормального выхода загружается актуальное состояние; отказ хранилища не теряет dirty.

Проверено чтением `90379f6`: контрольная сумма состояния теперь правильно учитывает боезапас, но любое изменение `bursts` приводит к сериализации всего состояния и вызову `storage::set()` в конце тика. У одной пушки очереди идут раз в 2 тика; несколько стреляющих со сдвигом установок могут инициировать сохранение на каждом тике (до 20 раз/с). Это потенциальная лишняя нагрузка на сериализацию/WASM-host/storage; падение FPS или задержки диска не измерялись. Предложение: накапливать dirty и сохранять с ограниченной частотой (например, раз в 0.5–1 с), обеспечив принудительное сохранение при закрытии/смене мира и явной команде сохранения. Не откладывать повтор после ошибки бесконечно. Добавить счётчики save calls/bytes/time до и после изменения. Код: https://gitea.maoniao.team/chexit/airdef/src/commit/90379f6/airdef-mod/src/lib.rs#L1029 Критерий: при непрерывном огне частота сохранений ограничена; после перехода в другой мир/нормального выхода загружается актуальное состояние; отказ хранилища не теряет dirty.
chexit added the area:persistenceneeds:profilingpriority:P2type:performance labels 2026-10-29 12:56:59 +00:00
Author
Owner

🤖 Agent: исправлено в https://gitea.maoniao.team/chexit/airdef/commit/e08fc65 (запушено в main).

🤖 Agent: исправлено в https://gitea.maoniao.team/chexit/airdef/commit/e08fc65 (запушено в main).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#7