今回は、User Experience (ユーザー エクスペリエンス) チーム所属のグループ プログラム管理者である Ryan Haveson から、Windows Developer Preview リリース以降のタスク マネージャーの進歩についてご紹介します。この記事では、多数の論理プロセッサを備えるシステムの管理に使用する、新しくなったタスク マネージャーのツールを扱います。これはデスクトップ PC の範囲を大きく超えたスケーラビリティを実現する機能であり、サーバーやデータ センター向けに設計されたものです。Windows の開発においては、幅広いフォーム ファクターや CPU アーキテクチャに対応することも、大きな比重を占めています。

コメントについて: コメントの質はコミュニティにふさわしい水準に保つようお願いします。自動的なスパム対策以外にはコメントの審査は行っていないことを、改めて申し添えておきます。  –Steven Sinofsky

新しいタスク マネージャーについては、以前の記事で扱ったほか、Developer Preview (英語) をインストールして実際にご覧になっている方も多いと思います。このトピックにはまとまった関心が集まっているようでしたので、デイリー ビルドに登場したばかりの新機能について、ベータ リリースで体験していただく前に、取り急ぎ簡単にご紹介しようと思います。

下に示すいくつかの画像では、サーバー管理者や、大量の論理プロセッサを備えた巨大な PC 環境を利用するユーザーが主に使用する機能を扱います。前もって確認しておくと、ここで扱うのは論理プロセッサです。ハイパースレッディング対応のシステムをお使いの場合、各物理プロセッサがそれぞれ複数の論理プロセッサとして動作することになります。

こういった多数のプロセッサを備えるシステムを使用されている方はご存知かと思いますが、Windows 7 のタスク マネージャーの CPU 使用率グラフには、いくつかの制約があります。

  • リアルタイムの比較機能がない: 大量の論理プロセッサを CPU グラフで監視している場合、重要なのは変則的な動きです。こういった規模になると、過去 60 秒間の各 CPU の使用率を表した、変動し続ける折れ線グラフを相互に比較して、何が起こっているかを把握するのはかなり困難です。
  • グラフが小さい: 論理プロセッサ数 64 個以上の規模では、個々のグラフはかなり小さなものになります。どのプロセッサの負荷が高まっているかを確認しようと思えば、小さなグラフを目を細めて読み取らなければなりません。論理プロセッサが 256 個を超えると、グラフを読むこと自体が困難になってきます。
  • プロセッサ ID が特定できない: 変則的な値を示すグラフを見つけても、対応するプロセッサ ID を簡単に確認する方法が用意されていません。

次に示すのは、160 個の論理プロセッサを備えるシステムで、Windows 7 のタスク マネージャーの [パフォーマンス] タブを表示したようすです。

[CPU 使用率の履歴] に 160 個の小さなセルが並び、それぞれが変動する折れ線グラフで使用率を表示している。
図 1: 旧タスク マネージャーで 160 個の論理プロセッサを表示したようす

ご覧のとおり、[CPU 使用率の履歴] に並んだ各セルを相互に比較するのは非常に困難です。グラフは読みづらく、瞬間的な CPU 使用率を比較しようとしても、各グラフが 60 秒間の枠で変動し続けているため、ほぼ不可能です。また、[CPU 使用率の履歴] の各グラフは皆同じに見えるため、各グラフに対応するプロセッサ ID を特定するのも簡単ではありません。タスク マネージャーについての前回の記事では、大量の数値データを表示または比較する際に、ヒート マップを使ってビジュアル化することのメリットに触れました。新しいパフォーマンス ダッシュボードを設計するにあたって、"多コア表示" 向けのグラフのデザインとしてヒート マップが浮上してきたのは自然なことと言えます。

次のスクリーン ショットは、Windows 8 の最新ビルドのものです。すべての論理プロセッサを一望し、使用率が高いプロセッサや低いプロセッサを特定するのが容易になっています。

