Round 330: Perf-sched ext, Numastat ext, Vmstat ext, Dstat ext, Nmon ext (20 commands)

ober

708cb8a30ca0f9cf3f9ac1bf8d9afc28724da7f4

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index aae0efc..65aff01 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 330 — Perf-sched ext, Numastat ext, Vmstat ext, Dstat ext, Nmon ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `perf-sched-record` | :orange_circle: | Record scheduling events |
+| `perf-sched-latency` | :orange_circle: | Show scheduling latency |
+| `perf-sched-map` | :orange_circle: | Show scheduling map |
+| `perf-sched-replay` | :orange_circle: | Replay scheduling events |
+| `numastat-show` | :orange_circle: | Show NUMA statistics |
+| `numastat-process` | :orange_circle: | Process NUMA stats |
+| `numastat-node` | :orange_circle: | Node NUMA stats |
+| `numastat-detail` | :orange_circle: | Detailed NUMA stats |
+| `vmstat-show` | :orange_circle: | Show VM statistics |
+| `vmstat-disk` | :orange_circle: | Show disk statistics |
+| `vmstat-slab` | :orange_circle: | Show slab info |
+| `vmstat-active` | :orange_circle: | Show active/inactive memory |
+| `dstat-cpu` | :orange_circle: | CPU statistics |
+| `dstat-mem` | :orange_circle: | Memory statistics |
+| `dstat-disk` | :orange_circle: | Disk statistics |
+| `dstat-net` | :orange_circle: | Network statistics |
+| `nmon-interactive` | :orange_circle: | Interactive monitor |
+| `nmon-report` | :orange_circle: | Generate report |
+| `nmon-csv` | :orange_circle: | Export CSV |
+| `nmon-snapshot` | :orange_circle: | Take system snapshot |
+
 ### Round 329 — Pam ext, Sssd ext, Kerberos ext, Ldap ext, Nss ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 65c86f2..90c7e39 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -24547,4 +24547,50 @@
   (let* ((echo (app-state-echo app)))
     (echo-read-string echo "Group name: "
       (lambda (grp)
-        (echo-message! echo (str "NSS: looking up group " grp))))))
\ No newline at end of file
+        (echo-message! echo (str "NSS: looking up group " grp))))))
+
+;;; Round 330 — Vmstat ext, Dstat ext, Nmon ext (batch 2)
+
+(def (cmd-vmstat-slab app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vmstat: showing slab info")))
+
+(def (cmd-vmstat-active app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vmstat: showing active/inactive memory")))
+
+(def (cmd-dstat-cpu app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dstat: showing CPU statistics")))
+
+(def (cmd-dstat-mem app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dstat: showing memory statistics")))
+
+(def (cmd-dstat-disk app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dstat: showing disk statistics")))
+
+(def (cmd-dstat-net app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Dstat: showing network statistics")))
+
+(def (cmd-nmon-interactive app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nmon: launching interactive monitor")))
+
+(def (cmd-nmon-report app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Output file: "
+      (lambda (file)
+        (echo-message! echo (str "Nmon: generating report to " file))))))
+
+(def (cmd-nmon-csv app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Output file: "
+      (lambda (file)
+        (echo-message! echo (str "Nmon: exporting CSV to " file))))))
+
+(def (cmd-nmon-snapshot app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nmon: taking system snapshot")))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 841d25a..2a3e062 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -25248,3 +25248,49 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Kerberos: listing tickets")))
 
+;;; Round 330 — Perf-sched ext, Numastat ext, Vmstat ext, Dstat ext, Nmon ext (batch 1)
+
+(def (cmd-perf-sched-record app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Perf-sched: recording scheduling events")))
+
+(def (cmd-perf-sched-latency app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Perf-sched: showing scheduling latency")))
+
+(def (cmd-perf-sched-map app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Perf-sched: showing scheduling map")))
+
+(def (cmd-perf-sched-replay app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Perf-sched: replaying scheduling events")))
+
+(def (cmd-numastat-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Numastat: showing NUMA statistics")))
+
+(def (cmd-numastat-process app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PID: "
+      (lambda (pid)
+        (echo-message! echo (str "Numastat: stats for PID " pid))))))
+
+(def (cmd-numastat-node app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Node: "
+      (lambda (node)
+        (echo-message! echo (str "Numastat: stats for node " node))))))
+
+(def (cmd-numastat-detail app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Numastat: showing detailed statistics")))
+
+(def (cmd-vmstat-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vmstat: showing virtual memory statistics")))
+
+(def (cmd-vmstat-disk app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Vmstat: showing disk statistics")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 666427f..24cdd36 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -8347,4 +8347,25 @@
   (register-command! 'nss-hosts cmd-nss-hosts)
   (register-command! 'nss-passwd cmd-nss-passwd)
   (register-command! 'nss-group cmd-nss-group)
+  ;; Round 330
+  (register-command! 'perf-sched-record cmd-perf-sched-record)
+  (register-command! 'perf-sched-latency cmd-perf-sched-latency)
+  (register-command! 'perf-sched-map cmd-perf-sched-map)
+  (register-command! 'perf-sched-replay cmd-perf-sched-replay)
+  (register-command! 'numastat-show cmd-numastat-show)
+  (register-command! 'numastat-process cmd-numastat-process)
+  (register-command! 'numastat-node cmd-numastat-node)
+  (register-command! 'numastat-detail cmd-numastat-detail)
+  (register-command! 'vmstat-show cmd-vmstat-show)
+  (register-command! 'vmstat-disk cmd-vmstat-disk)
+  (register-command! 'vmstat-slab cmd-vmstat-slab)
+  (register-command! 'vmstat-active cmd-vmstat-active)
+  (register-command! 'dstat-cpu cmd-dstat-cpu)
+  (register-command! 'dstat-mem cmd-dstat-mem)
+  (register-command! 'dstat-disk cmd-dstat-disk)
+  (register-command! 'dstat-net cmd-dstat-net)
+  (register-command! 'nmon-interactive cmd-nmon-interactive)
+  (register-command! 'nmon-report cmd-nmon-report)
+  (register-command! 'nmon-csv cmd-nmon-csv)
+  (register-command! 'nmon-snapshot cmd-nmon-snapshot)
 )