• ベストアンサー

freeとpsでメモリ使用量が違う?

あるプログラムを動かす為に、既存環境であとどのくらいメモリが使用できるかを調査しています。 そこでpsとfree(top)で調べたのですが、 ps alx でのRSSの合計値とfreeでのused が合いません。 多少ならいいのですが、psのRSSはfreeの半分くらいにしかなりません。 どうもfreeで表示されるメモリ使用量には何か含まれているような気がするのですが...。 ps alxの合計値を空きメモリ容量としていいのでしょうか? Redhat7.2 ps、freeはprocps version 2.0.7 です。

noname#41382
noname#41382

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

  • ベストアンサー
  • ojin
  • ベストアンサー率43% (280/638)
回答No.2

RedHat7.3です。 ps -axl、free -t 、top(ダイナミックにメモリーや、CPUのユーセージをみることができますが。) freeコマンドでみるのが正しいのではと思います。 freeコマンドで表示される「空きメモリ(free)」値にはハードディスクのバッファキャッシュに利用される「buffer」のメモリ量が含まれていません。実際の空きメモリ容量を知るには,「buffer」と「free」値を加える必要があります。

noname#41382
質問者

お礼

アドバイスありがとうございました。 >実際の空きメモリ容量を知るには,「buffer」と「free」値を加える必要があります。 > 空きメモリ容量となるとそうなるんですね。 実際のプログラムの容量が物理空きメモリより大きかったので、動かないのではと心配していました。 ただ、かなりメモリを積んでいるサーバを見ても、freeだと物理空きメモリが少ないのがちょっと気になってます。 psとfreeでは300MBくらい差があるのです。 同じような構成でメモリが少ないサーバは20MBくらいの差です。(物理メモリの空き容量は前サーバと変わらない) カーネルやドライバでそんなに変わるかな~とちょっと疑問です。 ところで、#1の補足にも記載しましたが、psで表示されないメモリを使用している一覧を表示する方法がありましたら 教えて頂きたいです。 よろしくお願いいたします。

noname#41382
質問者

補足

すみません、 Linuxは空きメモリをファイルキャッシュとして使うんですね。 せっかく説明されているのに...寝ぼけてました。m(_ _)m ありがとうございました。

その他の回答 (1)

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.1

psはプロセスの状態を見るコマンドなので、その時に動いているプロセスのメモリの使用状況しかわからないと思います。 多分、カーネルそのものとか、ドライバそのものが使用するメモリとかは含まれないでしょう。(未確認) freeはシステムの空きメモリを調べるコマンドなので こちらが正しい値と考えるべきでしょう。

noname#41382
質問者

補足

回答ありがとうございました。 >多分、カーネルそのものとか、ドライバそのものが使用するメモリとかは含まれないでしょう。 > そういうことなんですね。 そのカーネルやドライバの個別メモリ使用量を調べる方法はあるのでしょうか?

