vmstat命令

来源:http://www.cnblogs.com/cuicuicong/archive/2016/11/24/6097459.html
-Advertisement-
Play Games

vmstat是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對操作系統的虛擬記憶體、進程、CPU活動進行監控。他是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析。vmstat 工具提供了一種低開銷的系統性能觀察方式。因為 vmstat 本身就是低開銷工具 ...


vmstat是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對操作系統的虛擬記憶體、進程、CPU活動進行監控。他是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析。vmstat 工具提供了一種低開銷的系統性能觀察方式。因為 vmstat 本身就是低開銷工具,在非常高負荷的伺服器上,你需要查看並監控系統的健康情況,在控制視窗還是能夠使用vmstat 輸出結果。在學習vmstat命令前,我們先瞭解一下Linux系統中關於物理記憶體和虛擬記憶體相關信息。

物理記憶體和虛擬記憶體區別:

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

物理記憶體就是系統硬體提供的記憶體大小,是真正的記憶體,相對於物理記憶體,在linux下還有一個虛擬記憶體的概念,虛擬記憶體就是為了滿足物理記憶體的不足而提出的策略,它是利用磁碟空間虛擬出的一塊邏輯記憶體,用作虛擬記憶體的磁碟空間被稱為交換空間(Swap Space)。

作為物理記憶體的擴展,linux會在物理記憶體不足時,使用交換分區的虛擬記憶體,更詳細的說,就是內核會將暫時不用的記憶體塊信息寫到交換空間,這樣以來,物理記憶體得到了釋放,這塊記憶體就可以用於其它目的,當需要用到原始的內容時,這些信息會被重新從交換空間讀入物理記憶體。

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

要深入瞭解linux記憶體運行機制,需要知道下麵提到的幾個方面:

首先,Linux系統會不時的進行頁面交換操作,以保持儘可能多的空閑物理記憶體,即使並沒有什麼事情需要記憶體,Linux也會交換出暫時不用的記憶體頁面。這可以避免等待交換所需的時間。

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

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

因此,合理規劃和設計linux記憶體的使用,是非常重要的。

虛擬記憶體原理:

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

在Linux記憶體管理中,主要是通過“調頁Paging”和“交換Swapping”來完成上述的記憶體調度。調頁演算法是將記憶體中最近不常使用的頁面換到磁碟上,把活動頁面保留在記憶體中供進程使用。交換技術是將整個進程,而不是部分頁面,全部交換到磁碟上。

分頁(Page)寫入磁碟的過程被稱作Page-Out,分頁(Page)從磁碟重新回到記憶體的過程被稱作Page-In。當內核需要一個分頁時,但發現此分頁不在物理記憶體中(因為已經被Page-Out了),此時就發生了分頁錯誤(Page Fault)。

當系統內核發現可運行記憶體變少時,就會通過Page-Out來釋放一部分物理記憶體。經管Page-Out不是經常發生,但是如果Page-out頻繁不斷的發生,直到當內核管理分頁的時間超過運行程式的時間時,系統效能會急劇下降。這時的系統已經運行非常慢或進入暫停狀態,這種狀態亦被稱作thrashing(顛簸)。

 

1.命令格式:

vmstat [-a] [-n] [-S unit] [delay [ count]]

vmstat [-s] [-n] [-S unit]

vmstat [-m] [-n] [delay [ count]]

vmstat [-d] [-n] [delay [ count]]

vmstat [-p disk partition] [-n] [delay [ count]]

vmstat [-f]

vmstat [-V]

2.命令功能:

用來顯示虛擬記憶體的信息

3.命令參數:

-a:顯示活躍和非活躍記憶體

-f:顯示從系統啟動至今的fork數量 。

-m:顯示slabinfo

-n:只在開始時顯示一次各欄位名稱。

-s:顯示記憶體相關統計信息及多種系統活動數量。

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

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

-d:顯示磁碟相關統計信息。

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

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

-V:顯示vmstat版本信息。

 

命令:

vmstat

輸出:

複製代碼 [root@localhost ~]# vmstat 5 6
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 3029876 199616 690980    0    0     0     2    3    2  0  0 100  0  0
 0  0      0 3029752 199616 690980    0    0     0    41 1009   39  0  0 100  0  0
 0  0      0 3029752 199616 690980    0    0     0     3 1004   36  0  0 100  0  0
 0  0      0 3029752 199616 690980    0    0     0     4 1004   36  0  0 100  0  0
 0  0      0 3029752 199616 690980    0    0     0     6 1003   33  0  0 100  0  0 複製代碼

 0  0      0 3029752 199616 690980    0    0     0     5 1003   33  0  0 100  0  0 

 

 

