Qwen36-MTP-System-Power.md
· 3.8 KiB · Markdown
Bruto
```
📊 Quick Energy Impact Reference
Category Avg Power Draw Recommended BG Behavior
───────────────────────────────────────────────────────────────────────────
AI Inference 🔋🔋🔋🔋🔋 Throttle rate; pause when idle
3D Physics/Rigidbodies 🔋🔋🔋🔋🔋 Disable off-tab; hard stop
Multiplayer Netcode 🔋🔋🔋 Keep alive; reduce tick/packet rate
Video Decode/Encode 🔋🔋🔋🔋 Pause while hidden
Clipboard/OS Sync 🔋 Event-driven only
Background Audio 🔋 Safe to run continuously
Timers/State Stores 🔋 Negligible
```
Key Concepts for concurrency/execution options:
- call_deferred: Schedules a method to run at the end of the current frame/physics step. Good for safe scene tree manipulation, avoiding "node doesn't exist
yet" errors.
- await: Godot 4's async/await pattern. Replaces yield. Used for non-blocking waits (signals, timers, functions returning Future). Keeps main thread
responsive.
- Signals: Native Godot event system. Decouples systems, enables reactive UI/engine updates without polling. Essential for multi-tab state management.
- Threading (Thread/Callable.bind()/@thread_sync): For heavy CPU tasks (AI inference, network I/O) that shouldn't block the main thread.
- Process Modes (PROCESS_MODE_ALWAYS, INHERIT, PAUSE): Controls when nodes update across different UI states (modals, hidden tabs).
- State Machines / Context Managers: Managing tab switches, engine lifecycles, and background vs active states without race conditions.
Concurrency/execution Summary
- call_deferred: Scene Tree Safety
- await & Futures: Non-Blocking Execution
- Signals: Reactive State Management
- Threading + Main Thread Sync: Heavy Workloads
- Process Modes: Tab Visibility vs Runtime
Recommended Pattern for EnvoyOS
- Central EnvoyStateManager (RefCounted/Node) that tracks tab focus, engine contexts, and energy tiers.
- Use signals for all cross-module communication.
- await only for explicit async operations (configs, network handshakes).
- call_deferred or signals for scene tree edits during tab swaps.
- Threading for heavy computations; marshal results back via signals.
- Process modes tied to engine context (active/bg/off).
```
Tool Purpose When to Use in EnvoyOS
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
call_deferred() Schedules a method to run at the end of the current frame Safe scene tree edits during tab swaps, avoiding "node doesn't exist" or layout-calculation conflicts
await + Futures Non-blocking suspension until an event completes Loading configs, network handshakes, waiting for UI/engines to initialize without freezing the main thread
Signals Zero-polling, event-driven communication Decoupling tab focus from engine states, energy tier updates, cross-module notifications
Threading + @thread_sync Offload heavy CPU work off the main thread AI inference, video decoding, clipboard polling, VOIP packet processing
ProcessMode Controls when _process(), _physics_process(), and inputs run Tying engine runtime to tab visibility vs true background execution
```
📊 Quick Energy Impact Reference
Category Avg Power Draw Recommended BG Behavior
───────────────────────────────────────────────────────────────────────────
AI Inference 🔋🔋🔋🔋🔋 Throttle rate; pause when idle
3D Physics/Rigidbodies 🔋🔋🔋🔋🔋 Disable off-tab; hard stop
Multiplayer Netcode 🔋🔋🔋 Keep alive; reduce tick/packet rate
Video Decode/Encode 🔋🔋🔋🔋 Pause while hidden
Clipboard/OS Sync 🔋 Event-driven only
Background Audio 🔋 Safe to run continuously
Timers/State Stores 🔋 Negligible
Key Concepts for concurrency/execution options:
- call_deferred: Schedules a method to run at the end of the current frame/physics step. Good for safe scene tree manipulation, avoiding "node doesn't exist yet" errors.
- await: Godot 4's async/await pattern. Replaces yield. Used for non-blocking waits (signals, timers, functions returning Future). Keeps main thread responsive.
- Signals: Native Godot event system. Decouples systems, enables reactive UI/engine updates without polling. Essential for multi-tab state management.
- Threading (Thread/Callable.bind()/@thread_sync): For heavy CPU tasks (AI inference, network I/O) that shouldn't block the main thread.
- Process Modes (PROCESS_MODE_ALWAYS, INHERIT, PAUSE): Controls when nodes update across different UI states (modals, hidden tabs).
- State Machines / Context Managers: Managing tab switches, engine lifecycles, and background vs active states without race conditions.
Concurrency/execution Summary
- call_deferred: Scene Tree Safety
- await & Futures: Non-Blocking Execution
- Signals: Reactive State Management
- Threading + Main Thread Sync: Heavy Workloads
- Process Modes: Tab Visibility vs Runtime
Recommended Pattern for EnvoyOS
- Central EnvoyStateManager (RefCounted/Node) that tracks tab focus, engine contexts, and energy tiers.
- Use signals for all cross-module communication.
- await only for explicit async operations (configs, network handshakes).
- call_deferred or signals for scene tree edits during tab swaps.
- Threading for heavy computations; marshal results back via signals.
- Process modes tied to engine context (active/bg/off).
Tool Purpose When to Use in EnvoyOS
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
call_deferred() Schedules a method to run at the end of the current frame Safe scene tree edits during tab swaps, avoiding "node doesn't exist" or layout-calculation conflicts
await + Futures Non-blocking suspension until an event completes Loading configs, network handshakes, waiting for UI/engines to initialize without freezing the main thread
Signals Zero-polling, event-driven communication Decoupling tab focus from engine states, energy tier updates, cross-module notifications
Threading + @thread_sync Offload heavy CPU work off the main thread AI inference, video decoding, clipboard polling, VOIP packet processing
ProcessMode Controls when _process(), _physics_process(), and inputs run Tying engine runtime to tab visibility vs true background execution