「top」がメモリ使用量が少ないことを示し、「free」がメモリ使用量が多いことを示すのはなぜですか?
Mem: 262144k total, 225708k used, 36436k free, 47948k buffers
Swap: 262136k total, 40k used, 262096k free, 110704k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1652 root 15 0 79456 14m 1728 S 0.0 5.6 0:00.02 miniserv.pl
3544 root 15 0 87920 3356 2584 R 0.0 1.3 0:00.01 sshd
3707 root 16 0 86704 3104 2416 S 0.0 1.2 0:00.00 sshd
3708 sshd 15 0 61864 1452 872 S 0.0 0.6 0:00.00 sshd
3548 root 16 0 10872 1432 1116 S 0.0 0.5 0:00.00 bash
1908 root 15 0 10876 1392 1072 S 0.0 0.5 0:00.00 sh
918 root 15 0 60520 1204 664 S 0.0 0.5 0:00.07 sshd
3624 root 15 0 12584 1180 920 R 0.0 0.5 0:00.00 top
926 root 18 0 19672 1152 576 S 0.0 0.4 0:00.00 crond
1 root 15 0 10324 704 588 S 0.0 0.3 0:00.02 init
311 root 16 -4 12580 704 388 S 0.0 0.3 0:00.06 udevd
874 root 16 0 5884 592 472 S 0.0 0.2 0:00.06 syslogd
877 root 18 0 3780 420 336 S 0.0 0.2 0:00.00 klogd
MEMの合計使用量= 12.1%
ただし、262mbのうち226mbが使用され、36mbは使用されていません。つまり、86.25%が使用されています。
スワップを考慮しても、合計メモリは262mb * 2 = 524mbです。 226mbが使用されるとすると、43.12%が使用されます。どちらも、上にリストされている実際の処理よりもはるかに高くなっています。
サーバーはCentOS5.2を実行している新しい256MBVPSであり、まだ何もインストールされていません。 webadminの実行;つまり、Pleskはありません。
この質問は基本的に、トップによって提供されているように見える矛盾する情報に関するものです。しかし、特にメモリを大量に消費するアプリケーションを実行していないサーバーの場合、このメモリ使用量は正常かどうかも疑問に思います。 Apache/Ruby EE/Passengerをインストールするつもりです。ただし、メモリ使用量がすでにこれほど高い場合は、それをどれだけうまく処理できるかわかりません。
上、つまり%MEM
列の数値は、RSS
メモリ(常駐セグメントサイズ、基本的には実際のデータが格納されているメモリ内の物理ページ)の量を物理合計のパーセンテージとしてカウントしています。マシンまたはVPSのメモリ。
一方、freeは、データがなく、バッファ、キャッシュ、またはカーネルに割り当てられていない物理メモリページの量をカウントしています。 Unixライクなオペレーティングシステムでは、OSはディスクキャッシュに空きページを使用して、その数をできるだけ少なくしようとします。空きメモリの値が高くなる可能性があるのは、マシンの起動直後、または大量の物理メモリ自体を消費していたプログラムを終了した場合のみです。
このメモリ使用量は正常ですか?簡単な答えはイエスです。 Unixプログラムでは、使用するよりもかなり多くのメモリを割り当てる(つまり、OSに要求する)のが一般的です。 VSS
列を見ると、リストされているプロセスの合計は463MBを超えています。それは
glibc
プロセスのメモリ使用量を把握することは、科学の私見よりも芸術です。 http://lwn.net の説明を参照してください。私のアドバイスは、iostat -xm
を注意深く監視し、マシンが大幅にスワップされていないことを確認することです。
デイブチェイニーの答えに加えて:
合計メモリ使用量からバッファとキャッシュを差し引いたもの(159M)は約67M、67/524Mは約12%です。プロセスの実行により多くのメモリが必要になると、システムは自動的に古いキャッシュをクリアして割り当てます。
無料で実行すると、プロセスを実行することで実際に使用されているメモリの量と、実際に使用可能なメモリの量がわかります。
$ free -m
total used free shared buffers cached
Mem: 247 218 29 0 46 96
-/+ buffers/cache: 74 172
Swap: 556 0 556
興味のある行は-/ + buffers/cacheです
おそらく、それがマシンで実行されているすべてのプロセスではなく、メモリ使用量でソートされた上位13個だけであることがわかります。
「ps」を実行すると、実行中のすべてのプロセスが表示されます。これは、Ubuntuのストックインストールでは109です。