天天看點

Linux檢視系統資訊及系統性能檢測指令

檢視系統資訊:

 ~# uname -a (Linux檢視版本目前作業系統核心資訊)

Linux iZ23onhpqvwZ 3.13.0-30-generic #54-Ubuntu SMP Mon Jun 9 22:47:59 UTC 2014 i686 i686 i686 GNU/Linux

檢視是否是centos還是ubuntu等:

root@isf:~# lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 14.04 LTS

Release: 14.04

Codename: trusty

(lsb全稱:Linux Standard Base)

檢視系統是32為還是64位:

法1:[root@linuxzgf ~]#uname -a

如果有x86_64就是64位的,沒有就是32位的

後面是X686或X86_64則核心是64位的,i686或i386則核心是32位的

 法2:getconf LONG_BIT 

[root@linuxzgf ~]#getconf LONG_BIT

[root@linuxzgf ~]#getconf WORD_BIT

(32位的系統中int類型和long類型一般都是4位元組,64位的系統中int類型還是4位元組的,但是long已變成了8位元組inux系統中可用"getconf WORD_BIT"和"getconf LONG_BIT"獲得word和long的位數。64位系統中應該分别得到32和64。)

法3:

直接看看有沒有/lib64目目錄的方法。64位的系統會有/lib64和/lib兩個目錄,32位隻有/lib一個。

檢視cpu資訊:

more /proc/cpuinfo

這個一大堆可能看不懂,一篇文章:linux cpuinfo詳解:

在Linux系統中,如何詳細了解CPU的資訊呢? 當然是通過cat /proc/cpuinfo來檢查了,但是比如幾個實體CPU/幾核/幾線程,這些問題怎麼确定呢?

經過檢視,我的開發機器是1個實體CPU,4核8線程,Intel(R) Core(TM) i7 CPU 860 

 @ 2.80GHz

記錄一下,判斷的過程和知識。

判斷依據:

1.具有相同core id的cpu是同一個core的超線程。

2.具有相同physical id的cpu是同一顆cpu封裝的線程或者cores。

英文版:

1.Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core.

2.Any cpu with the same physical id are threads or cores in the same physical socket.

echo "logical CPU number:"

#邏輯CPU個數

cat /proc/cpuinfo | grep "processor" | wc -l

echo "physical CPU number:"

#實體CPU個數:

cat /proc/cpuinfo | grep "physical id" | sort -u | wc -l

echo "core number in a physical CPU:"

#每個實體CPU中Core的個數:

cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'

#檢視core id的數量,即為所有實體CPU上的core的個數

cat /proc/cpuinfo | grep "core id" | uniq |  wc -l

#是否為超線程?

#如果有兩個邏輯CPU具有相同的”core id”,那麼超線程是打開的。或者siblings數目比cpu cores數目大。

#每個實體CPU中邏輯CPU(可能是core, threads或both)的個數:

cat /proc/cpuinfo | grep "siblings"

/proc/cpuinfo 檔案包含系統上每個處理器的資料段落。/proc/cpuinfo 描述中有 6 個條目适用于多核心和超線程(HT)技術檢查:processor, vendor id, physical id, siblings, core id 和 cpu cores。

processor 條目包括這一邏輯處理器的唯一辨別符。

physical id 條目包括每個實體封裝的唯一辨別符。

core id 條目儲存每個核心的唯一辨別符。

siblings 條目列出了位于相同實體封裝中的邏輯處理器的數量。

cpu cores 條目包含位于相同實體封裝中的核心數量。

如果處理器為英特爾處理器,則 vendor id 條目中的字元串是 GenuineIntel。

1.擁有相同 physical id 的所有邏輯處理器共享同一個實體插座。每個 physical id 代表一個唯一的實體封裝。

2.Siblings 表示位于這一實體封裝上的邏輯處理器的數量。

3.每個 core id 均代表一個唯一的處理器核心。

4.如果有一個以上邏輯處理器擁有相同的 core id 和 physical id,證明一個core上有多個線程,則說明系統支援超線程(HT)技術。

5.core id不同的邏輯處理器physical id相同,則說明這是一個多核心處理器。cpu cores 條目也可以表示是否支援多核心。

判斷CPU是否64位,檢查cpuinfo中的flags區段,看是否有lm辨別。

Are the processors 64-bit?   

A 64-bit processor will have lm ("long mode") in the flags section of cpuinfo. A 32-bit processor will not.

------------------------------------------------------

性能檢測:

1.uptime

uptime指令用于檢視伺服器運作了多長時間以及有多少個使用者登入,快速獲知伺服器的負荷情況。

uptime的輸出包含一項内容是load average,顯示了最近1,5,15分鐘的負荷情況。它的值代表等待CPU處理的程序數,如果CPU沒有時間處理這些程序,load average值會升高;反之則會降低。

關于load average了解:

了解Linux系統中的load average(圖文版)

2:top  //直接敲TOP即可。

//系統目前時間、啟動時間、目前登入數、平均負載 1、5、15分鐘負載值

top - 19:43:46 up 4 days, 10:46,  7 users,  load average: 0.25, 0.37, 0.38    

