先月の中頃から、Linuxのウイルススキャンプログラムclamscanが、なぜか途中で強制終了させられてしまう現象が起こった。原因を調べると、メモリが足りなくなったようだ。それで、暫定的にスワップ領域(Windowsでの「仮想メモリ」)を増やしたら動くようになった。ただ、それまでは問題なく動いていたのに、突然駄目になってしまったのが不思議だった。

更に調べてみると、問題が起こり出す前辺りに、(モジュール更新を反映するため)OSが再起動されていたことが分かった。そして、メモリ使用量のグラフを見ると、その頃から妙な感じになっていた。

過去1か月()を見ると、再起動した("Week 24"の辺り)後からスワップ使用量(赤, "swap")が周期的に増減している。また、過去1年()を見ると、去年の11月中旬頃にメモリ使用量(特にスワップ使用量)が減ったものの、再起動した(図中右端辺り)後から大幅に増えてしまった。

いろいろ調べてもメモリ使用量が減った原因は分からなかったが、スワップ使用量が増減する理由は分かった。clamscan(ClamAV)に関連するサーバプログラムclamdが大量のメモリ(300MB以上)を使用するためだった。問題が起こるのは(メモリがふんだんにある)自宅のPCではなくブログサーバで、メモリ量が1GBしかないため、300MBでもかなり効くのだ。そのために、clamdと同じくらいメモリを食うclamscanがメモリ不足で強制終了させられていたのだろう。

スワップ使用量の増減が起こる流れは、以下のようである。

  1. 毎日、ClamAVのプログラムfreshclamがウイルス定義ファイルを更新する。
  2. 定義ファイルの更新後、clamdにそれが伝えられるようで、clamdは新しい定義ファイルを読み込むようだ。
  3. その時、それまでスワップアウト(実メモリからディスクに追い出されること)されていたclamd(の確保したメモリ)が実メモリに戻される。すると、スワップ使用量が減り、実メモリ使用量(例: 図一番下の緑の層, "apps")が増える。
  4. しばらく(6時間程度)すると、clamdは何もしない(動かない)せいか、スワップアウトされてスワップ使用量が増え、実メモリ使用量が減る。

上記処理(特に3と4)の繰り返しが定期的なスワップ使用量(赤)の増減になっていたようだ。

諸悪の根源はclamdだったのだが、これは本当に必要なのか調べてみると、そうでもなさそうだった。インストールする時は、検索して出て来たページで入れるように書いてあったので、良く考えずに入れた。その理由は、clamdはWindowsのアンチウイルスソフトのリアルタイムスキャンを行うものだと思い込んでいたためなのだが、本来はそうではなく、外部から指定されたファイルをスキャンするものだった。今調べたら、設定によってリアルタイムスキャン(On-Access Scanning)が可能なのだが、今まではその設定をしていなかったので、全く使うことなく、無駄に動かしていた訳だ。間抜けにも程があるw 確かに、今までリアルタイムスキャンの警告が出たことがないし(今考えれば、サーバだから画面がないのにどうやって警告を出すのか不明だ)、不正なファイルだとしてブロックされたこともない(まあ、これが起こったら大変なことなのだが)。

という訳で、他の方も、clamdを入れて起動しているだけではリアルタイムスキャンは行われず、(おそらく)メモリを無駄遣いしているだけなので、注意しましょう。

そもそも、(言っちゃ悪いが)今までClamAVは全くあてにしてなくて、clamscanで気休め程度に(昔ながらの)定期的なスキャンをしていただけなので、全く使われないclamdは不要だという結論になり、停めた。仮にリアルタイムスキャンをするとしても、このサーバではメモリ量が足りないから無理だし、性能への影響も出そうだから止めておく。

clamdを停止前後のメモリ使用状況 (過去1日)

効果はてきめんで、clamdを停めた("Sun 18:00"と"Mon 00:00"の間)ら、スワップ使用量(赤)が500MBくらい減って100MB程度になった。今までいかに無駄なメモリを使っていた(正確には死蔵していた)ことか。。。 要は、メモリの断舎離をしたようなものだ。ただ、「死蔵」と書いたとおり、このメモリは使われていなかった(クローゼット中にあるだけで全然着ない服のようなもの)ので、実メモリの使用状況はほとんど変わっていない。例えば、アプリのメモリ使用量(図一番下の緑の層, "apps")は停止前後でほとんど同じである。

なお、図で定期的(12時間ごと)に上部の緑線("committed")が鋭く立ち、そのあとで下部の紫の層("cache")が減っているっているのは、クラウドストレージへの定期バックアップ処理のために一時的に使用メモリ量が増え、そのためにそれまで溜まっていたキャッシュが解放されるためと思われる。

結局、題に書いたように、無意味なものを省くことはできたが、無意味だっただけあって、それによって変化は起こらなかった。せいぜい、最初の問題の、clamscanがちゃんと動くようになった程度だ(clamscanにしたって、実行する意味があるのか良く考える必要があるが、今回は棚上げにする)。でもまあ、プログラムの中にはCPUを使いまくってシステムを重くするものがあるから、これはたちがいい方なので良しとするw

ということは、死蔵されたものを捨てても何も変化は起こらないということなのだろうか? 確かに、物理的には(目に見える)変化はないが、精神的(「気分」)には変化があるだろう。そもそも、断舎離とは、物(減らし)を心に作用させて、(物質でなく)精神を改善するものなのだろうから、それでいいのだろう。知らんけどw

なお、デスクトップPCも同じ状況で、無駄にclamdが動いていたが、メモリがふんだんにある(32GB)ため300MB程度は誤差のようなもので(ブラウザがかなり多くのメモリを食う)、停めても本当に何も変化がなかった。チャンチャンw

 

(20:30 わずかに補足; 7/3 6:15 少し加筆・補足)

  •   0
  •   1

コメントを書く

名前    

メール 

URL