Skip to content

About

Lightweight macOS menu bar system monitor (CPU / GPU / memory / temperature / network)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

SysStats

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。

About

Lightweight macOS menu bar system monitor (CPU / GPU / memory / temperature / network)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages