linuxメモリ/cpu利用率引き出しvmstatコマンドfreeコマンド

8118 ワード

1.メモリ使用率=メモリ使用量/総メモリmemrate=memused/memtotal freeコマンドでシステムメモリの使用量を取得します.freeコマンドの元のアドレス:http://www.cnblogs.com/coldplayerest/archive/2010/02/20/1669949.html 詳しく説明してイメージして、私はここで簡単な整理しかしていません.
次はfreeの実行結果で、全部で4行あります.説明の便宜上、列番号を付けました.これによりfreeの出力を2次元配列FO(Free Output)と見なすことができる.例:
FO[2][1] = 24677460
FO[3][2] = 10321516  
                   1          2          3          4          5          6
1              total       used       free     shared    buffers     cached
2 Mem:      24677460   23276064    1401396          0     870540   12084008
3 -/+ buffers/cache:   10321516   14355944
4 Swap:     25151484     224188   24927296

freeの出力は全部で4行あり,第4の動作交換領域の情報は,それぞれ交換の総量(total),使用量(used),どれだけ空き交換領域(free)であるかが明らかであり,これはあまり多くは言わない.1行目の出力はオペレーティングシステム(OS)から見たものです.つまり、OSの観点から見ると、コンピュータには次のようなものがあります.
24677460 KB(デフォルトではfreeの単位はKB)物理メモリ、すなわちFO[2][1].これらの物理メモリには23276064 KB(すなわちFO[2][2])が使用されている.さらに1401396 KB(すなわちFO[2][3])で利用可能である.
ここで最初の式が得られます.
FO[2][1] = FO[2][2] + FO[2][3]

FO[2][4]は、いくつかのプロセスによって共有されるメモリを表し、現在deprecatedされており、その値は常に0である(もちろん、一部のシステムでは0ではない可能性もあり、主にfreeコマンドがどのように実現されるかに依存する).
FO[2][5]は、OS bufferが住んでいるメモリを表す.FO[2][6]は、OS cacheによるメモリを表す.bufferとcacheの2つの言葉はよく混用されることがあります.しかし、いくつかの比較的低いレベルのソフトウェアでは、この2つの言葉を区別し、外国人の洋文を見ています.
A buffer is something that has yet to be "written" to disk. 
A cache is something that has been "read" from the disk and stored for later use.

すなわちbufferはdisk(ブロックデバイス)に出力するデータを格納するためのものであり、cacheはdiskから読み出したデータを格納するものである.両者は、IO性能を向上させるため、OSによって管理される.ここでは2つの式を使用します.
FO[3][2] = FO[2][2] - FO[2][5] - FO[2][6]
FO[3][3] = FO[2][3] + FO[2][5] + FO[2][6]

では、メモリ占有率を算出するために用いられる占有メモリは、実はF 0である[3][2].すなわち、メモリの総占有-buffer/cache(システムによって迅速に回収できるメモリ)の総メモリがF 0である[2][1]memrate=F 0[3][2]/F 0[2][1]コマンドライン:memused=free-k|tail-2|head-1|awk'{print$3}'memtotal=free-k|tail-3|head-1|awk'{print$2}
2.cpu使用率を取得vmstatコマンドでcpu使用率vmstatコマンドの元のアドレスを取得できます.http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html
一般的なvmstatツールの使用は、2つの数値パラメータで行われます.1つ目のパラメータは、サンプリングの間隔数、単位は秒、2つ目のパラメータは、サンプリングの回数などです.
root@ubuntu:~# vmstat 2 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0      0 3498472 315836 3819540    0    0     0     1    2    0  0  0 100  0

id         CPU,    ,id + us + sy = 100,     id   CPU   ,us
           CPU   ,sy   CPU   。

cpurateを計算するときは、何度も取得することをお勧めします.特に、スクリプトでcpyrateを取得する場合は、一般的に1回だけ取得するのは正確ではありません.スクリプトで2回以上取得し、最初のデータを排除することをお勧めします.次のようになります.
id=vmstat 1 2|tail -1 | awk '{print $15}'

        cpurate = 1-id%