//程序總數、運作程序數、休眠程序數、終止程序數、僵死程序數    

Tasks: 222 total,   1 running, 221 sleeping,   0 stopped,   0 zombie

//使用者占用、系統占用、優先線程占用、閑置線程占用、

Cpu(s):  0.3%us,  0.1%sy,  0.0%ni, 98.5%id,  1.0%wa,  0.0%hi,  0.1%si,  0.0%st

//記憶體狀态(總記憶體、已用記憶體、閑置記憶體、緩存使用内容)

Mem:   8183648k total,  8124052k used,    59596k free,   115072k buffers

//交換記憶體(總交換記憶體、已用記憶體、閑置記憶體、高速緩存容量)

Swap:  2104472k total,  1369376k used,   735096k free,  1462236k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

    1 root      16   0   784   72   40 S    0  0.0   0:06.28 init

    2 root      RT   0     0    0    0 S    0  0.0   0:00.08 migration/0

    3 root      34  19     0    0    0 S    0  0.0   0:00.01 ksoftirqd/0

    4 root      RT   0     0    0    0 S    0  0.0   0:00.29 migration/1

    5 root      34  19     0    0    0 S    0  0.0   0:00.00 ksoftirqd/1

    6 root      RT   0     0    0    0 S    0  0.0   0:00.21 migration/2

    7 root      34  19     0    0    0 S    0  0.0   0:00.05 ksoftirqd/2

    8 root      RT   0     0    0    0 S    0  0.0   0:00.08 migration/3

    9 root      34  19     0    0    0 S    0  0.0   0:00.01 ksoftirqd/3

   10 root      10  -5     0    0    0 S    0  0.0   0:00.02 events/0

   11 root      10  -5     0    0    0 S    0  0.0   0:00.00 events/1 

參數詳解:top指令式将系統最敏感的參數資訊列出來。

PR   :系統程序的配置設定的處理時間,若是16,則表示配置設定了16*10毫秒的時間長度來處理該線程。數值越大,代表處理時間越長。

NI   :該程序的優先級

RES  :該程序占用的實體記憶體的總數量,機關是KB。 

SHR(SHARE) :該程序使用共享記憶體的數量。機關是KB

S(STAT) :該線程的狀态 

        S:代表休眠狀态;

        D:代表不可中斷的休眠狀态;

        R:代表運作狀态;

        Z:代表僵死狀态;

        T:代表停止或跟蹤狀态。 

%CPU :該程序自最近一次重新整理以來所占用的CPU時間和總時間的百分比

%MEM :該程序占用的實體記憶體占總記憶體的百分比。

TIME+:該線程啟動以來,占CPU的時間

常見用法:

top -d 3    //每三秒重新整理一次資料 預設是每5秒重新整理一次資料

Ctrl+L      //擦除并且重寫螢幕。

3:Free

free指令顯示系統的所有記憶體的使用情況,包括空閑記憶體、被使用的記憶體和交換記憶體空間。Free指令顯示也包括一些核心使用的緩存和緩沖區的資訊。     當使用free指令的時候,需要記住Linux的記憶體結構和虛拟記憶體的管理方法,比如空閑記憶體數量的限制,還有swap空間的使用并不标志一個記憶體瓶頸的出現。   

root@iZ23onhpqvwZ:~# free

total used free shared buffers cached

Mem: 1025632 949516 76116 656 144084 459500

-/+ buffers/cache: 345932 679700

Swap: 0 0 0

 我的linux執行free指令顯示如下:

[root@Linux /tmp]# free

             total       used       free     shared    buffers     cached

Mem:       4149156    4130412      18744          0      13220    2720160

-/+ buffers/cache:    1397032    2752124

Swap:      6289408        144    6289264第1行

total 記憶體總數: 4149156

used 已經使用的記憶體數: 4130412

free 空閑的記憶體數: 18744

shared 目前已經廢棄不用,總是0

buffers Buffer Cache記憶體數: 13220

cached Page Cache記憶體數: 2720160

關系:total = used + free

第2行:

-/+ buffers/cache的意思相當于:

-buffers/cache 的記憶體數:1397032 (等于第1行的 used - buffers - cached)

+buffers/cache 的記憶體數: 2752124 (等于第1行的 free + buffers + cached)

2個加起來是total。

可見-buffers/cache反映的是被程式實實在在吃掉的記憶體,而+buffers/cache反映的是可以挪用的記憶體總數。

第三行單獨針對交換分區, 就不用再說了.

為了提高磁盤存取效率, Linux做了一些精心的設計, 除了對dentry進行緩存(用于VFS,加速檔案路徑名到inode的轉換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁盤塊的讀寫,後者針對檔案inode的讀寫。這些Cache有效縮短了 I/O系統調用(比如read,write,getdents)的時間。

如果感興趣可以進一步參考檔案/proc/meminfo,free指令就是根據它的資訊生成的。free指令的源碼可從procps-xxx-.src.rpm擷取,xxx為版本号,比如procps-3.2.3-5.3.src.rpm。

參考核心代碼:

arch/i386/mm/init.c

fs/proc/proc_misc.c

include/linux/swap.h

mm/filemap.c

fs/buffer.c

繼續閱讀