質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • Raspberry Pi

    760questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

  • Raspbian

    85questions

clamscanで、swap領域に割り当てたメモリ分が使用できない

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 621

ratetail

score 20

前提・実現したいこと

環境:raspberryPi2B
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 8.0 (jessie)
Release:        8.0
Codename:       jessie

clamscanで、割り当てたswap領域分の量を使う方法を知りたい。

発生している問題・エラーメッセージ

clamscanを実行すると、以下のような「Can't allocate memory ERROR」が出ていたため、ファイルのサイズが1.6GBをなので、それに合わせて、swap領域を増やして行き(Errorが続いたため、増やせばよいのかと増やしていった結果、以下のように3GBまで増やした)スキャンを試したが、変わらずエラーになってしまいます。
そして、実行時のメモリ使用状況を確認したところ、物理メモリはほぼ使い切っているが
swap領域については、用意した3GBについては、440MBまでしか使われていないようで、440MB以降はずっと増加せず、そのままエラーと成ってしまいます。

「clamscan /xxx/ファイル名1」
    LibClamAV Warning: fmap: map allocation failed
    LibClamAV Error: CRITICAL: fmap() failed
    /xxx/ファイル名1: Can't allocate memory ERROR

    ----------- SCAN SUMMARY -----------
    Known viruses: 6303942
    Engine version: 0.99.2
    Scanned directories: 0
    Scanned files: 0
    Infected files: 0
    Total errors: 1
    Data scanned: 0.00 MB
    Data read: 1559.19 MB (ratio 0.00:1)
    Time: 97.175 sec (1 m 37 s)

「less /etc/clamav/clamd.conf」//変更部分のみ抜粋
    MaxScanSize 3000M
    MaxFileSize 3000M

「free -t -s 1」//clamscanのエラー終了する直前のもの抜粋
                 total       used       free     shared    buffers     cached
    Mem:        949576     915956      33620        116       2712     315500
    -/+ buffers/cache:     597744     351832
    Swap:      2999996     442656    2557340
    Total:     3949572    1358612    2590960



「clamscan /xxx/ファイル名2」
    /xxx/ファイル名2: OK

    ----------- SCAN SUMMARY -----------
    Known viruses: 6303942
    Engine version: 0.99.2
    Scanned directories: 0
    Scanned files: 1
    Infected files: 0
    Data scanned: 0.00 MB
    Data read: 1398.96 MB (ratio 0.00:1)
    Time: 96.415 sec (1 m 36 s)

「free -t -s 1」//clamscanの完了する直前のもの抜粋
                 total       used       free     shared    buffers     cached
    Mem:        949576     914428      35148        116       1944     313988
    -/+ buffers/cache:     598496     351080
    Swap:      2999996     442668    2557328
    Total:     3949572    1357096    2592476
「cat /proc/sys/vm/swappiness」
100  //スワップ優先設定

「clamscan /xxx/ファイル1」
LibClamAV Warning: fmap: map allocation failed
LibClamAV Error: CRITICAL: fmap() failed
/xxx/ファイル1: Can't allocate memory ERROR

----------- SCAN SUMMARY -----------
Known viruses: 6303959
Engine version: 0.99.2
Scanned directories: 0
Scanned files: 0
Infected files: 0
Total errors: 1
Data scanned: 0.00 MB
Data read: 1579.62 MB (ratio 0.00:1)
Time: 104.741 sec (1 m 44 s)

「free」//エラー直前のログ
             total       used       free     shared    buffers     cached
Mem:        949576     913576      36000        180        760     171952
-/+ buffers/cache:     740864     208712
Swap:      2999996     297056    2702940
Total:     3949572    1210632    2738940

「cat /proc/meminfo」//エラー直前のログ
MemTotal:         949576 kB
MemFree:           35976 kB
MemAvailable:     168272 kB
Buffers:             760 kB
Cached:           171948 kB
SwapCached:         2992 kB
Active:           437200 kB
Inactive:         436540 kB
Active(anon):     350816 kB
Inactive(anon):   350416 kB
Active(file):      86384 kB
Inactive(file):    86124 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       2999996 kB
SwapFree:        2702940 kB
Dirty:               252 kB
Writeback:            36 kB
AnonPages:        699148 kB
Mapped:            16712 kB
Shmem:               180 kB
Slab:              21772 kB
SReclaimable:       9688 kB
SUnreclaim:        12084 kB
KernelStack:        1600 kB
PageTables:         4472 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3474784 kB
Committed_AS:    1376568 kB
VmallocTotal:    1114112 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
CmaTotal:           8192 kB
CmaFree:            6448 kB

