<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      bingo0510

      VMSTAT監控CPU使用率,內存使用,虛擬內存交換情況

      Linux性能監控分析命令(一)—vmstat命令詳解

      一、vmstat介紹

      語法格式: vmstat [-V] [-n] [-S unit] [delay [count]]

                    -V prints version.

                    -n causes the headers not to be reprinted regularly.

                    -a print inactive/active page stats.

                    -d prints disk statistics

                    -D prints disk table

                    -p prints disk partition statistics

                    -s prints vm table

                    -m prints slabinfo

                    -t add timestamp to output

                    -S unit size

                    delay is the delay between updates in seconds.

                    unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)

                    count is the number of updates.

      參數解釋:

      -V:顯示vmstat版本信息

      -n:只在開始時顯示一次各字段名稱

      -a:顯示活躍和非活躍內存

      -d:顯示各個磁盤相關統計信息

      -D:顯示磁盤總體信息

      -p:顯示指定磁盤分區統計信息

      -s:顯示內存相關統計信息及多種系統活動數量

      -m:顯示slabinfo

      -t:在輸出信息的時候也將時間一并輸出出來

      -S:使用指定單位顯示。參數有k、K、m、M,分別代表1000、1024、1000000、1048576字節(byte)。默認單位為K(1024bytes)

      delay:刷新時間間隔。如果不指定,只顯示一條結果

      count:刷新次數。如果不指定刷新次數,但指定了刷新時間間隔,這時刷新次數為無窮

      二、vmstat各字段說明

      1、procs

      r:表示運行和等待CPU時間片的進程數(就是說多少個進程真的分配到CPU),這個值如果長期大于系統CPU個數,說明CPU不足,需要增加CPU

      b:表示在等待資源的進程數,比如正在等待I/O或者內存交換等。

      2、memory

      swpd:表示切換到內存交換區的內存大小,即虛擬內存已使用的大小(單位KB),如果大于0,表示你的機器物理內存不足了,如果不是程序內存泄露的原因,那么你該升級內存了或者把耗內存的任務遷移到其他機器。

      free:表示當前空閑的物理內存

      buff:表示baffers cached內存大小,也就是緩沖大小,一般對塊設備的讀寫才需要緩沖

      Cache:表示page cached的內存大小,也就是緩存大小,一般作為文件系統進行緩沖,頻繁訪問的文件都會被緩存,如果cache值非常大說明緩存文件比較多,如果此時io中的bi比較小,說明文件系統效率比較好

      3、swap

      si:表示有磁盤調入內存,也就是內存進入內存交換區的內存大小;通俗的講就是 每秒從磁盤讀入虛擬內存的大小,如果這個值大于0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。

      so:表示由內存進入磁盤,也就是由內存交換區進入內存的內存大小。

      注意:一般情況下si、so的值都為0,如果si、so的值長期不為0,則說明系統內存不足,需要增加系統內存

      4、io

      bi:表示由塊設備讀入數據的總量,即讀磁盤,單位kb/s

      bo:表示寫到塊設備數據的總量,即寫磁盤,單位kb/s

      注意:如果bi+bo的值過大,且wa值較大,則表示系統磁盤IO瓶頸

      5、system

      in:表示某一時間間隔內觀測到的每秒設備終端數

      cs:表示每秒產生的 上下文切換次數,例如我們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apache和nginx這種web服務器中,我們一般做性能測試時會進行幾千并發甚至幾萬并發的測試,選擇web服務器的進程可以由進程或者線程的峰值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,我們的代碼就會進入內核空間,導致上下文切換,這個是很耗資源,也要盡量避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,導致CPU干正經事的時間少了,CPU沒有充分利用,是不可取的。

      注意:

      這兩個值越大,則由內核消耗的CPU就越多

      6、CPU

      us:表示用戶進程消耗的CPU時間百分比,us值越高,說明用戶進程消耗CPU時間越多,如果長期大于50%,則需要考慮優化程序或者算法

      sy:表示系統內核進程消耗的CPU時間百分比,一般來說us+sy應該小于80%,如果大于80%,說明可能存在CPU瓶頸

      id:表示CPU處在空間狀態的時間百分比

      wa:表示IP等待所占用的CPU時間百分比,wa值越高,說明I/O等待越嚴重,根據經驗wa的參考值為20%,如果超過20%,說明I/O等待嚴重,引起I/O等待的原因可能是磁盤大量隨機讀寫造成的,也可能是磁盤或者監控器的貸款瓶頸(主要是塊操作)造成的

      綜上所述,如果評估CPU,需要重點關注procs項的r列值和CPU想的us、sy、wa列的值

      三、使用實踐

      一般vmstat工具的使用是通過兩個數字參數來完成的,第一個參數是采樣的時間間隔數,單位是秒,第二個參數是采樣的次數,如:

      2表示每個兩秒采集一次服務器狀態,1表示只采集一次。
      實際上,在應用過程中,我們會在一段時間內一直監控,不想監控直接結束vmstat就行了,例如:

      這表示vmstat每2秒采集數據,一直采集,直到我結束程序,這里采集了7次數據我就結束了程序。

       2)[sunjimeng@localhost ~]$ vmstat 2        每二秒顯示一次系統內存的統計信息

      復制代碼
      [sunjimeng@localhost ~]$ vmstat 2
      procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
       r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
       1  0      0 853508    752 507144    0    0     7     1   80  119  2  1 97  0  0
       0  0      0 853508    752 507144    0    0     0     0  376  466  3  2 96  0  0
      ......
      復制代碼

            3)[sunjimeng@localhost ~]$ vmstat 2 5       每二秒顯示一次系統內存的統計信息,總共5次 

      復制代碼
      [sunjimeng@localhost ~]$ vmstat 2 5
      procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
       r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
       1  0      0 853888    752 507152    0    0     7     1   81  119  2  1 97  0  0
       0  0      0 853888    752 507152    0    0     0     0  609  763  5  2 92  0  0
       1  0      0 853888    752 507152    0    0     0     0  582  626  5  2 93  0  0
       0  0      0 853888    752 507152    0    0     0     0  399  464  3  2 95  0  0
       0  0      0 853888    752 507152    0    0     0     0  263  365  3  1 96  0  0
      [sunjimeng@localhost ~]$ 
      復制代碼

            4)[sunjimeng@localhost ~]$ vmstat -d       顯示磁盤的信息

      復制代碼
      [sunjimeng@localhost ~]$ vmstat -d
      disk- ------------reads------------ ------------writes----------- -----IO------
             total merged sectors      ms  total merged sectors      ms    cur    sec
      sda    11582    610  838780  116523   7805   1068  133502  564406      0     73
      sr0        0      0       0       0      0      0       0       0      0      0
      [sunjimeng@localhost ~]$ 
      復制代碼

             merged:表示一次來自于合并的寫/讀請求,一般系統會把多個連接/鄰近的讀/寫請求合并到一起來操作。

            5)[sunjimeng@localhost ~]$ vmstat -a       顯示活躍內存與非活躍內存

            使用-a選項顯示活躍和非活躍內存時,所顯示的內容除增加inact和active外,其他顯示內容與例子1相同。

      復制代碼
      [sunjimeng@localhost ~]$ vmstat -a
      procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
       r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
       1  0      0 854904 316268 604280    0    0     7     1   81  119  2  1 97  0  0
      [sunjimeng@localhost ~]$ 
      復制代碼

            6)[sunjimeng@localhost ~]$ vmstat -f      查看系統已經被fork多少次

      [sunjimeng@localhost ~]$ vmstat -f
              17873 forks
      [sunjimeng@localhost ~]$ 

            7)[sunjimeng@localhost ~]$ vmstat -p devtmpfs  查看特定磁盤設備的

      復制代碼
      [sunjimeng@localhost ~]$ df
      文件系統          1K-塊    已用     可用 已用% 掛載點
      /dev/sda3      18555904 3583564 14972340   20% /
      devtmpfs         997908       0   997908    0% /dev
      tmpfs           1006936     148  1006788    1% /dev/shm
      tmpfs           1006936    9080   997856    1% /run
      tmpfs           1006936       0  1006936    0% /sys/fs/cgroup
      /dev/sda1        303788  113264   190524   38% /boot
      [sunjimeng@localhost ~]$ vmstat -p devtmpfs
      partition was not found
      [sunjimeng@localhost ~]$ vmstat -p /dev/sda1
      sda1          reads   read sectors  writes    requested writes
                      1151      51564       1034       4138   
      復制代碼

        說明:

        這些信息主要來自于/proc/diskstats。

        reads:         來自于這個分區的讀的次數。

        read sectors:      來自于這個分區的讀扇區的次數。

        writes:         來自于這個分區的寫的次數。

        requested writes:    來自于這個分區的寫請求次數。

            8)[root@localhost sunjimeng]# vmstat -m        顯示slabinfo

       

      (5)其他:

          1.物理內存和虛擬內存區別:

            物理內存讀寫數據要比從硬盤讀寫數據要快的多,因此,我們希望所有數據的讀取和寫入都在內存完成,而內存是有限的,這樣就引出了物理內存與虛擬內存的概念。

            物理內存就是系統硬件提供的內存大小,是真正的內存;在Linux系統下,虛擬內存就是為了滿足物理內存的不足而提出的策略,它是利用磁盤空間虛擬出的一塊邏輯內存,用作虛擬內存的磁盤空間被稱為交換空間(Swap Space)。作為物理內存的擴展,linux會在物理內存不足時,使用交換分區的虛擬內存。(更詳細的說,就是內核會將暫時不用的內存塊信息寫到交換空間,這樣以來,物理內存得到了釋放,這塊內存就可以用于其它目的,當需要用到原始的內容時,這些信息會被重新從交換空間讀入物理內存。)

          2.linux內存運行機制:

            linux的內存管理采取的是分頁存取機制,為了保證物理內存能得到充分的利用,內核會在適當的時候將物理內存中不經常使用的數據塊自動交換到虛擬內存中,而將經常使用的信息保留到物理內存。

            1)首先,Linux系統會不時的進行頁面交換操作,以保持盡可能多的空閑物理內存,即使并沒有什么事情需要內存,Linux也會交換出暫時不用的內存頁面。這可以避免等待交換所需的時間。 

            2)其次,linux進行頁面交換是有條件的,不是所有頁面在不用時都交換到虛擬內存,linux內核根據”最近最經常使用“算法,僅僅將一些不經常使用的頁面文件交換到虛擬內存,有時我們會看到這么一個現象:linux物理內存還有很多,但是交換空間也使用了很多。其實,這并不奇怪,例如,一個占用很大內存的進程運行時,需要耗費很多內存資源,此時就會有一些不常用頁面文件被交換到虛擬內存中,但后來這個占用很多內存資源的進程結束并釋放了很多內存時,剛才被交換出去的頁面文件并不會自動的交換進物理內存,除非有這個必要,那么此刻系統物理內存就會空閑很多,同時交換空間也在被使用,就出現了剛才所說的現象了。關于這點,不用擔心什么,只要知道是怎么一回事就可以了。

            3)最后,交換空間的頁面在使用時會首先被交換到物理內存,如果此時沒有足夠的物理內存來容納這些頁面,它們又會被馬上交換出去,如此以來,虛擬內存中可能沒有足夠空間來存儲這些交換頁面,最終會導致linux出現假死機、服務異常等問題,linux雖然可以在一段時間內自行恢復,但是恢復后的系統已經基本不可用了。

            4)因此,合理規劃和設計linux內存的使用,是非常重要的。

          3.虛擬內存原理:

            在系統中運行的每個進程都需要使用到內存,但不是每個進程都需要每時每刻使用系統分配的內存空間。當系統運行所需內存超過實際的物理內存,內核會釋放某些進程所占用但未使用的部分或所有物理內存,將這部分資料存儲在磁盤上直到進程下一次調用,并將釋放出的內存提供給有需要的進程使用。

            在Linux內存管理中,主要是通過“調頁Paging”和“交換Swapping”來完成上述的內存調度。調頁算法是將內存中最近不常使用的頁面換到磁盤上,把活動頁面保留在內存中供進程使用。交換技術是將整個進程,而不是部分頁面,全部交換到磁盤上。 分頁(Page)寫入磁盤的過程被稱作Page-Out,分頁(Page)從磁盤重新回到內存的過程被稱作Page-In。當內核需要一個分頁時,但發現此分頁不在物理內存中(因為已經被Page-Out了),此時就發生了分頁錯誤(Page Fault)。 當系統內核發現可運行內存變少時,就會通過Page-Out來釋放一部分物理內存。經管Page-Out不是經常發生,但是如果Page-out頻繁不斷的發生,直到當內核管理分頁的時間超過運行程式的時間時,系統效能會急劇下降。這時的系統已經運行非常慢或進入暫停狀態,這種狀態亦被稱作thrashing(顛簸)。

          4.buffer與cache的區別

          buff和cache的主要區別是在控制和速度上。buff的控制相對簡單,是對數據流緩沖,將需要的數據流臨時緩沖在buff里,以降低低速設備對整體的影響。一般都是對大量的數據交換進行緩沖;cache是對高速交換進行緩沖,需要一些額外的算法來提高效率,比如讀取命中之類的,一般相對較小,速度很快,大多是對指令的臨時存儲。

       

      ========================================

      參考:

      http://www.rzrgm.cn/ggjucheng/archive/2012/01/05/2312625.html

      posted on 2018-04-04 15:56  bingo0510  閱讀(2785)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 夜色福利站WWW国产在线视频| 欧美人与动牲猛交A欧美精品| 国产免费久久精品44| 欲乱人妻少妇邻居毛片| 国产精品疯狂输出jk草莓视频| 亚洲av成人精品日韩一区| 国产精品人妻中文字幕| 偷自拍另类亚洲清纯唯美| 亚洲人成网站色7799| 亚洲日本中文字幕乱码中文| 亚洲成av人片在www鸭子| 蜜桃视频无码区在线观看 | 高清在线一区二区三区视频| 亚洲国产精品午夜福利| av无码精品一区二区三区四区| 久热这里只有精品12| 国产中文成人精品久久久| 精品久久久久中文字幕日本| 夜夜影院未满十八勿进| 人妻少妇精品视频专区| 亚洲日韩欧洲乱码av夜夜摸 | 国产精品天堂蜜av在线播放| 乱码精品一区二区亚洲区| 麻豆成人传媒一区二区| 在线观看国产午夜福利片 | 国产极品美女高潮抽搐免费网站| 国产成人精品久久一区二区| 97夜夜澡人人爽人人模人人喊| 平陆县| 好吊视频专区一区二区三区| 精品国产人妻一区二区三区久久 | 污网站大全免费| 免费无码又爽又刺激成人| 亚洲日韩精品无码av海量| 深圳市| 日本在线a一区视频高清视频| 西西大胆午夜人体视频| 高清有码国产一区二区| 亚洲av激情五月性综合| 激情综合五月网| 精品三级在线|