Windows 95が出荷された1995年以来,インターネットが急速に普及しました。マイクロソフトをはじめとする各社は,このような流れに対応するためのさまざまな最新技術を自社製品に組み込むようになりました。出荷される製品はバージョンアップのたびに機能強化され,結果的に複雑化しています。Windows 2000もこのような複雑化した最新OSのひとつであることは間違いありません。

 本講座も第4回目を迎え,いよいよ佳境に入ります。今回は,最新OSであるWindows 2000をさらに学習するための方法論をご紹介いたします。高等数学の難問をいきなり突きつけられても誰も対応できません。必要なのは基本となる知識の集積です。この第4回講座では,「パフォーマンス・モニター」というWindows 2000に付属するプログラムを教材として,最新OSであるWindows 2000を理解するための基礎知識を習得します。

図1●パフォーマンス・モニター

「パフォーマンス・モニター」とは何かを考える

 パフォーマンス・モニターは,コントロール・パネルかスタート・メニューで「管理ツール」を選択すると起動できます(図1[拡大表示])。このような画面をはじめて目にした人もおられることでしょう。几帳面な方は,パフォーマンス・モニターではなく,突如表示される「システム・モニター」という文字を見て困惑し,「難しすぎてついていけない」と弱音を吐いておられるかもしれません。ここではっきり申し上げますが,そのような心配は不要です。ここでは,パフォーマンス・モニターを次のように定義してしまいます。

「パフォーマンス・モニターは,Windows 2000システムの各種機能を監視するプログラムである」

 この定義文を読むと,鋭い方は「Windows 2000システムの各種機能とは何でしょう」と次なる質問をされるはずです。そのような方は,肩の力を抜いてください。Windows 2000には,プログラムを実行する機能,実行中のプログラムを管理する機能,プログラムを停止する機能,あるいはメモリーにアクセスできるようにするための機能などが多数用意されています。このため,Windows 2000をどのように利用するか,という問いこそが重要といえます。主役はWindows 2000ではなく,あくまでも私たちユーザーです。

 Windows 2000上で何らかのプログラムを起動すれば,Windows 2000に実装されているシステム機能が使われます。その機能を監視するのがまさにここで定義したパフォーマンス・モニターといえるでしょう。

Messengerサービス機能を監視する

 第3回講座では,Windows 2000のサービスであるMessengerとEventLogを使いながら,ネットワークについて説明しました。前回との連続性を維持するという面からも,ここではそれらのサービスを使用したときのWindows 2000機能を監視してみましょう。

図2●SPY++でスレッド情報を表示
 すでに述べましたように,サービスは特殊な性質を持っているといっても,Windows 2000上で動作するアプリケーションの一つにすぎません。ここで,アプリケーションが実行されるまでの基本過程をざっと振り返っておきましょう。

 私たちが,使用するアプリケーションをダブルクリックすると,Windows 2000はハードディスクに格納されている拡張子「.EXE」を持つアプリケーション・ファイルをメモリーにロードします。このようなWindows 2000の機能は「ローダー」と呼ばれています。

 ローダーは,アプリケーション・ファイルに格納されている多数の情報(ファイルの大きさ,メモリ内のロード位置,動作するCPUタイプ,プログラムの種別,あるいは必要なWindows OSバージョンなど)を参照しながら,メモリーにロードします。

図3●Messengerサービスのプロパティ
 アプリケーション・ファイルには多数の情報が入っていますから,Windows 2000はその情報の一部を自分が内部で管理しているメモリー領域にコピーします。メモリー領域にコピーする際には,あてもなく無秩序にコピーするようなことは当然しません。不要になれば,情報を削除する必要があり,その削除処理は効率的に行わなければなりません。このため,Windows 2000は内部で多数のデータベースを作成しているのです。このようないわば“システム・データベース”には,それぞれに名称が付けられています。そのような名称の中には,プロセス・データベースやスレッド・データベースというものがあります。ハードディスクに格納されているアプリケーション・ファイルは,Windows 2000ローダーによりメモリーにロードされると,必ずプロセス・データベースとスレッド・データベースに登録されます。この登録が完了すると,アプリケーション・プロセスやアプリケーション・スレッドが出来上がります。

 プロセス・データベースやスレッド・データベースには多数のプログラムが登録されています。つまり,Windows 2000システム内には常に多数のプロセスとスレッドがうごめいています。個々のプロセスやスレッドを区別するために,プロセス・ハンドルやプロセスIDなどのデータ新たに作り出されます。これはあくまでもWindows 2000が自分の都合で勝手に作り出した内部データです。私たちには,その内部データを識別できませんから,Windows 2000は,内部データの代わりに,アプリケーション・ファイル名の一部を表示するのです。

図4●「カウンタの追加」画面
 図2[拡大表示]の画面を見ていただきましょう。これはパフォーマンス・モニターを起動後,「SPY++」というプログラムでパフォーマンス・モニターのスレッド・データベースにアクセスし,その一部情報を取り出した画面です。SPY++プログラムやパフォーマンス・モニターそのもののは本講座では解説しません。理解して頂きたいのは,プロセスやスレッドというのは,Windows 2000が内部で用意している専用データベースにより管理されている,ということです。このため,そのデータベースへのアクセス方法を知ってしまえば,だれでも必要な情報が取り出せるといえます。この画面では,パフォーマンス・モニタースレッドはMMCという名称をつけられています。MMCは,Microsoft Management Consoleの略称かと思いますが,これ以上の詳細は割愛させて頂きます。