試したこと

ファイル種類が同じで、別ファイルの1.4GBまでのファイルは、スキャン完了できています。
その時のメモリ使用量も、上記のエラーした時とほぼ同じ状態で実行完了していました。

また、関係あるかわからないのですが、ファイルサイズが各1.2~1.7GBまでの10個のファイルで試した結果、実行完了、エラーに関わらず、96~103秒の間で終了していました。

スキャン完了、エラーに関わらず、なぜ作成したスワップ領域にはまだ余裕があるのに、それ以上使用しない状態になっているのでしょうか?

どのような情報でも結構ですので、お教えいただければと思います。
よろしくお願い致します。

更新:ログ追加

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

+1

Active状態のメモリー使用領域はスワップアウトされないからではないでしょうかね。

参考
http://itpro.nikkeibp.co.jp/article/Keyword/20070601/273353/?ST=spleaf

/proc/meminfoとか見るとfreeより詳細な情報がでますよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/29 23:56

    回答ありがとうございます。

    仰られた内容の状態を確認するため、同様のスキャンテストを行いmeminfoのログも取得、追記させていただきました。
    また、今回のスキャンテストを行う前に「cat /proc/sys/vm/swappiness」を「100」としておきました。

    /proc/meminfoの情報から
    Active: 437200 kB
    Inactive: 436540 kB
    となっているため、Inactive部分の436MBは、スワップアウトされてもいいように思うのですが
    これがまだあるにもかかわらず、なぜ割り当てエラーとなってしまうのでしょうか?

    現在理解しているInactiveとスワップアウトのイメージは、Inactiveがあれば、そこを経由(開放、割り当ての繰り返し)して、どんどんswap領域に退避させられる、という認識です。
    ですので、上記のように、まだInactiveが残っているのに割り当てできないと言うところが分かりませんでした。

    キャンセル

  • 2017/09/30 05:39 編集

    CentOS7 で メモリ 1GB のさくらのVPSで 2.2GB のファイルは問題なく scanでました。
    参考までに環境を書きます。
    kernel: 3.10.0-514.21.1.el7.x86_64
    clamav: clamav-0.99.2-1.el7.x86_64

    下記コマンドを実行しながらscanしてみましたが、
    問題なくswapは少しずつscanが終わるまで使われていることが確認できました。

    #!/usr/bin/perl

    use strict;
    use Time::HiRes qw/usleep/;
    my $microseconds = 1000;

    my $regex = 'Mem|Buffers|Cached|Swap|Active|Inactive' ;
    while (1) {
    open F, '<', '/proc/meminfo' ;
    while(<F>) {
    if (/^(($regex)\S+)\s+(\d.*)/) {
    my ($item,$value) = ($1,$3) ;
    print "$item $value\n"
    }
    }
    close F ;
    usleep ( $microseconds );
    print "\n" ;
    }

    # clamscan /var/tmp/test.file
    /var/tmp/test.file: OK

    ----------- SCAN SUMMARY -----------
    Known viruses: 6303961
    Engine version: 0.99.2
    Scanned directories: 0
    Scanned files: 1
    Infected files: 0
    Data scanned: 0.00 MB
    Data read: 2290.50 MB (ratio 0.00:1)
    Time: 15.868 sec (0 m 15 s)

    OSかアプリケーション、どちらかのバグですかね〜
    プロセスを strace すれば何かわかるかもしれませんが、結局は物理メモリを増やすか、どこぞに問い合わせないと治らない問題ではないでしょうか。

    ちなみにscanしたテストファイルはどんなファイルですか?
    圧縮されたファイルだったりしますか?

    キャンセル

  • 2017/09/30 22:41

    自分の知らない事が原因と考えていたため、他の環境でテストしてませんでした。
    自分で以下の環境を構築
    VMWare上
     CentOS7.3r1611
     Kernel 3.10.0-514.el7.x86_64
     clamav clamav-0.99.2-8.el7.x86_64
     割り当てコア「1」
     割り当てメモリ「1GB」
     ストレージ「30GB」

    上記環境で、clamscanを試したところ、試していただいた結果と同じように、スキャン完了しました。
    1.5GB前後のファイル7個を用意し、フォルダ内を対象にした検索をしても、スキャンはすぐ終わりました。
    (PCからの1つのコアなため、スペックに違いがありすぎたせいなのか、7個でも10秒かからないという速度でした)

    やはり、OSかアプリケーションの問題なんでしょうかね・・・

    ファイル自体は、mp4形式の動画ファイルです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Raspberry Pi

    760questions

    Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

  • Raspbian

    85questions