• 締切済み

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

みんなの回答

  • k_izumo
  • ベストアンサー率50% (68/134)
回答No.1

普通に調べればイロイロ出てくるのに 何も調べてないんですか? って、こういう回答者が多いなぁ~ なんて思ってたけど ほんまに調べてないみたいな質問ですね。 関連性とはまた難しい表現で それぞれのコマンドは一貫性を持つ為のものではなく 用途が違います。 しかしながらどのコマンドも同じCPUやメモリー資源を使ってるので ほぼ同じ値を出してると言う事ですね。 vmstatの場合 おおよそのカーネル単位(システム単位)の資源使用率を監視する為のものです。 どのプロセスがとかなくて、現在走ってるプロセス数・メモリ使用率・CPU使用率を表示してます。 > vmstatコマンドでは「used」項目が表示されないためメモリの使用量が分からない?  (1)実装メモリー量からフリー領域 バッファ領域 キャッシュ領域を差し引いた値が   有効なメモリー使用量です。   515312 - (29812 + 137284 + 242088) = 106128   ※ ちなみに vmstat から「used」項目なるものを割り出したい場合は     実装メモリからフリー領域を差し引けば出てきます。   515312 - 29812 = 485500    freeの場合 メモリの分布を実測値で表示してます。 > 「buff(ers)」項目と「cashe(d)」項目は、実メモリの情報?仮想メモリの情報?  (2)実行プロセス数にも依存しますがプロセスは起動すると余分にメモリ空間を占有します。   それらの余分な領域(空の占有された領域)がバッファ領域です。   キャッシュ領域は今、まさに実行しているプロセスがデータを展開している領域です。 > 「buff(ers)」項目と「cashe(d)」とは?また違いは?  (3)この質問ではどこのバッファ領域とキャッシュ領域を聞いているのかわかりましぇ~ん   もうちょい聞きたい内容整理して下さいな。 > 「-/+ buffers/cache:」列の意味は?  (4)この「-/+」ってfreeコマンドにしかないのでfreeコマンドの結果聞いてるって意味でいいですよね?   えっと、上に書いてる通り余分なメモリー領域の話と実メモリー領域の話しましたよね   以下の通りそのまま平たく考えて下さいな   B. バッファ領域とキャッシュ領域とフリー領域で占有されている総量     29812 + 137284 + 242088 = 409184   A. 占有された全ての領域を差し引いて残ってるメモリー空間     515312 - 409184 = 106128     「A/B」=「-/+」の表示です。 少し荒々と説明しましたが表示内容は理解できました?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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になっているメモリを開放する方法はあるのでしょうか? また、どのようなメカニズムで解放されないのか教えていただけるとありがたいです。 よろしくお願いします。

  • freeコマンドの見方を教えてください。

    実行して以下のようになったのですが buffers=25100 cached=255876と -/+ buffers/cacheの列の意味が分かりません。 結果をどのように見ればよいでしょうか? [root@linux mrtg]# free       total used free shared buffers cached Mem: 255876 237760 18116 0 25100 95504 -/+ buffers/cache: 117156 138720 Swap: 522104 68888 453216

  • サーバ状況の見方と対策方法をどうすべきか?

    CentOS 4を導入してMySQLのインデックスを作っていますが、 サーバが動かなくなってしまい、どうしたらいいか困っています。 メモリを足すだけでよいのか? CPUを上げた方がよいのか? ハードディスクを取り替えた方がよいのか? どう見て、どう動けばよいのでしょうか? よろしくお願いします。 # vmstat 1 10 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 2 241628 872 1144 487020 19 8 1852 1270 5 1 12 2 45 41 0 1 241628 1616 1140 486428 0 0 3680 7084 1223 249 4 2 0 94 0 2 241628 2144 1140 485868 0 0 588 0 1153 315 6 0 0 94 0 1 241628 1936 1140 486120 0 0 556 0 1145 291 6 1 0 93 0 2 241628 1512 1108 486584 0 0 1192 0 1177 149 5 1 0 94 1 0 241628 2580 1084 485492 0 0 1332 2684 1205 247 3 4 0 93 0 2 241628 1656 1076 486400 0 0 1564 0 1191 153 4 1 0 95 0 2 241628 1128 1076 486920 0 0 1828 24 1214 95 0 1 0 99 0 2 241628 1256 1056 486856 0 0 1048 0 1176 176 3 1 0 96 0 2 241628 808 1052 487304 0 0 3764 0 1206 252 4 1 0 95 # top top - 11:52:27 up 9 days, 3:07, 1 user, load average: 1.83, 1.69, 1.66 Tasks: 49 total, 2 running, 47 sleeping, 0 stopped, 0 zombie Cpu(s): 0.7% us, 0.3% sy, 0.0% ni, 0.0% id, 98.0% wa, 1.0% hi, 0.0% si Mem: 507484k total, 506012k used, 1472k free, 1456k buffers Swap: 1052248k total, 241644k used, 810604k free, 485980k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21899 mysql 15 0 1257m 332m 332m S 1.3 67.2 243:22.41 mysqld 1 root 16 0 3252 88 68 S 0.0 0.0 0:01.17 init 2 root 34 19 0 0 0 S 0.0 0.0 0:00.13 ksoftirqd/0 3 root 5 -10 0 0 0 S 0.0 0.0 0:00.04 events/0 4 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 khelper 5 root 15 -10 0 0 0 S 0.0 0.0 0:00.00 kacpid 20 root 5 -10 0 0 0 S 0.0 0.0 0:00.00 kblockd/0 41 root 13 -10 0 0 0 S 0.0 0.0 0:00.00 aio/0 21 root 15 0 0 0 0 S 0.0 0.0 0:00.00 khubd 40 root 15 0 0 0 0 S 0.0 0.0 12:31.75 kswapd0 188 root 25 0 0 0 0 S 0.0 0.0 0:00.00 kseriod 296 root 15 0 0 0 0 D 0.0 0.0 2:40.01 kjournald # free total used free shared buffers cached Mem: 507484 505440 2044 0 1372 485748 -/+ buffers/cache: 18320 489164 Swap: 1052248 241640 810608

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

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

  • topコマンドの表示内容について教えてください

    topコマンドの表示内容に詳しい方、教えてください。 topコマンドを実行すると以下のように表示されました。 top - 16:24:13 up 2:23, 1 user, load average: 0.02, 0.01, 0.00 Tasks: 58 total, 1 running, 57 sleeping, 0 stopped, 0 zombie Cpu(s): 3.3% us, 2.0% sy, 0.0% ni, 94.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 3114724k total, 770612k used, 2344112k free, 18352k buffers Swap: 2096472k total, 0k used, 2096472k free, 87468k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2976 root 18 0 748m 613m 3188 S 10 20.2 6:53.72 aaaaa 1 root 16 0 1724 552 472 S 0 0.0 0:00.70 init 上記aaaaaプロセスの%CPUの数値なのですが、10%となっています。 しかし、idleが94.7%あるようなのです。 この10%と言う値は、何に対する10%なのでしょうか? すいませんが分かる方、よろしくお願いします。

  • サーバのメモリについて

    現在、CentOS5にてサーバを運用しています。 昨日から、ホスティング業者より、残メモリが少ない旨のメールが届くようになりました。 そこで、メモリを確認したところ以下のような状態でした。 #free -m total used free shared buffers cached Mem: 8118 5721 2397 0 372 4811 -/+ buffers/cache: 537 7580 Swap: 2047 0 2047 linuxはメモリに空きができると、バッファやキャッシュに割り当て、 そのバッファやキャッシュも空きメモリとして計算できるようですので、 上記のような場合ですと、7.5Gくらい空きがあるということになり、 問題ないと考えて大丈夫でしょうか。 また、バッファやキャッシュで確保しているメモリを解放する方法はありますでしょうか。

  • サーバのメモリ増設をするのですが・・・

    サーバのメモリ512M×2が常に使用量が多いようなので 1G×2に増設しようと思っています。 total used free shared buffers cached Mem: 1035464 1022208 13256 0 8604 911120 -/+ buffers/cache: 102484 932980 Swap: 2031608 864 2030744 そのメモリはPC3200 DDR 400のものです。 購入後一応memtestを走らせたいのですが、 サーバをできるだけ止めたくないのでPC2700まで使える 別のデスクトップのパソコンで確認することはできるでしょうか? 一応動くならデスクトップのパソコンで確認したいです。

  • コマンドラインのfreeでメモリ残量が減る

    Linuxの2.4系カーネルを使用した専用機を作っています。 Cで作ったメインプロセスの他、表示(GDK)、データベースなどのプロセスが 動いているのですが、起動中にコマンドラインから free -b -s 1 でメモリ使用量 のログをとってみると、最初は total used free shared buffers cached Mem: 253534208 238202880 15331328 0 4571136 138551296 -/+ buffers/cache: 95080448 158453760 Swap: 0 0 0 だったのが、freeのすぐ下の数値(15331328)がじわじわと減少していきます。 最初の朝の起動時には1533万バイトが、翌朝に1060万バイトほどになったので、 このままのペースだと3日ほどで0になりそうです。 この数値はどういう意味あいのデータなのでしょうか?

  • topコマンドで表示されるVIRT、RESおよびSWAPの意味について

    topコマンドで表示されるVIRT、RESおよびSWAPの意味について教えてください。 CentOS5.4上で動作しているアプリケーションの使用メモリについて調査しています。 サーバのメモリ容量は512MBで、この上でスワップアウトしないようにアプリケーションの起動数(常駐)を調整しようとしています。 topコマンドでプロセスが使用している物理メモリ容量はRES項目を見れば良いことがわかっていますが、VIRT(仮想メモリの総量)とSWAP(スワップされたサイズ)が具体的に何を示しているのかがわからず、困っています。 topコマンドの出力結果は下の通りです。 この検証用サーバでは暫定的にパーティション設定でスワップ領域を作成していません。 しかしtopコマンドではVIRTとRESの数値は差異があり、SWAP項目も大きな値を示しているプロセスがあります。 スワップ領域が無いのではtopコマンドはVIRTとRESが同じになり、SWAPはゼロとなると予想していたのですがどうしてならないのですか? top - 03:35:44 up 36 min, 3 users, load average: 0.13, 0.17, 0.20 Tasks: 90 total,  1 running, 89 sleeping,  0 stopped,  0 zombie Cpu(s): 0.0%us, 1.3%sy, 0.0%ni, 98.0%id, 0.0%wa, 0.0%hi, 0.7%si, 0.0%st Mem:  515340k total,  452152k used,  63188k free,  18132k buffers Swap:    0k total,    0k used,    0k free,  347404k cached  PID USER    PR NI VIRT RES SHR S %CPU %MEM  TIME+ SWAP COMMAND  4602 tomcat  25  0 645m 28m 6996 S 0.0 5.8  0:04.12 616m java  2227 root   34  19 25656 10m 2108 S 0.0 2.0  0:00.12 14m yum-updatesd  1680 root   17  0 11580 9964 240 S 0.0 1.9  0:00.02 1616 restorecond  1936 haldaemo 18  0 5472 3676 1688 S 0.0 0.7  0:01.20 1796 hald  2499 root   18  0 10540 2916 1504 S 0.0 0.6  0:00.03 7624 httpd  3672 root   15  0 10064 2888 2308 S 0.7 0.6  0:02.50 7176 sshd  3927 root   20  0 9916 2880 2308 S 0.0 0.6  0:00.34 7036 sshd  2054 root   18  0 10116 2328 1696 S 0.0 0.5  0:00.04 7788 cupsd  2500 apache  25  0 10540 2088 640 S 0.0 0.4  0:00.00 8452 httpd どうしてもズレるので画像を添付してます。

  • サーバーのメモリーの状態

    redhat linux 6.2 のサーバーで、特にアクセスはない状態として、 メモリーの状態を調べると、(free -m) total used free shared buffers cached Mem: 250 247 3 24 194 35 -/+ buffers/cache: 17 233 Swap: 517 0 517 と表示されます。 メモリーの使われている量が多すぎるような気がするのですが、これは、正常な値でしょうか。 (とくに、バッファーという所が、192Mも使われています。これは、正常な値でしょうか。そもそも、バッファーというのは、何を表しているのでしょうか。)

このQ&Aのポイント
  • nifty光の設定で接続できず、ユーザー名とパスワードに間違いはないが繋がらない状況です。
  • 初めてのネット接続で専門用語がわからないため、何か聞き落としてしまったのかもしれません。
  • iPhoneのWi-Fiは繋がっているが、インターネットには接続できません。
回答を見る