図5●プロパティ画面で,グラフ項目を設定する

 それでは,MessengerとEventLogサービスのプロセスを実際に監視してみましょう。まずはプロセス名を知る必要があります。図3[拡大表示]のようなプロパティ情報を表示し,確認しておきます。画面はMessengerサービスのプロパティですが,Event Logを選択しても同じような画面が表示されます。

 この画面から分かるように,拡張子EXEを持つファイル名は「Services.exe」となっています。このため,プロセス名は,通常「Services.exe」か「Services」と表示されてくるはずです。先に紹介したMMCというプロセス名は,MMC.EXEから作成されています。パフォーマンス・モニターの具体的な操作手順は次のようになります。

ステップ1:「パフォーマンス・モニター」を起動する。
ステップ2:ツール・バーのプラス(+)ボタンをクリックする。

 すると,図4[拡大表示]のような「カウンタの追加」画面が表示されます。

図6●スレッドが2個増えていることがわかる
ステップ3:「パフォーマンスオブジェクト」から「プロセス」を選択する。
ステップ4:「一覧からインスタンスを選ぶ」から「services」を選択する。
ステップ5:「一覧からカウンタを選ぶ」から「Thread Count」を選択する。
ステップ6:「追加」ボタン,「閉じる」ボタンの順でクリックする。

 ここで,再びパフォーマンス・モニター画面に戻りますので,次のように設定します。

ステップ7:赤いボタンの「画面を固定」ボタンをクリックする。
ステップ8:赤いボタンの隣の「プロパティ」ボタンをクリックする。

 するとプロパティ設定画面が表示されますので,次のように設定します。

図7●「ペイント」プログラムを終了すると,スレッドも消滅する
ステップ9:「グラフ」タブを選択し,図5[拡大表示]のように設定し,OKボタンをクリックする。
ステップ10:赤いボタンの「画面を固定」ボタンを再度クリックする。

 これで準備は整いました。では,Messengerサービスの「コンソールメッセージの送信」機能を使ってみましょう。ここでは,「コンソールメッセージの送信」の「受信者」欄に自分自身のコンピュータ名とサーバーのコンピュータ名を入力し,実行してみました。すると,図6[拡大表示]のような結果になりました。スレッドが確かに2個増えていることがわかります。ここでは単純な機能を監視しただけでしたが,更なる学習を進められ,いろいろな情報を取り出してみてください。

 図7[拡大表示]の画面は,Windows標準の「ペイント」のプロセス(MSPaintプロセス)のThread Countを監視しているところですが,プログラムを終了する,すなわちプロセスを終了すると,即座にMSPaintプロセスのスレッドが消滅しています。一方,Messengerサービスの場合,スレッドが消滅しません。このようなところにもサービス・アプリケーションと通常のWindowsアプリケーションの違いが出ています。

図8●Windows 2000 Professionalマシン上でWindows 2000 Serverの動作を監視している
 さらに,参考のために,私のサーバー・マシンの動作を監視している様子を紹介しておきます(図8[拡大表示])。ここでは,Windows 2000 Professionalマシン上でWindows 2000 Serverの動作を監視しています。パフォーマンス・モニターはネットワークに対応する機能を備えているのです。設定は簡単ですから,後日ご自分で確認されてください。この画面では,Messengerサービスでメッセージ送信後もサーバー・マシン上ではスレッド数が減っていません。おそらく,メッセージ・ボックスが表示されたままになっているからです。このことから,サーバー・マシン上ではメッセージ・ボックスをはじめとするGUI機能を多用しないことが重要であることが分かると思います。GUIを通してではなく,イベント・ログなどに書き込んでおくことが重要です。また,Professionalマシン監視情報とServerマシン監視情報の最小値を比較してみてください。サーバーの方が多くなっていますね。

図9●「説明」ボタンを押すと,意味を説明するボックスが表示される
 Windows 2000機能をさらに理解した場合,図9[拡大表示]のように「説明」ボタンを利用するとよいでしょう。

 これは,「一覧からカウンタを選ぶ」から「Thread Count」を選択後,右上の「説明」ボタンをクリックしたところです。このように「Thread Count」の意味を説明するボックスが表示されます。実際に動作を確認しながら,Windows 2000システムの説明が受けられます。

第4回講座のまとめ

 今回は,Windows 2000の標準で用意されているパフォーマンス・モニターの意味とその使い方を取り上げました。いかがだったでしょう。パフォーマンス・モニターはさまざまなWindows 2000機能を監視する機能を提供してくれています。今回はスレッドの個数変化というきわめて初歩的な監視機能を利用しただけでしたが,Messengerをはじめとするサービス・アプリケーションと通常のアプリケーション・プログラムの違いや,Windows 2000 ProfessionalとWindows 2000 Serverの違いを即座に理解できました。本文でも述べたように,プロセスやスレッドが作成されるということは,Windows 2000のさまざまな内部機能が活動することを意味します。Windows 2000内部にあるスレッドデータベースに情報が追加されることもあり,メモリー量は当然変化します。CPUの動きも変化します。日々学習を積まれ,成長なさってください。

 次回は,アクティブ・ディレクトリと「情報の管理」の関係について解説しようと思います。ちょっと漠然とした表現ですが,ご期待ください。ごきげんよう。