linux 系統監控系列之vmstat

来源:http://www.cnblogs.com/xiaoyanger/archive/2016/04/27/5422412.html
-Advertisement-
Play Games

vmstat的官方定義是:vmstat - Report virtual memory statistics,即虛擬記憶體的統計。 先來追根溯源: 什麼是虛擬記憶體? 答:虛擬記憶體就是磁碟上虛擬出來可以當記憶體使用的一個文件 為什麼要有虛擬記憶體? 答:程式需要經由記憶體來運行,如果程式執行時占用記憶體過多,內 ...


vmstat的官方定義是:vmstat - Report virtual memory statistics,即虛擬記憶體的統計。

先來追根溯源:

什麼是虛擬記憶體?

答:虛擬記憶體就是磁碟上虛擬出來可以當記憶體使用的一個文件

為什麼要有虛擬記憶體?

答:程式需要經由記憶體來運行,如果程式執行時占用記憶體過多,記憶體耗盡,就會影響程式運行,在這種情況下,虛擬記憶體就會站出來——調用硬碟空間來充當記憶體,緩解記憶體緊張的狀態,使程式順利的運行下去。但是經由硬碟的讀取遠不如直接從記憶體來讀取的效率高(所以有條件的話多買點記憶體條)

進入正題:

vmstat的監控項有什麼?

答:進程,記憶體,分頁,塊I/O,traps和CPU活動

vmstat的參數?

-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  顯示磁碟分區信息

如:[root@localhost /]# vmstat -p /dev/sda2

sda2       reads           read sectors            writes         requested writes
             41788           1781810             22914859         360923320

-s prints vm table  顯示記憶體相關統計信息和各種活動數量
-m prints slabinfo  顯示slabinfo信息,slab是Linux的一種記憶體分配機制,不具體關註了
-t add timestamp to output  在結果中顯示時間
-S unit size  指定記憶體顯示的單位,單位有k,K,m,M(1000, 1024, 1000000, or 1048576 bytes)

vmstat的結果解釋:

[root@localhost /]# vmstat -S m

procs -----------memory---------- ---swap-- -----io---- --system--  -----cpu-----
r b        swpd free buff cache        si so         bi bo        in cs      us sy id wa st

procs      r  運行和等待CPU的進程數

             b  等待資源的進程數

memory  swpd  虛擬記憶體使用量

              free   空閑記憶體量

              buff  作為buff使用的記憶體

              cache  作為cache使用的記憶體

swap      si   從磁碟讀入虛擬記憶體的交換量

             so   從虛擬記憶體寫入磁碟的交換量

IO         bi   從塊設備讀入的數據總量,讀磁碟 kb/s

            bo  從塊設備寫入的數據總量,寫磁碟  kb/s

system  in  每秒中斷數

            cs  每秒上下文切換次數

cpu      us sy id wa   用戶消耗、系統消耗、空閑狀態、IO等待消耗百分比      

            st 虛擬機的cpu損耗

主要關註:

r   最好不要超過cpu總數,長期大於的話需要重點關註

b   長期很高時需要註意

swpd   最好不要大於0,如果大於0,接著看si,so,如果為0或很低的話,沒事

si,so  數值比較高,並且在不斷變化時,說明記憶體不夠了,記憶體中的數據頻繁交換到交換分區中,這往往對系統性能影響極大

bi,bo  數值高表示io壓力大

擴展知識:

1 進程有哪些狀態

  答:進程是系統進行資源分配和調度的基本單位,它可以申請和擁有系統資源,是一個動態的概念。簡單可理解為“一個程式”被執行的過程即為“一個進程”,主要的狀態分為:就緒-運行-阻塞

        就緒即為已獲得資源,正在等待獲取CPU;運行是獲得CPU後程式執行的狀態;阻塞是指進程等待某種條件(如I/O操作或進程同步),在條件滿足之前無法繼續執行的狀態

        vmstat中的r和b可從中理解其原理

