• ベストアンサー

Linuxのメモリ管理

Linuxのfreeメモリとは、Top等のコマンドで見えるfree+buff+cacheと思っていますが、Linuxを使用しているとfree領域がどんどんなくなっていき、buff, cache領域が増加していきます。 free領域が枯渇しそうになって(表示上10Mぐらい?)いて、swapdとかが動作しているにもかかわらず、buff, cacheを開放したりしないのでしょうか? この辺のLinuxのメモリ管理方法をご存知の方、いらっしゃいましたら御教授願えませんでしょうか 掲載HP等でも良いので情報頂ければ助かります。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.1

kswapdが空きメモリを作っているから、freeが10Mを下回らずにそこでとまっているのだと思いますよ。 kswapdをキーワードに検索したら、kswapdが動いているからといってプロセススワップを行っているわけではないことがわかるでしょう。

参考URL:
http://www.valinux.co.jp/docs/html/lkc2003/slide_21.html
f_attck
質問者

お礼

ご回答ありがとうございました。 質問が本末転倒でした。。。

関連するQ&A

  • LINUXのメモリ

    linux redhatを使用しています。 メモリの使用量を調べたいのですが、freeコマンド topコマンド vmstatコマンドでみたのですが、値がそれぞれ違っているようなのですが、どうのように調べればようのでしょうか?

  • 【メモリ]】vmstat、free、topの表示

    Linux(CentOS)でサーバのメモリ状態を確認するために 以下のコマンドを実行しました。 ・vmstat ・free ・top 【vmstat】 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 140 29812 137284 242088 0 0 0 3 2 0 1 0 96 3 0 【free】 total used free shared buffers cached Mem: 515312 485500 29812 0 137284 242088 -/+ buffers/cache: 106128 409184 Swap: 1052216 140 1052076 【top】 Mem: 515312k total, 485500k used, 29812k free, 137284k buffers Swap: 1052216k total, 140k used, 1052076k free, 242088k cached 各コマンドの表示結果の関連性を教えてください。 1.vmstatコマンドでは「used」項目が表示されないため  メモリの使用量が分からない? 2.「used」項目と「free」項目を足し合わせると、実メモリサイズ(total)と一致する。  「buff(ers)」項目と「cashe(d)」項目は、実メモリの情報?仮想メモリの情報? 3.「buff(ers)」項目と「cashe(d)」とは?また違いは?  #freeコマンドでは、「cashed」項目は「Mem(実メモリ)」列に表示されているが  #topコマンドでは、「Swap(仮想メモリ)」列に表示されている。 4.「-/+ buffers/cache:」列の意味は?  「used」項目と「free」項目を足し合わせると、実メモリサイズ(total)と一致する。  #「Mem」項目の「buffers」項目と「cashed」との違いは? ご教示お願いいたします。 <環境> CentOS(5.5) カーネルバージョン:2.6.18-194.11.3.el5 実メモリ:512MB スワップ領域:1024MB procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 140 29812 137260 242080 0 0 0 3 2 0 1 0 96 3 0 top - 17:00:00 up 125 days, 16:04, 1 user, load average: 0.05, 0.05, 0.02 Tasks: 107 total, 1 running, 106 sleeping, 0 stopped, 0 zombie Cpu(s): 0.2%us, 0.2%sy, 0.4%ni, 96.2%id, 3.1%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 515312k total, 485500k used, 29812k free, 137260k buffers Swap: 1052216k total, 140k used, 1052076k free, 242080k cached

  • Linuxのメモリの関して

    質問1: freeというコマンドで見たところ、freeが少ないで、大半がcachedとして 使われているそうです。 このcachedに使われたメモリはどんなコマンドで解放することできるでしょうか? 質問2: topというコマンドで見たところ、httpdというプロセスが沢山のメモリ使っている(ひとつのhttpdプロセスは140MBぐらい)そうです、このhttpdはApacheのプロセスで、どうしてこんなに沢山メモリ使うでしょうか? 以上、どうぞよろしくお願いします。

  • メモリ管理

    Cでメモリー管理に関して次のようなLIBがあればいいなと思っています。 目的:使うたびに確保、開放では効率がわるいので共通の領域を使いまわす 条件:XXXMallocで使用するサイズはバラバラ (1)メモリーをまとめて「XXXLIBの領域」用に確保 (2)XXXMallocを実行するとメモリ管理が「XXXLIBの領域」から切り出してくる ここで足りなければ自動で大目に確保 (3)不要になったらXXXReleseで開放し、あとで使いまわしする こんなものが存在する事を知っている方は教えてください。

  • AIXでのメモリ使用率の計算

    各OSでのvmstatコマンドの出力からメモリ使用率を計算しようとしております。 Linuxの場合の使用可能なメモリサイズは free+buff+cache で計算されると思います。 Soralis8の場合はfreeのカラムの値にファイルシステムキャッシュに使用しているメモリも含まれるらしい(「Unixパフォーマンスチューニング」オライリー)ので、使用可能なメモリサイズは free のカラムの値を見ればいいと思います。 お伺いしたいのはAIXの場合なのですが、マニュアルを読む限り、freカラムの値には、ファイルシステムキャッシュのメモリが含まれていないらしく、使用可能なメモリサイズが見積もれません。 AIXの場合、どのようにして使用可能なメモリサイズを見積もるのが宜しいでしょうか? もしご存知の方がおられましたらご教示下さい。 宜しくお願いいたします。

  • Linuxのメモリ解放処理

    質問内容を下記にまとめてみました。 どなたかお詳しい方、ご回答下さいませんでしょうか。 情報ソースへのリンクでも構いません。よろしく お願いします。 【環境】 PCサーバ;PentiumIII 1GHz*2、2GB SDRAM、60GB*3 HDD(RAID5;記憶領域約120GB) Redhat Linux7.1J Oracle 8i for Linux(8.1.7) 【現象】 OS起動時からRAMをほとんど開放せず、処理の度にHDDから読み込んだデータをRAM上に展開し続けている。 残りの空きメモリが4MBを割り込んだ辺りから空きメモリの減少が止まる。問題なく処理は続行されている。 この間、約2GB確保されたスワップ領域は全く使用されていない。 以上は、Oracle上でPL/SQL及びCのプログラムを実行している際に確認された。 【仮説】 ・Linuxは可能な限りメモリ上にキャッシュを残す仕様となっていて、残り空きメモリが一定の水準以下になるタイミングになって初めて割当済みメモリを解放しているのではないか。 【疑問】 1.割当済みメモリ解放の閾値の設定はどこで行っているのか 2.スワップ領域が使用されていないのはなぜか

  • Linux系OSのメモリの解放について

    お世話になります。 CentOS6.4を使ってPHPアプリを動かしています。 結構メモリを消費するアプリなので、 使っているうちにOutOfMemoryになることがあります。 ※正常終了する場合もあります。 正常に終了しようがOutOfMemoryになろうが、 大量にメモリを確保した後は、そのまま解放されていないように見えます。 例えば、freeコマンドで見たときにに usedが減りません。 【例】 アプリケーション実行前 # apachectl restart # free total used free shared buffers cached Mem: 16334660 472788 15861872 0 105700 120124 -/+ buffers/cache: 246964 16087696 Swap: 2047992 0 2047992 ここでアプリケーション実行し正常に終了。 # free total used free shared buffers cached Mem: 16334660 1754276 14580384 0 106836 120484 -/+ buffers/cache: 1526956 14807704 Swap: 2047992 0 2047992 apacheを再起動すればusedは減るのですが、 他にusedになっているメモリを開放する方法はあるのでしょうか? また、どのようなメカニズムで解放されないのか教えていただけるとありがたいです。 よろしくお願いします。

  • linuxサーバで使用しているメモリの確認方法

    linuxサーバの使用しているメモリの確認方法について教えて頂きたいです。 たとえば以下のようなメモリ表示だった場合に 実際に使用可能なメモリは free+の148588(厳密ではないかもですが)かとおもいます。 total used free shared buffers cached Mem: 192572 190944 1628 54912 20112 126848 -/+ buffers/cache: 43984 148588 Swap: 96384 0 96384 気にしているのはused- の43984 の数字ですが こちらはtotalからfree+を引いた数値ですが、この数字が linux起動から徐々に増え続けています。 この used- ですが、こちらは実際に使用しているメモリという認識でよいでしょうか。 となると、徐々に増え続けているとそのうち枯渇するのではと思いました。 因みにこのサーバではApacheとSendmailが起動してはおりますが 実際に外部等に公開しているわけでもなくただ検証用として起動しており 特にメールが流通するでもなく、Apacheもなにもアクセスない状態です。 このまま同様の設定で本番稼働等をすると同じような現象が発生してしまうのではないかと 気にしております。 徐々に上昇してしまう原因として考えられることがあれば教授いただけますでしょうか。 因みにOSはCentOS 5です。

  • Linuxのキャッシュとバッファについて教えてください。

    Linuxのキャッシュとバッファについて教えてください。 1.キャッシュ プログラムを実行した際、そのプログラムがキャッシュをどのくらい消費しているか、 調べる方法はないでしょうか? vmstatコマンドで表示されるキャッシュサイズの増加分を見ればいいのかなと思っていたのですが、いまいちキャッシュの仕組みを理解できておらず自信がありません。 2.バッファ 上述のvmstatでは、キャッシュとバッファが表示されますが、バッファとはキャッシュが増加すると減るものなのですか?あるプログラムを実行いたところ、キャッシュは増加し、バッファは減少しました。自分のイメージではどちらも増加するとおもっていたので、いちいち良く分かりません・・・

  • メモリの使用量について

    メモリの使用量の確認方法について教えてください。 freeコマンドを実行すると以下のように表示され、2GB中1.3GBを使用していることが分かります。 total used free shared buffers cached Mem: 2072828 1358364 714464 0 175372 836028 -/+ buffers/cache:346964 1725864 Swap:2096472 0 2096472 どのプロセスがメモリを消費しているか調べたいと思い、topコマンドを実行後、"M"でメモリの消費量の多い順にプロセスを並べ替えて、使用率の合計を計算してみました。 しかし、その合計値は約20%ほどです。 2GBのメモリを積んでいますので400MBほどしか使用していないことになります。 freeコマンドとtopコマンドでどうしてこんなに大きな差が出ているのでしょうか? また、どちらが正しい値なのでしょうか? ご存知の方がいらっしゃいましたら教えてください。 よろしくお願いいたします。