タイトルの通り、EclipseやSQLDeveloperが立ち上がるのがすごく遅い。会社の自分用PCだけでこの現象が発生する。自宅のPCでは発生しない。現象をまとめると以下のとおり。
- 問題が発生するプログラムはEclipseとSQLDeveloper(確認した限り)
- OSはWindows
- アイコンをダブルクリックしてから操作可能になるまで2~4分くらいかかる
- 同プログラムの起動中のCPU利用率は1~2%
- カーネルのCPU利用率が25%付近に張り付く
自宅のPCで同プログラムを起動させると、どちらも、起動に時間はかかるが、かかってもせいぜい30秒かそこらだろうと思う。なので、極端に遅いと言える。今回はその原因を考察する。
まず、EclipseやSQLDeveloperの起動時のCPU利用率がほとんど0%という点から、I/Oで待たされているという想像がつく。実際、起動中はアクセスランプが激しく点滅している。
そして、カーネルのCPU利用率が25%に張り付く点。以下の様な感じだ。
カーネルのCPU利用率は、タスクマネージャを起動して、「パフォーマンス」タブに切り替えて「表示→カーネル時間を表示する」をチェックすると赤い折れ線グラフで表示される。これをやらないとCPU利用率はほぼ0%なのに激重という不思議なことが発生しているように見える。
このPCはクアッドコアなので、25%というのはシングルスレッドの限界に達していると言える。
もうここら辺りで私にはなんとなく原因の想像がつくのだが、一応確かめよう。このようなとき、カーネルが何をやっているかはKernrate Viewerを使うと分かる。これは、カーネルモジュールごとに、秒間何回割り込みが発生しているかを表示するツールだ。とても便利なのだが、Windows 2000とWindows XPの32bit版と64bit版向けしか配布していない。Win7 32bitでXP 32bit版が動作するのは確認したが、Win7 64bit版でXP 64bit版は動作しなかった。ぜひWin7以降でも同様のツールを提供してほしい。
今回の会社の自PCはWin7 32bitなので幸い動作した。(なぜ今どき32bitなのか理解に苦しむ)
以下が結果の抜粋である。
Results for Kernel Mode: ----------------------------- OutputResults: KernelModuleCount = 191 Percentage in the following table is based on the Total Hits for the Kernel Time 227323 hits, 25000 events per hit -------- Module Hits msec %Total Events/Sec ntkrnlpa 199259 146979 87 % 33892426 VSApiNt 25986 146979 11 % 4420019 win32k 593 146979 0 % 100864 halmacpi 373 146979 0 % 63444 (以下略)
ntkrnlpaはその名の通りNTカーネルの一部で、アイドル状態でもかなりの回数の割り込みをしているので問題ない。問題は2番目のVSApiNtというモジュールである。これは一体何か。これをWindowsのファイル検索で探すと、Program FilesのTrendMicroの中にVSApiNT.sysというファイルが有るのがわかる。
そう、原因は(うすうす感じていたが)TrendMicroのウイルスバスターであったのだ。
うちの会社ではウイルスバスター コーポレートエディションというのをすべてのPCにインストールしなければならない決まりになっている(HTTPサーバとして使うWindows Serverマシンにまで入れろと言われる。アホか)。しかし、このソフトは重すぎるのである。PCのパフォーマンスをこれでもかというほど悪くさせる。
昔、お客の目の前でソフトをインストールしていたとき、40分かかっても終わらなかったことがあり、冷や汗をかいた。後日、ウイルスバスターを停止させて同様の作業を行うと、数分も立たず終わった。このようなことが多々ある。
さらに、この激重なウイルスバスターのシステムフルスキャンが毎日12:00にスケジュールされているのでたまったもんじゃない。うちのシステム管理者はアホなのだろうか。たまに14:00になってもスキャンが終わっていなかったりする。アホかと思う。そしてこの設定はネットワーク越しに管理されていて、変更もできず、アプリケーションを強制終了することも出来ず、たとえしたとしてもログが送られてまたシステム管理者に文句を言われることになるのだろう。
これはうちの会社の皆が口をそろえて文句を言うことなので、私の感覚がおかしい訳ではない(というか、ソフトの起動に数分なんてのは世界中誰に聞いても遅いと言うだろう)。だからもう一度いう。TrendMicroのウイルスバスター コーポレートエディションはパフォーマンス的に使い物にならないレベルで、業務に差し支える。
他に優秀なアンチウイルスソフトなんてごまんとあるのだけど、なぜわざわざウイルスバスターを使うのかというと、「クライアントPCの設定をリモートで管理できる」「イベントを監視できる」などのガッチガチにユーザーを束縛するような仕様が日本企業に好まれるのだろう。
もし、自社のシステムに導入するアンチウイルスソフトを検討している人がいたら、ぜひともパフォーマンスの面でとても問題があることを覚えていて欲しい。