2 塊設備和字元設備

  答:是i/o設備的兩大分類。塊設備將信息存儲在固定大小的塊中,每個塊都有自己的地址。數據塊的大小通常在512位元組到32768位元組之間。塊設備的基本特征是每個塊都能獨立於其它塊而讀寫。磁碟是最常見的塊設備;字元設備是指在I/O傳輸過程中以字元為單位進行傳輸的設備,例如鍵盤,印表機等

3 上下文切換

  答:是指CPU從一個線程或進程切換到另一個線程或進程。CPU切換到另一個進程需要保存當前進程的狀態並恢復另一個進程的狀態:當前運行任務轉為就緒(或者掛起、刪除)狀態,另一個被選定的就緒任務成為當前任務。上下文切換包括保存當前任務的運行環境,恢復將要運行任務的運行環境。如果可運行的線程數大於CPU的數量,那麼OS會強行暫停正在執行的線程,從而使其他線程能夠使用CPU,這會引起上下文切換,而上下文切換會導致很大的CPU時間消耗,所以如果上下文切換頻繁時,需要關註

        通常在三種情況下可能會發生上下文切換:中斷處理,多任務處理,用戶態切換

4 中斷

  答:是指當出現需要時,CPU暫時停止當前程式的執行轉而執行處理新情況的程式和執行過程。當發生中斷時會引起上下文切換

 


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

-Advertisement-
Play Games
更多相關文章
  • 1、插入完整的行或一部分:INSERT INTO 表名(列名1~n) VALUES (對應的值1~n) 註意:1. 省略列名,也可以插入,但在將來表結構發生變化後,可能導致錯誤,因此一般不用; 2. 如果只對部分列插入數據,省略的那些列要麼可以為NULL,要麼有預設值,否則會發生錯誤; 3. 字元型 ...
  • 1、函數原型及參數說明 參數說明: n_components: 意義:PCA演算法中所要保留的主成分個數n,也即保留下來的特征個數n 類型:int 或者 string,預設時預設為None,所有成分被保留。 賦值為int,比如n_components=1,將把原始數據降到一個維度。 賦值為string ...
  • 最近上班時候,經常要做資料庫還原,時常遇到數據被占用的情況, 執行一句sql語句就可以解決, ALTER DATABASE dbname SET OFFLINE WITH ROLLBACK IMMEDIATE 記錄一下,以防下次要用的時候,忘記了。 ...
  • 一年前,我寫了在索引的導航結構里,SQL Server如何存儲VARCHAR列。我們都知道,在SQL Server里索引(聚集索引,非聚集索引)的鍵列有最大900byte的大小限制。 假設現在你想捉弄下SQL Server,在VARCHAR(8000)的列上創建一個索引,併在索引鍵列上插入超900b ...
  • 一、資料庫基礎知識 1.概念 資料庫全稱資料庫管理系統,簡稱DBMS,是一種在電腦中,針對數據進行管理、存儲、共用的一種技術。 2.分類 資料庫的發展過程中,按邏輯模型可分為以下幾種: 3.關係型資料庫 PS: 1.候選鍵、主鍵、外鍵都是需要用戶來定義的,一般來說,這些鍵的定義都會和業務、真實數據 ...
  • 由於原圖片較大插入會失敗,提供原圖片下載鏈接:http://pan.baidu.com/s/1eStxvSe 轉載請註明:http://www.cnblogs.com/zpfbuaa 拍攝水平有限。。。O(∩_∩)O~ ...
  • 第一範式 1. 在任何一個關係型的資料庫中,必須滿足第一範式,否則不能稱為關係型資料庫。 數據表每一列都是一個不可分割的數據項,同一列中不能有多個值,實體中不能有一個或者多個重覆值。數據表的所有欄位的值都是不可分割的原子值。 第二範式 1. 第二範式必須在第一範式的基礎上建立。他要求數據表的每個實例 ...
  • Linux tree命令用於以樹狀圖列出目錄的內容。 執行tree指令,它會列出指定目錄下的所有文件,包括子目錄里的文件。 語法 參數說明: 實例 以樹狀圖列出當前目錄結構。可直接使用如下命令: 常見的用法: tree -a 顯示所有 tree -d 僅顯示目錄 tree -L n n代表數字..表 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...