2013年3月25日月曜日

MacでCPU利用率が乱高下/高止まりするとき

OS X Serverを導入したMacでCPU利用率が乱高下するという現象が発生した。

1桁台かと思えば100%になったりで、平均的に50%を超えていることが多くなった。
VNCで画面共有先から操作していると、操作とそれに伴う画面更新が途切れ途切れになってしまい 、ほとんど使い物にならなくなる。そのままOSが落ちることも何回かあった。

ところが、アクティビティモニタで原因を探ってもそれらしいタスクが見つからない。
全て多くても数%なのだ。

OS X Serverを入れた後に発生したので真っ先に疑ったのはそれだったが、それを外しても元に戻らない。
iTunes、外部からのアクセス、 ウイルスチェックなど思いつく項目は全て止めてみたが改善しなかった。

・・・

OS X Serverを導入したときにSpotlightでインデックスを作る対象のフォルダを限定的にするように変更した。 システム環境設定~Spotlight~プライバシーでサーバー用HDDを全て対象外にして、内蔵HDDも多くを対象外にした。接続するPCから検索することはあっても、サーバー自体のMac上では検索しないと思ったからだ。
事実、これで、つないでいるPCからのファイルコピーは速くなった。
が、その後にCPU利用率の乱高下が発生した。

Windowsでは検索用インデックスを付けているとCPUパワーをかなり持って行かれる上にHDD上にも大きないデックス情報を作るので、インデックスは付けない方がいい。
付けなくても通常のファイル処理には全く問題ないし、インデックスがなくても 高速検索可能なフリーウエアもあるので問題ない。


ところが、MacOSではSpotlightが作るインデックス情報をいろんな場所で使っているらしく、作らないと不具合が起こることもある。その1つがこのCPU利用率の乱高下である。

どうもファイルアクセスのたびにインデックスを作るのと同じ処理を走らせるらしく、これが非常に重い。しかもこの処理はOSのカーネル内部で行われているのか、アクティビティモニタには出てこない。

だから、乱高下を防ぐには、Spotlightのプライバシーに何も指定しない=全てにインデックスを付ける、が正解である。

・・・

Spotlight用インデックスを付ける処理はmdworkerというプロセスとして見える。インデックス作成中はこれが高いCPU利用率を示すが、できあがれば自動的に止まる。

Windowsのインデックス作成処理は高いCPUパワーを持っていく上、非常に時間がかかる。丸1日おいても終了しないこともある。
一方Spotlightのそれは比較的短い時間で終了する。実利用500GBで3時間くらいであった。


これで乱高下問題は治った。VNCでの遠隔操作も快適である。

・・・

アクティビティモニタに表示されない理由は、ウインドウ右上にあるプロセスの選択リストで、「すべてのプロセス」を選択してなかったことによると判明。
デフォルトではここが「自分のプロセス」になっている。

・・・
 CPU占有率が高止まりするときで、iCoreServiceというのが動いていれば、これは「ウイルスバスター for Mac」の検索処理である。

これ、環境設定〜検索に設定しているタイミングで自動的に走り始める。
デフォルトでは月に1回、予約検索が有効で、推奨ファイルを検索する。
この検索処理が何をどうやっているのかわからないが、推奨ファイルとやらだけでも非常に数が多いことに加え、1ファイルあたりの処理も非常に遅く、1日かけても終わらないことがある。Windows版ではそんなに遅くないMac版は異常に遅い。

ウイルスチェックは基本的にファイルダウンロードとかメイルの閲覧時にだけ動いてくれればいいものなので、予約検索なんぞほぼ無意味。

ということで、さっさと止めてしまった方が吉。

そうでなくても「ウイルスバスター for Mac」は「とりあえず作ってみました」程度の出来で(Windows版より1世代古い)、機能的にも性能的にも最低限という感がある。
私はWindows版に付属されているからMac版を使っているけど、あまりおすすめはしない。

 ・・・

backupdというのが動いていたら、それはTimeMachineである。
こいつも結構CPUパワーを食う。
まあ、これは止めないほうが良い。バックアップするファイル(正確には除外するファイル)をこまめに設定すれば早くなると思う。

なお、TimeMachine中にもmdworkerが走る。バックアップしたファイルにもインデックスをつけている模様。 なので、バックアップ中はかなりCPU占有率が高くなる。

・・・
 
これをしても、OS X Serverを走らせていると、まだ時々利用率がちょっと上がることがある。OS X Serverは裏でいろんな、しかも機能をOFFしているはずの処理が走ることがあるが原因。ファイル共有するだけなら、OS X Serverは必要時だけ起動し、常時は止めておくのが吉。

ファイル/フォルダのアクセス権を一括変更(内包する項目に適用)するとLocumというプロセスが走り、これが高いCPU利用率を示す。ゴミ箱を削除するときにも走ることがあるらしいが、おそらくはアクセス権を変更して削除できるようにしているのだろう。
当然ファイル数が多いほど時間がかかる。ファイル数はわからないが、800GB強で10分はかかることがある。遅い処理なので時間はかかるが終わると引っ込む。30分も待って終わらないようなら異常なのでアクテビティモニタで停止させる。


そのOS X Server(v2.2.1)の問題については、他にもいろいろと書きたいことはあるが、それは別の機会に。

0 件のコメント:

コメントを投稿