🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

memcached

memcached は、汎用の分散型メモリキャッシュサーバです。

Q&A

解決済

1回答

6081閲覧

Linux(RHEL6)Inactive Memoryの解放の後始末について

guitar-guitar

総合スコア42

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

memcached

memcached は、汎用の分散型メモリキャッシュサーバです。

0グッド

0クリップ

投稿2016/10/26 01:14

###前提・実現したいこと
Linux(RHEL6)でInactive Memoryが1週間以上解放されずOSの再起動ができない環境の為、
以下コマンドで解放しました。
echo 3 > /proc/sys/vm/drop_caches
結果、無事にInactive Memoryを解放することができたが以下コマンドで
初期値(OS再起動時)へ戻しておくべきでしょうか?
echo 0 > /proc/sys/vm/drop_caches
※実際に試してみたところ、特にOS上問題内容に見えますが想定していないエラーが発生しないかご意見いただきたく
ご質問しました。

またInactive Memoryが1週間以上解放されない現象はDISKとの同期がうまくできていないという理解で正しいしょうか?
原因として改竄検知用プログラムがファイルを1件ずつ読み込みに行っていたことであり
大容量のファイルを読み込みが始まってしまい、完了するまで計算上数十日かかることからそのプロセスをkill -9しました。
その後1週間後も解放されず(プロセス上存在しないのに)上記のコマンドで解放しました。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

またInactive Memoryが1週間以上解放されない現象はDISKとの同期がうまくできていないという理解で正しいしょうか?

なぜそう思われたのか分かりませんが、Inactive Memoryのすべてがダーティオブジェクトであるわけではありません (逆に言うと、Inactive Memoryのすべてが解放可能なブロックであるわけでもありません)。Active Memoryにも同じことが言えます。さらに、Inactive Memoryが解放されるとその分ActiveからInactiveに移ってきたりするので、Inactive Memoryのサイズはいつまでも減らないように見えたりします。

以下コマンドで
初期値(OS再起動時)へ戻しておくべきでしょうか?
echo 0 > /proc/sys/vm/drop_caches

私は、0にしないとどうなるかを確かめたことはないです。整理整頓の意味で、あとで0に戻していたので。

投稿2016/10/26 03:01

ikedas

総合スコア4443

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guitar-guitar

2016/10/26 03:42

ご親切にご回答いただきありがとうございます。 man proc を実行してもecho 0 > の記載が無い為 >整理整頓の意味で、あとで0に戻していたので。 はどのように判断したでしょうか? #man proc /proc/sys/vm/drop_caches (Linux 2.6.16 以降) このファイルに書き込みを行うことで、クリーンなキャッシュ、dentry 、 inode をメモリ上から外し、そのメモリを解放する。 ペ ー ジ キ ャ ッ シ ュ を 解 放 す る に は 、 echo 1 > /proc/sys/vm/drop_caches とする。 dentry、inode を解放するには、 echo 2 > /proc/sys/vm/drop_caches とする。ペー ジ キ ャ ッ シ ュ 、dentry 、inode を 解 放 す る に は 、 echo 3 > /proc/sys/vm/drop_caches とする。 この操作は非破壊的な操作で、ダーティな (dirty) オブジェクトは 解 放 されないので、この操作を行う際は最初に sync(8) を実行しておく べきである。
ikedas

2016/10/26 04:00

メモリ解放自体はdrop_cachesに書き込んだときに一回限り実行される操作なので、後で値を0に戻さなかったからといって害はないでしょう。 しかし、非零にしたままで再度同じ値を書き込んだときに、もう一度メモリ解放してくれるのかどうかは、私は確かめたことがないのです。ですので、念のため0に戻しています。
guitar-guitar

2016/10/26 05:04

”一回限り実行される操作なので”、”非零にしたままで再度同じ値を書き込んだときに、もう一度メモリ解放してくれるのか” なるほど。確かにおっしゃる通りですね。 ご回答いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問