関連するQ&A

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

    メモリの使用量の確認方法について教えてください。 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コマンドでどうしてこんなに大きな差が出ているのでしょうか? また、どちらが正しい値なのでしょうか? ご存知の方がいらっしゃいましたら教えてください。 よろしくお願いいたします。

  • Memory使用量の変化

    4GB程のMemoryを積んであるRedhatサーバですが、時々メモリのFree領域が ものすごく少なくなる時があります。(free、vmstatコマンドにて確認) 通常は2GBぐらいFree領域ですが、時々120MBになったりします。。 Topコマンドで見ても特別にメモリを使用しているタスクは見当たりません。。。 どこでこれ程のメモリを使っているかを調べるいい方法はないでしょうか。。。

  • LINUXのメモリ

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

  • サーバのメモリの容量および使用量

    サーバのメモリの容量および使用量を調べたいのですがどのコマンドを 使用すればよいのでしょうか? ちなみにtopコマンドは使用できませんでした。

  • oracleのメモリ使用量が97%ほどに・・・減らしたいです

    いつもお世話になります。 oracle8.1.7がインストールされている Linux サーバに関して、現在メモリ使用量が逼迫しているためか、 時々OSの処理が重くなり、応答が無くなる事が多々発生して困っています。 Database:Oracle 8.1.7 Enterprise Edition Linux:RedHat Linux 6.2 freeコマンドで調べたところ、 --------------------------------------------------------------------------- [root@sample dir1]# free total used free shared buffers cached Mem: 2073296 1996752 76544 1575952 112904 813364 -/+ buffers/cache: 1070484 1002812 Swap: 2097136 2536 2094600 --------------------------------------------------------------------------- topコマンドで調べたところ(Shift + M でメモリ使用順としました) --------------------------------------------------------------------------- 6:05pm up 5:06, 2 users, load average: 0.22, 0.11, 0.10 69 processes: 66 sleeping, 1 running, 0 zombie, 2 stopped CPU states: 17.3% user, 1.4% system, 0.0% nice, 81.1% idle Mem: 2073296K av, 1996832K used, 76464K free, 2385012K shrd, 110684K buff Swap: 2097136K av, 2632K used, 2094504K free 816100K cached PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND 1672 oracle 0 0 848M 848M 847M S 604M 0.0 41.9 13:47 oracle 1710 oracle 4 0 458M 458M 456M S 445M 1.5 22.6 13:03 oracle 1767 oracle 6 0 350M 350M 348M S 337M 2.3 17.3 10:17 oracle 1764 oracle 6 0 347M 347M 342M S 331M 2.3 17.1 4:38 oracle 1915 oracle 16 0 84564 82M 80532 S 68M 29.2 4.0 0:59 oracle 1688 oracle 0 0 74804 72M 73592 S 71M 0.0 3.5 0:36 oracle 1677 oracle 0 0 62808 61M 61100 S 46M 0.0 3.0 0:44 oracle 848 oracle 0 0 39160 38M 37960 S 36M 0.0 1.8 0:01 oracle 854 oracle 0 0 30092 29M 29632 S 25M 0.0 1.4 0:01 oracle 852 oracle 0 0 14592 14M 14144 S 9.8M 0.0 0.7 0:02 oracle ---------------------------------------------------------------------------  ※10件のみとしました 上記となり、恐らくoracleがメモリ使用量を圧迫し、Swap領域も逼迫した場合にサーバ処理の 応答が無くなると推測しています。 上記を改善するために、init.ora 内の以下の項目を編集しようと考えていますが、数値を決めかねています。 サーバがフリーズ状態(僅かながらもゆっくり動いている)原因について、 何でも結構ですので、アドバイスいただけたらと思います。よろしくお願いいたします。 open_cursors = 1000 max_enabled_roles = 30 db_block_buffers = 64000 shared_pool_size = 524288000 large_pool_size = 1048576 java_pool_size = 0 log_checkpoint_interval = 10000 log_checkpoint_timeout = 1800 processes = 150 log_buffer = 532480 db_block_size = 8192 sort_area_size = 1048576 sort_area_retained_size = 1048576

  • メモリの使用量を詳細に監視するフリーソフトありますか?

    最近、メモリを1Gまで増設しました。しかるに、PCを起動し、PCVIEWでPCの情報を取ると、全容量1,048Mのうち、約300Mも使用されており、残り750程度が空き容量となっています。使用量の300Mが何に消費されているのか、詳細に監視できるソフトがあれば、もっとメモリを節約する対策も立てられると思います。どなたか、そういうフリーソフトをご存知ありませんか?

  • メモリ使用量の増加を防ぐ方法

    タスクマネージャーで初めにIEを起動したときには、物理メモリの容量よりも 合計は下回っていて、軽いんですが、その後、クリック、リンク等を繰り返し ていくうちに、PF使用量が増えて、物理メモリの容量をこえ、重くなってしま います。(プロセスのIEXPLORE.EXEのメモリ使用量も、IEを使用するにつれ 増えていきます。)だから、たとえメモリを増設しても、次第にPF使用量が増え ていくので、意味がないのではないかと思います。 そこで、聞きたいんですが、IEのメモリの増加を防ぐ方法、または、増加した メモリを減らす方法があれば教えてください。(IE以外は、それほどメモリは 使用していません)他のメモリを減らす必要はないと思いますが・・・ 回答よろしくお願いします。

  • 【メモリ]】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

  • Windowsのメモリ使用量が稼働プロセスと不一致

    Windows で使用しているメモリ量をプロセスごとに把握する際に、 検算としてリソースモニタのメモリタブに表示されるプロセスのメモリ量を合計してみましたが、 その容量がリソースモニタで表示されている物理メモリの使用サイズと一致しません。 ■使用マシン  OS : Windows Server 2008 R2 Enterprise 64bit  物理メモリ容量 : 16 GB ■リソースモニタでの出力内容  物理メモリ使用量 : 11241 MB  リソースモニタに表示されるプロセスの全メモリ合計(ワーキングセット) : 8306 MB  リソースモニタに表示されるプロセスの全メモリ合計(コミット) : 9509 MB タスクマネージャや tasklist コマンドで表示されるプロセスのメモリを合計しても、 同様に「物理メモリ使用量」の値に届かないため、プロセス外の何らかのものが メモリを使用していると推測されますが、実際はどうなのでしょうか? (共有メモリなど特定のプロセスに属さないメモリ領域など??) また、そういうものがあった場合、そのメモリ使用量をどのように確認すればよいでしょうか?

  • HP-UX11.0 プロセスのメモリ使用量のしらべかた

    MPI処理するプログラムのプロセス毎のメモリ使用量を調査したいのですが、以下の調査方法ではログがうまくのこりません。 以下の手順でSolaris8はうまくできます。 <手順> % script > log % top -s 1 を実行。 ほかの端末エミュレータでプログラムを実行。 プログラム終了後topを実行している端末エミュレータで、Ctrl+dでscriptの終了。ログの確認を % more log でプロセス毎のメモリ使用量を調べる。 以上なのですが、more でみると文字化けしてしまいます。 ほかにプロセス毎のメモリを調べる方法をご存知でしたら教えていただきたいと思います。宜しくお願い致します。