web-dev-qa-db-ja.com

Linuxサーバーのメモリ使用量と平均負荷を理解する方法

128 GBのメモリと24コアを搭載したLinuxサーバーを使用しています。 topを使用して、使用量を確認します。その出力は、投稿の最後に貼り付けられます。ここに2つの質問があります:

(1)実行中の各プロセスがメモリの非常に小さな割合(%MEMは0.2%以下、ほとんどは0.0%)しか使用していないことがわかりますが、出力の4行目と同様に、合計メモリがほとんど使用されています( "Mem:130766620k合計、130161072k使用、605548kフリー、919300kバッファ")?すべてのプロセスで使用されるメモリの割合の合計が、ほぼ100%に達する可能性は低いと思いませんか?

(2)最初の行の負荷平均を理解する方法(「負荷平均:14.04、14.02、14.00」)?

よろしくお願いします!

編集:

ありがとう!

また、現在の負荷を理解せずにサーバーを要求するサーバーになったことがあるので、サーバーの負荷が高いかどうかを判断するために、メモリの使用率に基づいた大まかな数値を聞くのも大好きです。

スワップはメモリとほぼ同じですか?たとえば、メモリとスワップのサイズがほぼ同じで、メモリがほとんどなくなったが、スワップがまだほとんど解放されている場合、メモリ+スワップの使用率がまだ高くないように表示して、他の新しいメモリを実行できます。プロセス?

CPUまたはメモリ(またはメモリ+スワップ)の使用を一緒にどのように考慮しますか?どちらかが高すぎる、または両方が高すぎると心配になりますか?

トップの出力:

$トップ

 
 top-12:45:33 up up up 19 days、23:11、18 users、load average:14.04、14.02、14.00 
 Tasks:合計484、12実行中、472スリープ、0停止、 0ゾンビ
 CPU:36.7%us、19.7%sy、0.0%ni、43.6%id、0.0%wa、0.0%hi、0.0%si、0.0%st 
 Mem: 130766620k合計、130161072k使用、605548k空き、919300kバッファ
スワップ:合計63111312k、500556k使用、62610756k空き、124437752kキャッシュ
 
 PID USER PR NI VIRT RES SHR S%CPU% MEM TIME +コマンド
 6529 sanchez 18 -2 1075m 219m 13m S 100 0.2 13760:23 MATLAB 
 13210 timothy 18 -2 48336 37m 1216 R 100 0.0 3:56.75 absurdity 
 13888 timothy 18 -2 48336 37m 1204 R 100 0.0 2:04.89不条理
 14542チモシー18 -2 48336 37m 1196 R 100 0.0 1:08.34不条理
 14544チモシー18 -2 2888 2076 400 R 100 0.0 1 :06.14 CollectData 
 6183 sanchez 18 -2 1133m 195m 13m S 100 0.2 13676:04 MATLAB 
 6795 sanchez 18 -2 1079m 210m 13m S 100 0.2 13734:26 MATLAB 
 10178 timothy 18 -2 48336 37m 1204 R 100 0.0 11:33.93不条理
 12438 timothy 18 -2 48336 37m 1216 R 100 0.0 5:38.17不条理
 13661チモシー18-2 48336 37m 1216 R 100 0.0 2:44.13不条理
 14098チモシー18 -2 48336 37m 1204 R 100 0.0 1:58.31不条理
 14335チモシー18 -2 48336 37m 1196 R 100 0.0 1:08.93不条理
 14765チモシー18-2 48336 37m 1196 R 99 0.0 0:32.57不条理
 13445チモシー18 -2 48336 37m 1216 R 99 0.0 3:01.37不条理
 28990 root 20 0 0 0 0 S 2 0.0 65:50.21 pdflush 
 12141 tim 18 -2 19380 1660 1024 R 1 0.0 0:04.04 top 
 1240 root 15 -5 0 0 0 S 0 0.0 16:07.11 kjournald 
 9019ルート20 0 296m 4460 2616 S 0 0.0 82:19.51 kdm_greet 
 1ルート20 0 4028 728 592 S 0 0.0 0:03.11 init 
 2ルート15 -5 0 0 0 S 0 0.0 0:00.00 kthreadd 
 3ルートRT -5 0 0 0 S 0 0.0 0:01.01移行/0
 4ルート15 -5 0 0 0 S 0 0.0 0:08.13 ksoftirqd/0 
 5ルートRT -5 0 0 0 S 0 0.0 0:00.00ウォッチドッグ/0
 6ルート= RT -5 0 0 0 S 0 0.0 17:27.31 migration/1 
 7 root 15 -5 0 0 0 S 0 0.0 0:01.21 ksoftirqd/1 
 8ルートRT -5 0 0 0 S 0 0.0 0:00.00ウォッチドッグ/1
 9ルートRT -5 0 0 0 S 0 0.0 10:02.56 migration/2 
 10ルート15 -5 0 0 0 S 0 0.0 0:00.34 ksoftirqd/2 
 11ルートRT -5 0 0 0 S 0 0.0 0:00.00ウォッチドッグ/2
 12ルートRT -5 0 0 0 S 0 0.0 4:29.53移行/3
 13ルート15- 5 0 0 0 S 0 0.0 0:00.34 ksoftirqd/3 