說明:

欄位說明:

Procs(進程):

r: 運行隊列中進程數量

b: 等待IO的進程數量

Memory(記憶體):

swpd: 使用虛擬記憶體大小

free: 可用記憶體大小

buff: 用作緩衝的記憶體大小

cache: 用作緩存的記憶體大小

Swap:

si: 每秒從交換區寫到記憶體的大小

so: 每秒寫入交換區的記憶體大小

IO:(現在的Linux版本塊的大小為1024bytes)

bi: 每秒讀取的塊數

bo: 每秒寫入的塊數

系統:

in: 每秒中斷數,包括時鐘中斷。

cs: 每秒上下文切換數。

CPU(以百分比表示):

us: 用戶進程執行時間(user time)

sy: 系統進程執行時間(system time)

id: 空閑時間(包括IO等待時間),中央處理器的空閑時間 。以百分比表示。

wa: 等待IO時間

備註: 如果 r經常大於 4 ,且id經常少於40,表示cpu的負荷很重。如果bi,bo 長期不等於0,表示記憶體不足。如果disk 經常不等於0, 且在 b中的隊列 大於3, 表示 io性能不好。Linux在具有高穩定性、可靠性的同時,具有很好的可伸縮性和擴展性,能夠針對不同的應用和硬體環境調整,優化出滿足當前應用需要的最佳性能。因此企業在維護Linux系統、進行系統調優時,瞭解系統性能分析工具是至關重要的。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 線程是程式中完成一個獨立任務的完整執行序列,即一個可調度的實體;進程相當於運行中程式的一種抽象。根據運行環境的調度者的身份,線程可分為內核線程和用戶線程。內核線程,在有的系統上稱為LWP(Light Weight Process,輕量級線程),運行在內核空間,由內核調度;用戶線程運行在用戶空間,由線 ...
  • RAID0 定義: RAID 0又稱為Stripe或Striping,它代表了所有RAID級別中最高的存儲性能。RAID 0提高存儲性能的原理是把連續的數據分散到多個磁碟上存取,這樣,系統有數據請求就可以被多個磁碟並行的執行,每個磁碟執行屬於它自己的那部分數據請求。這種數據上的並行操作可以充分利用總 ...
  • 成功新建了一個虛擬機,在使用之前,必須進行各種配置 一,為虛擬機分配使用的記憶體 在Hyper-V Manager中,選中一個VM,點擊Settings,配置VM使用的記憶體資源。 使用動態記憶體時,為虛擬機分配記憶體,Startup記憶體是10GB,最小記憶體10GB,最大記憶體20GB; 二,為VM加域 1, ...
  • Linux中的文件管理機制是一種叫掛載和卸載的方式使用分區中的文件。 1.硬碟分區的概念 概述:首先我們要對硬碟分區的基本概念進行一些初步的瞭解,硬碟的分區主要分為基本分區(Primary Partion)和擴展分區(Extension Partion)兩種, 基本分區和擴展分區的數目之和不能大於四 ...
  • 1.設置佈局文件,自定義ratingbar樣式 2.在activity中設置監聽器 3.效果圖 ...
  • 使用Hyper-V創建VM,在VM成功安裝OS之後,發現VM只有一個邏輯盤C,用於存儲VM的操作系統。在產品環境中,需要向VM增加虛擬硬碟,便於將數據單獨存儲在不同的邏輯盤符中。在Hyper-V中,分兩步向VM中增加虛擬硬碟(Virtual Hard Disk): 在Hyper-V Manager中 ...
  • 一、VMware tools 通過VMware tools來實現主機和VM共用文件,詳細介紹 記得重啟就能實現本機和虛擬機之間複製粘貼文件。 二、搭建java環境: 一般linux都會預裝openjdk,先將其卸載。 1.下載dk-8u5-linux-x64.tar.gz文件,tar.gz格式只是一 ...
  • 已經在安裝CentOS時設置了中文輸入法,在“設置”-“區域與語言”選項里也可以看到如下圖所示的界面,但在文檔中切換後無法使用的問題: 方法:點擊輸入源向中的“+”,再點擊“更多”(即向下的省略號): 接著在最下行的搜索框中輸入“China”,選擇“漢語(Intelligent Pinyin)”,點 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...