(注: これらのスクリーン ショットでは、160 個の論理プロセッサを備えるシステムで、作業負荷をシミュレーションした状態のタスク マネージャーを示しています)

[Performance] (パフォーマンス) タブに、[CPU]、[Memory] (メモリ)、[Disk 0] (ディスク 0)、[Disk 4] (ディスク 4)、[Disk 8] (ディスク 8)、[Ethernet] (イーサネット)、[Ethernet] (イーサネット) の 7 つのビューがある。[CPU] ビューでは論理プロセッサの表がヒート マップの形で表示され、使用率の数値が示された各セルは、数値に対応する背景色で色分けされる。
図 2: 新しいタスク マネージャーで 160 個の論理プロセッサを表示したようす

また、新しい CPU グラフでは、各エントリにマウス カーソルを合わせると、対応する論理プロセッサ ID がヒント表示されます。

使用率 100% のエントリのヒントに、"CPU 0 (Node 5)" と表示されている
図 3: 論理プロセッサ ID のヒント表示

ヒート マップ表示の大きなアドバンテージとして、大規模なデータ セットに非常によく対応できるという点があります。新しいタスク マネージャーでは、OS がサポートするのと同じ数の論理プロセッサ数 (最大 640 個!) を表示することができます。情報が常に意味のあるサイズで表示されるよう、ウィンドウ サイズに対してデータ セットが大きすぎる場合は、ヒート マップが最適な大きさに調整され、必要に応じてスクロール バーが表示されます。

ヒート マップのデータは 13 行× 9 列で表示されており、簡単に判読することができる。スクロール バーを使えば 14 行目以降も表示可能
図 4: スクロール バーによって論理プロセッサ 160 個の環境に対応する CPU 使用率表示

システムの隅々まで細かく管理したいユーザーのために、個々のプロセスが使用する論理プロセッサ (1 つまたは複数) を指定する機能も用意されています。指定するには、ヒート マップ内のセルにマウス カーソルを合わせて論理コアの ID を確認し、次に [Details] (詳細) タブに移動して、希望のプロセスを右クリックして [Set affinity] (関係の設定) をクリックします。


タスク マネージャーの [Details] (詳細) タブでユーザーが "iexplore.exe" を右クリックしており、コンテキスト メニューに [Open file location] (ファイルの場所を開く)、[End process] (プロセスの終了)、[End process tree] (プロセス ツリーの終了)、[Debug] (デバッグ)、[UAC virtualization] (UAC の仮想化)、[Create dump file] (ダンプ ファイルの作成)、[Set priority] (優先度の設定)、[Set affinity] (関係の設定) (選択されている)、[Analyze wait chain] (待機チェーンの分析)、[Search online] (オンライン検索)、[Properties] (プロパティ)、[Go to service(s)] (サービスの表示) の各コマンドが表示されている。
図 5: [Details] (詳細) タブでのプロセスの関係の設定

ダイアログに "Which processors are allowed to run "iexplore.exe"?" ("iexplore.exe" を実行するプロセッサを選択してください。) と表示されている。プロセッサ グループのドロップダウン リストがあり、"Group 0" が選択されている。その下に "CPU 0 (Node 0)"、"CPU 1 (Node 0)"、"CPU 2 (Node 0)" などがチェック ボックス付きで表示され、[OK]/[キャンセル] ボタンがある。
図 6: プロセスが使用する論理プロセッサの選択

もちろん、プロセッサの関係の設定は、こういったレベルの管理を必要とする (あるいは希望する) 高度に技術的なユーザー向けのものです。詳しい知識のないまま変更すると、システムの電源管理やパフォーマンスに深刻な影響が出る場合がありますのでご注意ください。OS に任せておいても適切な設定が行われるようになっています。各論理プロセッサへのプロセスの割り当ては、ハードウェアの性能や接続形態 (トポロジ) に応じて Windows が自動的に管理しており、手動設定による改善の余地がめったにないような高度なアルゴリズムが使用されていますので、ご安心ください。

--Ryan Haveson