57
Tim

Linuxを含むUnixライクなシステムは、利用可能なRAMを最も効率的に使用できるように設計されています。一般的に、RAMの各MBには次の3つの状態があります。

  1. 自由
  2. プロセスで使用
  3. バッファに使用

3番目の状態はスクラッチスペースとしてのみ使用され、必要に応じて再割り当てすることを目的としています。つまり、プログラムで使用可能な合計メモリは、実際にはFree + UsedforBuffersです。そのため、特定のプロセスに割り当てられているように表示される、実際に割り当てられたバッファ領域は表示されません。

負荷平均の質問は、簡単に誤解される可能性があるため、もう少し興味深いものです。詳細については、この linuxjournalの記事 を参照してください。最高の要約は記事からの直接の引用です、

負荷平均の計算は、Linuxの実行キュー内で実行中または割り込み不可能とマークされたプロセスの移動平均として最もよく考えられています。

つまり、負荷平均は(実行中のプロセスの数)+(IOで待機しているプロセスの数)と考えることができます。 $ CORE数のプロセスが実行されている可能性があることを常に念頭に置いておくと、14の負荷平均はかなり低いと言えます。

17
Scott Pack

sar manページから:

負荷平均は、実行可能なタスクまたは
実行中のタスク(R状態)の平均数、および指定された間隔で割り込みできない
スリープ(D状態)にあるタスクの数として計算されます。 。

uptime manページから:

システム負荷平均は、
が実行可能または中断できない状態にあるプロセスの平均数です。実行可能な状態のプロセス
は、CPUを使用しているか、CPUの使用を待機しています。 unin-
 terruptable状態のプロセスは、ディスクを待つなど、I/Oアクセスを待っています。
 3つの時間間隔で平均がとられます。負荷平均
はシステム内のCPUの数に対して正規化されていないため、負荷平均-
の経過時間が1であることは、4 
 CPUシステムは、75%の時間アイドルであったことを意味します。
  1. Linuxは、しばらくの間、topの行が基本的に役に立たないようにメモリを管理してきました。一般に、マシンのメモリのほとんどは、ユーザープロセスが必要としないさまざまな用途に割り当てられています。
  2. 負荷平均は、実行中または実行待機中のプロセスの平均数です。通常、システムのレイテンシ/応答性と強い負の相関があるため、できるだけ低くする必要があります。ただし、各CPUは常に何かを実行している可能性があるため、14でかなりうまくいっているようです。
3
chaos

負荷平均は素晴らしいことです。これにより、100%の使用率を超えて何が起こるかを理解できます。基本的には http://en.wikipedia.org/wiki/Load_%28computing%29

0
dmityugov