Windows 10 / 11 常駐ツール

あのカクつき、原因を突き止めたい

StallScope は、症状が出る前から回り続けて証拠を残す常時監視ツール。1 秒ごとに 187 項目を記録し、画面が実際に固まった瞬間をミリ秒で測る。あとは、思い当たった時刻のレポートを出すだけ。

固まってからタスクマネージャを開いても、もう遅い

「たまにマウスがカクつく」「一瞬だけ固まる」たぐいの症状には、共通の厄介さが 2 つある。どちらも道具の問題ではなく、調べ始める時刻の問題になっている。

  • いつ

    調べる頃には終わっている

    数秒で復帰する症状は、タスクマネージャを開き終えた頃には痕跡が消えている。残っているのは記憶だけで、再現待ちで張り付くしかなくなる。

  • なに

    平均値には出ない

    固まっている数秒の間だけ、ディスクの遅延とキュー長が跳ねる。その間の CPU もメモリも GPU も正常値のままなので、平均や「現在値」を見ていると何も起きていないように見える。1 分の平均に均した時点で、その数秒は消える。

だから StallScope は「軽くて綺麗な監視ツール」ではない。症状が出る前から回っていて、後から証拠が残っていることだけを目的に作ってある。

機能

設計はすべて、上の 2 つの厄介さから逆算している。

  • 固まったことを直接測る

    性能カウンタはすべて「原因の候補」でしかない。StallScope は監視スレッド自身の起床遅延を測っていて、これだけが「実際に止まったかどうか」を答えている。既定では 200ms を超えた時点でストールとして台帳に残る。

  • 集計値に潰さない

    コアごと・ドライブごとの値を、それぞれ独立した列として全部記録する。「いちばん大きい 1 個だけ保存」では、後から分布を復元できない。1 コアだけ張り付いた状態は _Total の列には出てこない。

  • 症状が出ている最中に開ける画面

    直近 1 時間をメモリ上のリングバッファから描くので、画面を開いてもディスクを読まない。固まっている最中に数日分のログを読み始めるのでは本末転倒になる。

  • 通知領域のアイコンが計測値そのもの

    棒 1 本が 12 秒、5 本で直近 1 分。高さはその区間の最悪の起床遅延で、閾値を超えた棒は赤くなる。赤い棒は 1 分残るので、席を外していた間に起きた分も戻ってきたときに見える。

  • 異常区間・要因ランキング・プロセス関与度

    レポートは異常な区間を抜き出し、平常時のばらつきで正規化したずれで要因を並べ、その時刻に何が動いていたかまで出す。閾値を下げて出し直すこともできる。

  • ユーザー権限だけで動く

    管理者権限を要求しない。収集コストは自己診断コマンドがその場で実測し、開発機では 1 秒あたり 9.0ms、1 コアの 0.90% だった。

症状は同じでも、原因は違う

「固まる」は結果であって原因ではない。StallScope は固まった瞬間の指標を全部そろえて残しているので、同じ症状から原因を切り分けられる。

  • ディスクも CPU も正常なのに固まる

    コミット率だけが上限に張り付いていれば、メモリの割り当て待ち。タスクマネージャの既定の「メモリ」列はワーキングセットなので余裕があるように見え、コミット量を別に記録していないと辿り着けない。

  • 固まると同時にディスクの遅延とキューが跳ねる

    CPU もメモリも正常値のままなら、ストレージの I/O ストール。平均値は平常のままなので、ドライブごとに 1 秒間隔で残していないと後からは見えない。

  • 全体の CPU は低いのにカクつく

    1 コアだけが張り付いていれば、そこで動いているスレッドの問題。全体の使用率や _Total の列では最後まで見えない。

  • 短い途切れが繰り返し起きる

    DPC や割り込みの割合が上がっていれば、ドライバ側の処理。コアごとに記録しているので、どのコアで起きているかまで残る。

決め手になるのは、どれか 1 つの指標ではなく「ほかが正常だったこと」。だから集計値に潰さず、全部を横並びで残している。

画面

どの画像も合成データではなく、実際の描画コードがそのまま出力したもの。

  • ダッシュボード。上段に起床遅延の大きなグラフがあり、平常の緑の帯から 3 本の赤いスパイクが突き出し、200ms と 80ms の閾値が破線で引かれている。下段はディスク遅延・CPU・コミット率の 3 つのグラフが横に並び、いちばん下に現在値の一覧と、直近のストールを時刻と長さで並べた表がある
    通知領域から開くダッシュボード。主役は上段の起床遅延
  • 設定画面。上にデータの出力先の入力欄と参照ボタン、その下にシステム収集間隔・プロセス収集間隔・ストール閾値・保持日数の 4 つの数値欄が桁を揃えて並び、いちばん下に自動起動とトレイアイコンのチェックボックスがある。各欄の右にはその値が何を意味するかが書かれている
    設定画面。出力先・収集間隔・閾値・自動起動をその場で変える
  • 通知領域アイコンの状態が 5 つ横に並んでいる。左端は灰色の低い棒に緑が 1 本の平常時、右へ進むにつれて棒が高くなり橙に変わり、右端は赤い棒が並んだストール時。各状態の右には実寸 16 ピクセルの表示も添えられている
    通知領域のアイコン。左が平常、右へ行くほど悪い

動作環境

OS
Windows 10 / 11(64 ビット)
記録先
システムドライブ以外のドライブを 1 つ。監視対象の C: が固まったときに、記録する側まで巻き込まれないようにするため(既定でそうなっている)
容量
1 日あたり約 10MB(圧縮後)。既定の保持期間は 14 日
表示言語
日本語

入手する

Microsoft Store から

掲載準備中

署名も自動更新もストアが持つ。インストールボタンひとつで入り、ログオンした時点から記録が始まる。

ストアのページはまだ公開していない。公開したらここにリンクを出す。それまでは押せるボタンを置かない。