2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

知っている人には常識なのかもしれないが

Last updated at Posted at 2016-09-28

使用言語ruby

EC2インスタンス上(Amazon linux)で
S3にあがってるgzファイル(展開後10Gくらい)をDLしてきて展開、

File.open('ファイル名').do |f|
いちぎょうずつしょり
end

ってやったら、openにブロック渡すと閉じたときに勝手にcloseしてくれるはずなのに
プロセス終了後もtopで見たときのuse memoryが10G食いっぱなしだった。

ローカルでrubyでやっても再現せず。

なのでシェルで10Gほどのファイルを生成するスクリプト組んで試してみたら、
やはりプロセス終了後もmemory食いっぱなし。

なおどちらの場合もファイルを消すとmemory復活する。

ファイルはいったん全部メモリにもってどっかのタイミングで実体作って解放、みたいなことやってる?

プロセスが終了してもページキャッシュが保持されているだけだった。
amazon linuxのpdflushのタイミングがcentosデフォルトのやつと違うだけかひょっとして。

ほぼ一緒だった。と、するとなぜだ…?
語弊があった

dirty_backgroud_ratio
dirty_ratio
dirty_expire_centisecs
dirty_writeback_centisecs
min-free-kbytes

このあたりの設定値がほぼ変わりなかったというだけ

echo 1 > /proc/sys/vm/drop_caches

でメモリが解放される以上、ページキャッシュではあろう。

■2016/12/28 追記
通常、ストレージと同期が取れた時点で(vmstat -a のinact領域)「捨てて良い」メモリとなって、
別の何かからメモリの要求が来れば勝手に解放してくれるはず。
なのにうまくいってないのはinactになるのが遅いとかそういうのか?

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?