VPS で RAM を消費しているのは何ですか?

VPS で RAM を消費しているのは何ですか?

top を実行すると、502968 KB のうち 48064 KB が使用されており、16884 KB が空きになっていることがわかります。しかし、個々のプロセスを見ると、mysql が時々 RAM の 9.4% を消費していることがわかりますが、他には何も消費していないようです。何が RAM をすべて消費しているのでしょうか?

以下は上からのスクリーンキャプチャです:

top - 20:46:07 up 1 min,  1 user,  load average: 0.18, 0.05, 0.02
Tasks:  81 total,   1 running,  80 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.4 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:    502968 total,   241236 used,   261732 free,    10488 buffers
KiB Swap:   524284 total,        0 used,   524284 free,   106756 cached

PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
1584 dmackey   20   0 20508 1372 1000 R   0.4  0.3   0:00.01 top
1 root      20   0 26664 2456 1340 S   0.0  0.5   0:00.69 init
2 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kthreadd
3 root      20   0     0    0    0 S   0.0  0.0   0:00.01 ksoftirqd/0
4 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kworker/0:0
5 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/0:0H
6 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kworker/u:0
7 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/u:0H
8 root      rt   0     0    0    0 S   0.0  0.0   0:00.00 migration/0
9 root      20   0     0    0    0 S   0.0  0.0   0:00.00 rcu_bh
10 root      20   0     0    0    0 S   0.0  0.0   0:00.24 rcu_sched
11 root      rt   0     0    0    0 S   0.0  0.0   0:00.00 watchdog/0
12 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 cpuset
13 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 khelper
14 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kdevtmpfs
15 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 netns
16 root      20   0     0    0    0 S   0.0  0.0   0:00.00 bdi-default

以下は無料からのものです:

            total       used       free     shared    buffers     cached
Mem:        502968     355252     147716          0      10816     111548
-/+ buffers/cache:     232888     270080
Swap:       524284          0     524284

答え1

何もない。

それはLinuxであり、使い方

ディスク キャッシュには「空き」メモリを使用します。十分に活用されていないリソースがあっても意味がありません。

プロセスがより多くのメモリを必要とする場合、カーネルにメモリを要求し、(通常は)それを取得します。

/etc/my.cnfああ、そして MySQL は、アクセス時間を短縮するために、インデックス、クエリ、およびテーブルがディスクからメモリにキャッシュされるように、必要に応じて ( で構成されているとおりに) 使用します。

答え2

これは、最後に使用されたときにメモリ内に残されたジャンクです。ほとんどの場合、ディスクから読み取られたデータ、またはディスクに書き込まれたデータです。OS がメモリを解放しないのは、次の 3 つの理由により、それが無駄だからです。

  1. メモリがすぐに使用されない場合は、メモリを解放しても何も達成されません。

  2. メモリがすぐに使用される場合、メモリを解放することは、再び使用されるようにする必要があるときに元に戻す必要がある作業にすぎません。

  3. メモリ内にあった情報が再び必要になった場合、メモリを解放すると、メモリではなくディスクからその情報を取得する必要があり、速度が大幅に低下します。

現代のオペレーティング システムでは、他に選択肢がまったくない場合にのみメモリを解放します。「後で使用できるように、今すぐメモリを解放したい」と考えているなら、やめてください。後で使用するために、メモリを今すぐ解放する必要はありません。ここではトレードオフはなく、必要なときまでメモリを使用し続ける方が純粋に有利です。

答え3

将来の分析のために top の出力を記録するのが、質問に回答する最善の方法です。すぐに解決できる方法はありません。時間をかけて観察しながら調査する必要があります。メモリを使用しているものの表面をざっと調べるために私が使用している 1 回限りの方法は、これを root の crontab に入れることです。

/bin/bash top -b -n 1 | head > `/var/log/date +%e_%T`

次に、テキスト操作とページャー機能を使ってトレンドを追跡します。このスタックオーバーフローの投稿https://stackoverflow.com/questions/7908953/CPU使用量の測定方法には、このように top を使用するより包括的な例や、.toprcCPU 統計用に を介して top をカスタマイズする例がいくつかありますが、ニーズに合わせて簡単に調整できます。

関連情報