61855


CentOS7でベンチマークを複数回実行してパフォーマンスを計測したいのですが、`sync && echo 3 >
/proc/sys/vm/drop_caches`コマンドによってメモリの開放を行ってもキャッシュがほとんど解放されないため、正しくパフォーマンスを計ることができません。  
以下、実行例です。

[code]

    # free -m
                  total        used        free      shared  buff/cache   available
    Mem:          64188         529       63358         257         300       63022
    Swap:             0           0           0
    # free > /dev/null && sync && echo 3 > /proc/sys/vm/drop_caches && free > /dev/null;
    # free -m
                  total        used        free      shared  buff/cache   available
    Mem:          64188         530       63365         257         291       63025
    Swap:             0           0           0
    
[/code]

見てわかるように、9MB分しか解放されていません。そして、これ以上同じコマンドを繰り返しても、キャッシュは解放されません。0とまではいかなくても、100MB以下ぐらいには押さえたいのですが、`reboot`以外の方法でよい方法はないでしょうか。それともこんなものなのでしょうか。


CC BY-SA 4.0
2019-12-27T09:17:26.920
61831
2019-12-28T14:15:00.967
37056
question
linux centos memcached
Linuxのキャッシュを削除する方法について


私も試してみました。

[code]

    echo 3 > /proc/sys/vm/drop_caches
    
[/code]

※ 3を書き込むと、ページキャッシュとSlabキャッシュが解放されるのですね。

[code]

    [root@localhost /]# echo 3 > /proc/sys/vm/drop_caches
    [root@localhost /]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1829         869         677          12         282         805
    Swap:          1639           2        1637
    
[/code]

この後キャッシュを汚してから同じ手順を実行しました。

[code]

    [root@localhost /]#  find . -type f -exec cat {} > /dev/null \; 2> /dev/null
    ^C
    [root@localhost /]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1829         870         477          12         481         803
    Swap:          1639           2        1637
    [root@localhost /]# echo 3 > /proc/sys/vm/drop_caches
    [root@localhost /]# free -m
                  total        used        free      shared  buff/cache   available
    Mem:           1829         869         677          12         282         806
    Swap:          1639           2        1637
    
[/code]

t-asaさんのベンチマークではあまりキャッシュを使っていなかったので開放されるキャッシュが少なく見えたのではないでしょうか。  
デーモンの類がけっこうキャッシュを使っているようです。  
求める精度がわかりませんので勝手なことを言いますが、キャッシュ不足でスラッシングが起きていないのであればあまり気にしなくてもよいのではないと思います。

実行した環境はWSL下の  
CentOS Linux release 8.0.1905 (Core)  
です。


CC BY-SA 4.0
2019-12-27T14:04:55.920
61838
2019-12-27T14:10:26.123
2019-12-27T14:10:26.123
35558
35558
61831
answer


たぶんこんなものだと思いますが、memhog でもうちょっと 開放できるかもしれないので試してみてください。

引数に、Swapを使い始めるくらいのサイズを指定してみてください。  
何回か実行したほうが効果があるっぽいです。（-rNUMで回数を指定）  
サイズが大きすぎるクラッシュするので注意してください。

以下、実行例です。

[code]

    # yum install -y numactl
    
[/code]

[code]

    [root@localhost /]# free -mw
                  total        used        free      shared     buffers       cache   available
    Mem:            991          81          87           6           0         821         745
    Swap:          2047          42        2005
    [root@localhost /]#
    [root@localhost /]#
    [root@localhost /]# memhog -r3 1000M
    ....................................................................................................
    ....................................................................................................
    ....................................................................................................
    [root@localhost /]# free -mw
                  total        used        free      shared     buffers       cache   available
    Mem:            991          52         911           0           0          26         855
    Swap:          2047          52        1995
    
[/code]


CC BY-SA 4.0
2019-12-28T14:15:00.967
61855
2019-12-28T14:15:00.967
5008
61831
answer