aaa1b950b4
Per-process IO is now also a throughput metric (KiB/s), not just cumulative. Cumulative bytes favor long-lived processes regardless of activity; rate is what operators actually want for 'what is hammering the disk right now'. - New fields on ProcessInfo: io_read_rate_kbs, io_write_rate_kbs (Option<f64>; None when prev missing, current None, or dt<=0) - New method: io_total_rate_kbs() (sum; same None semantics) - New helper: compute_rate_kbs(prev, now, dt) -> Option<f64> uses saturating_sub for clock-reset safety - read_with_cpu_pct_sorted now also computes the two rate fields (negligible cost: 2 subs + 2 divs per process per refresh) - New SortMode variants: IoRate, IoReadRate, IoWriteRate inserted in cycle after IoWrite - name() returns 'IO/s', 'R/s', 'W/s' for status line - New sort_by_io_rate_field() helper (Option<f64> partial_cmp) - New format_rate_kbs() on ProcessInfo (KiB/s, MiB/s, GiB/s, TiB/s; saturates negative to 0) - New RATE column in the Process panel between IO and RSS Test count 87 -> 101 (+14): - 6 compute_rate_kbs edge cases (basic, None prev/now, dt<=0, saturating underflow, idle = zero) - 2 io_total_rate_kbs (sum, None) - 2 sort-by-rate (total, read-pushes-missing) - 4 format_rate_kbs (sub-KiB, 1 MiB, 1 GiB, negative) - sort_cycle and io_name_is_io updated for new variants Redox stripped binary: 4,168,552 bytes (+49 KiB from v1.24; 14 new tests + 2 sort modes + 2 fields + render column + 3 helpers). Compile warnings: 55 (unchanged). Docs: local/docs/redbear-power-improvement-plan.md \xC2\xA749