-
Notifications
You must be signed in to change notification settings - Fork 17
Comparing changes
Open a pull request
base repository: lablup/all-smi
base: v0.18.0
head repository: lablup/all-smi
compare: v0.18.1
- 12 commits
- 102 files changed
- 2 contributors
Commits on Apr 7, 2026
-
refactor: migrate to Rust 2024 edition (#145)
* refactor: fix temporary value drop order for Rust 2024 compatibility Bind async results to explicit let variables before match expressions to ensure temporaries are dropped before MutexGuard and other locals with custom Drop impls, preventing drop order changes in Rust 2024. * refactor: rename gen variables for Rust 2024 keyword reservation Rename local variables named 'gen' to 'pcie_gen_value', 'generation', or 'generator' since 'gen' becomes a reserved keyword in Rust 2024. Use r#gen for external crate field access (amdgpu link.gen). * refactor: apply Rust 2024 edition auto-fixable changes - Change macro expr fragment specifiers to expr_2021 for forward compat - Convert if-let-else chains to match expressions (Rust 2024 requirement) - Remove unnecessary ref in if-let patterns - Add unsafe block inside unsafe fn body (Rust 2024 requirement) * chore: remove accidentally committed tmp.pb * refactor: switch Cargo.toml edition to 2024 Update edition from 2021 to 2024 and apply all resulting changes: - Collapse nested if-let blocks using Rust 2024 let-chain syntax - Reorder imports per Rust 2024 formatting rules - Fix indentation in let-chain expressions * refactor: fix ref mut in implicit borrowing patterns for Rust 2024 Remove explicit ref mut binding modifiers in patterns that already implicitly borrow through &mut references (Rust 2024 requirement). Also add tmp.pb to .gitignore.
Configuration menu - View commit details
-
Copy full SHA for 4b9a3f6 - Browse repository at this point
Copy the full SHA 4b9a3f6View commit details
Commits on Apr 8, 2026
-
feat: add DGX Spark (GB10) unified memory architecture support (#146)
* feat: add DGX Spark (GB10) unified memory architecture support Detect UMA on Blackwell-class GPUs where NVML memory_info() returns unavailable, and fall back to system memory from /proc/meminfo. Suppress misleading PCIe metrics for UMA devices and annotate device details with memory type and interconnect information. * fix: correct swapped total/used memory destructuring for UMA devices get_system_memory_for_uma() returns (total, used) but the NVML code path destructured it as (used, total), causing memory values to be swapped on GB10 systems. * fix: correct swapped total/used memory for discrete GPUs in NVML path The previous fix (af86da0) swapped the destructuring order to fix UMA devices but inadvertently broke discrete GPUs by binding m.used to total_memory and m.total to used_memory. Align the tuple elements with the (total_memory, used_memory) destructuring. * refactor: reduce redundant NVML calls for UMA detection Call memory_info() once per device per tick instead of 3 times. Cache the result and pass memory_total to is_uma_device_with_mem(). Remove redundant Memory Type insertion from hot path (already cached in device detail). * test: expand UMA coverage and extract is_uma_device_name helper Extract a pure `is_uma_device_name` function from the duplicated name-matching logic in `is_uma_device_with_mem` and the nvidia-smi fallback path, eliminating duplication and making the predicate directly testable. Add 10 new unit tests covering: - is_uma_device_name: gb10, dgx spark (case-insensitive), non-UMA GPUs, empty string - read_meminfo_memory: successful parse from a temp file, missing file - parse_meminfo_content: available > total saturating_sub, malformed lines
Configuration menu - View commit details
-
Copy full SHA for 976ac04 - Browse repository at this point
Copy the full SHA 976ac04View commit details -
feat: enrich chassis info with DMI data, thermal zones, and GPU power (…
…#148) * feat: enrich chassis info with DMI data, thermal zones, and GPU power - Read DMI fields (product name, vendor, board, version, BIOS) from /sys/class/dmi/id/ on Linux (no sudo required) - Read ACPI thermal zones for inlet/outlet board temperatures - Wire up chassis reader in API server data collection loop - Aggregate GPU power into chassis total_power_watts - Add all_smi_chassis_info Prometheus metric with DMI labels - Add inject_gpu_power helper for both TUI and API paths Closes #147 * fix: improve Prometheus label escaping and cache DMI data - Escape backslash and newline in Prometheus label values per spec (previously only double-quote was escaped) - Cache static DMI fields at GenericChassisReader construction time instead of re-reading /sys/class/dmi/id/ on every collection cycle * test: add tests for Prometheus label escaping and chassis DMI metrics Add unit tests for MetricBuilder label escaping (backslash, double-quote, newline) and ChassisMetricExporter covering the all_smi_chassis_info DMI labels metric, inlet/outlet temperature, no-DMI guard, and MetricPresenceFlags::all_present.
Configuration menu - View commit details
-
Copy full SHA for 7e75ec7 - Browse repository at this point
Copy the full SHA 7e75ec7View commit details -
fix: gate Linux-only chassis functions with cfg(target_os) to suppres…
…s macOS warnings DMI reading, thermal zone functions, and their tests are only applicable on Linux. Add #[cfg(target_os = "linux")] to prevent dead_code and unused_mut warnings on macOS and Windows builds.
Configuration menu - View commit details
-
Copy full SHA for e0863f6 - Browse repository at this point
Copy the full SHA e0863f6View commit details -
fix: reduce TUI rendering overhead for remote/SSH sessions
Two changes to reduce terminal output bandwidth: 1. Only enable fast animation ticks (200ms) when there are actual scroll animations running, not unconditionally in remote mode. Previously !is_local_mode always activated fast ticks, causing 200ms redraws even when no text was scrolling. 2. Increase SCROLL_UPDATE_FREQUENCY from 1 to 5, so marquee text updates every 500ms instead of every 100ms. This reduces the number of changed lines per frame by ~5x for multi-node views.
Configuration menu - View commit details
-
Copy full SHA for 2b5ee79 - Browse repository at this point
Copy the full SHA 2b5ee79View commit details -
fix: make TUI terminal flush non-blocking for SSH responsiveness
The root cause of keyboard lag over SSH: stdout.flush() is a blocking syscall that stalls the entire async event loop when the terminal pipe is congested. On slow SSH connections, flush can block for hundreds of milliseconds, during which keyboard events cannot be processed. Changes: - DifferentialRenderer now returns a byte buffer instead of writing directly to stdout, separating diff computation from I/O - Terminal write+flush is offloaded to spawn_blocking (fire-and-forget) so the event loop immediately returns to processing keyboard input - If a previous flush is still in progress, the current frame is skipped to prevent unbounded backpressure on slow pipes - Added flush_in_progress AtomicBool flag for lock-free coordination
Configuration menu - View commit details
-
Copy full SHA for da094a9 - Browse repository at this point
Copy the full SHA da094a9View commit details -
fix: drain pending key events after render to prevent input cascade
Reverts the spawn_blocking fire-and-forget approach which caused frame drops and unresponsive UI. Instead, keeps synchronous flush but adds event draining after each render cycle. The root cause of key buffering over SSH: flush blocks for hundreds of ms, during which key events accumulate in the channel. Previously, each queued event triggered its own render+flush cycle, creating a cascade where a single keypress during a slow flush led to multiple sequential re-renders. Now after each render, all pending terminal events are drained from the channel and batch-processed, followed by a single re-render. This eliminates the per-event render cascade.
Configuration menu - View commit details
-
Copy full SHA for 805aca4 - Browse repository at this point
Copy the full SHA 805aca4View commit details -
fix: eliminate 1-second per-frame stall caused by RuntimeEnvironment:…
…:detect() Root cause found: AppState::new() called RuntimeEnvironment::detect() which runs `systemd-detect-virt` (external process fork+exec) on every invocation. Since as_app_state() calls AppState::new() once per render frame, this added ~1 second of blocking per frame. - Add Default impl for RuntimeEnvironment (no detection, instant) - Change AppState::new() to use RuntimeEnvironment::default() instead of RuntimeEnvironment::detect() - RuntimeEnvironment::detect() is still called once at startup in main.rs and propagated via state; the per-frame as_app_state() copies the already-detected value from the snapshot Also fixes divide-by-zero panic in dashboard sparkline when available_width is 0.
Configuration menu - View commit details
-
Copy full SHA for 6dde26a - Browse repository at this point
Copy the full SHA 6dde26aView commit details -
update: increase marquee scroll speed now that frame stall is fixed
SCROLL_UPDATE_FREQUENCY 5 → 2 (scroll every 200ms instead of 500ms). The previous slowdown was a workaround for the RuntimeEnvironment::detect() stall which is now resolved.
Configuration menu - View commit details
-
Copy full SHA for 361c1ee - Browse repository at this point
Copy the full SHA 361c1eeView commit details -
fix: cache per-frame filesystem reads and remove detect() from tests
Audit found two additional hot-path performance issues: 1. cpu_renderer.rs: /.dockerenv existence check + up to 3 cgroup file reads executed on EVERY frame when per-core CPU view is enabled. Now cached in OnceLock (read once, reused forever). 2. ui/tabs.rs test helper: RuntimeEnvironment::detect() called in test fixture, adding ~1s per test run from systemd-detect-virt. Changed to RuntimeEnvironment::default(). Test suite speedup: lib 1.02s→0.28s, integration 1.02s→0.10s.
Configuration menu - View commit details
-
Copy full SHA for 7c73d56 - Browse repository at this point
Copy the full SHA 7c73d56View commit details -
fix: suppress macOS build warnings for Linux-only OnceLock and mut
- Use fully qualified std::sync::OnceLock in #[cfg(target_os = "linux")] static to avoid unused import on macOS - Add #[allow(unused_mut)] to dmi_detail in GenericChassisReader::new() since mutation is cfg-gated to Linux only
Configuration menu - View commit details
-
Copy full SHA for 9801279 - Browse repository at this point
Copy the full SHA 9801279View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6b3f142 - Browse repository at this point
Copy the full SHA 6b3f142View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.18.0...v0.18.1