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
  • 移動開發(一):使用.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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...