Parallels Toolbox の System Monitor 風の、軽量なメニューバー常駐システムモニタ (macOS 14+ / Apple Silicon)。
- メニューバー: ネットワーク速度 / CPU / GPU / メモリ / CPU 温度 / ディスク空き容量 (表示する項目は選べる)
- ポップオーバー: CPU・GPU 使用率 (直近の推移付き)、メモリ (Swap)、CPU/GPU 温度とファン回転数、ディスク、ネットワーク
- 負荷の大きいアプリ: CPU / GPU / メモリの上位 5 件 (ヘルパープロセスは親アプリにまとめて表示)
scripts/build.sh # build/SysStats.app を作る
open build/SysStats.app
scripts/build.sh --install # /Applications にコピー (「ログイン時に起動」を使うならこちら)| 項目 | 取得元 |
|---|---|
| CPU | host_statistics(HOST_CPU_LOAD_INFO) |
| メモリ | host_statistics64(HOST_VM_INFO64) (アクティビティモニタの「使用済みメモリ」と同じ計算) |
| GPU 使用率 | IOKit IOAccelerator の PerformanceStatistics |
| 温度・ファン | AppleSMC (Tp*/Te* = CPU, Tg* = GPU, F0Ac = ファン) |
| ネットワーク | sysctl(NET_RT_IFLIST2) の en* の合計 |
| ディスク | 起動ボリュームの volumeAvailableCapacityForImportantUsage |
| アプリ別 CPU / メモリ | proc_pid_rusage (自分のユーザーのプロセスのみ) |
| アプリ別 GPU | IORegistry の GPU ユーザークライアントの AppUsage (全プロセス) |
root 権限や追加の許可は不要。そのため、アプリ別の CPU / メモリには root や他ユーザーのプロセス (WindowServer など) は含まれない。
- メニューバーは 1 枚のテンプレート画像として描画し、表示内容が変わったときだけ差し替える
- ポップオーバーの SwiftUI ビューと、アプリ別の使用量の計測 (1 回約 10ms) は開いている間だけ動かす
- 間引き: 温度は最短 4 秒、インターフェース情報は 30 秒、ディスク容量は 5 分ごと (ポップオーバーを開いたときは即時更新)
- 温度をどこにも表示していないとき (メニューバーで非表示かつポップオーバーが閉じている) は SMC を読まない
- SMC のキー一覧は起動時に 1 回だけ調べる
- 画面スリープ中は計測を止める
M4 Mac mini・更新間隔 2 秒で CPU 約 0.6% (1 コアあたり)、メモリ約 37MB。