從uptime、stress、mpstat、pidstat觀察CPU密集型、IO密集型、進程密集型切換的系統性能

uptime

dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ uptime10:27:10 up 7 min,  1 user,  load average: 1.32, 0.99, 0.49

結果分別對應:當前時間、系統運行時間、當前用戶數目、過去 1 分鐘、5 分鐘、15 分鐘的平均負載(Load
Average)

平均負載是指單位時間內,系統處于可運行狀態和不可中斷狀態的平均進程數,也就是平均活躍進程數,和 CPU使用率沒有直接關系。

可運行狀態進程:正在使用CPU或者正在等待CPU的進程;即ps命令看到的,處于R狀態的進程

不可中斷狀態進程:正處于內核態關鍵流程中的進程,并且這些流程是不可打斷的,比如等待硬件設備的I/O響應,即ps命令中看到的D狀態的進程。

不可中斷狀態實際上是系統對進程和硬件設備的一種保護機制。
下面語句可以得到CPU個數,一般來說,平均負載大于CPU的0.7倍時就需要注意了,大于CPU個數的話就會出現過載。

grep 'model name' /proc/cpuinfo | wc -l
8

通過對于平均負載的定義可以看出,它不僅包括了正在使用CPU的進程,還包括等待CPU和等待IO的進程。

CPU使用率與平均負載的關系:

CPU密集型進程,使用大量CPU會導致平均負載升高,兩者一致。

I/O密集型進程,等待I/O也會導致平均負載升高,但CPU使用率不一定很高。

大量等待CPU的進程調度也會導致平均負載升高,此時的CPU使用率也會比較高。
接下來是實測:

CPU 密集型進程

stress 是一個 Linux 系統壓力測試工具,我們在終端1運行該工具。
終端2,不斷運行uptime,可以發現平均負載在不斷上升。
mpstat 是一個常用的多核 CPU 性能分析工具,用來實時查看每個 CPU 的性能指標,以
及所有 CPU 的平均指標,我們在終端3運行它。可以發現有一個核的使用率為100%,但是iowait為0.
在這里插入圖片描述
通過運行# pidstat -u 5 1,可以看到是運行stress的進程占用率為100%
在這里插入圖片描述

IO密集型進程

stress 命令,但這次模擬 I/O 壓力,即不停地執行 sync,下面是顯示效果,可以發現iowait很高,導致了平均負載很高。
在這里插入圖片描述
在這里插入圖片描述

大量進程場景

由于機子有8個核,我開12個進程用作運行stress,這樣CPU處于過載狀態,10.92明顯是比8大的,再用pidstat可以看出
在這里插入圖片描述
個進程等待 CPU 的時間(也就是代碼塊中的%wait 列)高達 60~75%,這里就是上圖的倒數第二列顯示。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376933.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376933.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376933.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解析和創建xml

http://www.cnblogs.com/Li-Cheng/p/3610474.html 轉載于:https://www.cnblogs.com/mxw272618/p/3769900.html

python - VirtualEnv virtualenvwrapper

VirtualEnv 是什么 VirtualEnv用于在一臺機器上創建多個獨立的python運行環境,VirtualEnvWrapper為前者提供了一些便利的命令行上的封裝。 為什么要用 - 隔離項目之間的第三方包依賴,如A項目依賴django1.2.5,B項目依賴django1.3。- 為部署應用…

多臺計算機共享內存_共享內存多處理器和指令執行| 計算機架構

多臺計算機共享內存共享內存多處理器 (Shared Memory Multiprocessor) There are three types of shared memory multiprocessor: 共有三種類型的共享內存多處理器: UMA (Uniform Memory Access) UMA(統一內存訪問) NUMA (Non- uniform Memory Access) NUMA(非統一…

htop與atop

htop htop使用詳解–史上最強 atop Linux atop監控工具部署

js未看的文章

Web前端研發工程師編程能力飛升之路 在瀏覽器的背后(一) —— HTML語言的詞法解析 組件化的前端開發流程 用js書寫UI組件之js基礎知識 GC與JS內存泄漏 藍色理想之前端開發 w3c JavaScript Puzzlers react AngularJS入門教程 jQuery源碼分析-如何做jQuery…

方法重寫,隱藏在子類父類中的各種調用實踐

一.子類和父類方法之間的關系 1.當子類和父類有方法完全相同的方法 namespace ConsoleApplication2 {class Program{static void Main(string[] args){B b new B();A a new A();A c new B();b.Show();a.Show();c.Show();Console.Read();}}public class A{public void Show()…

向量余弦值python_向量/矩陣的余弦值打印(元素明智的操作) 使用Python的線性代數

向量余弦值pythonPrerequisite: 先決條件: Defining a Vector 定義向量 Defining a Matrix 定義矩陣 Numpy is the library of function that helps to construct or manipulate matrices and vectors. The function numpy.cos(x) is a function used for generati…

centos 6.5網卡dhcp不能獲得網關

環境:vmware centos6.5 添加兩個虛擬網卡。一個自動獲取ip(用于上網-橋接) 一個手動(與主機通信用于ssh-NAT)。 因為自已手動改了一下ifcfg-eth0里面的HWADDR地址。造成 eth0網卡不能識別。多出一個eth2的網卡。 配置eth2網卡,可以自動獲取到ip地址 但用netstat -r…

CPU上下文切換(系統調用、進程上下文、線程上下文、中斷上下文)

CPU寄存器,與程序計數器(存儲CPU正在執行的指令位置,或者即將執行的下一條指令的位置)共同組成CPU上下文。 CPU上下文切換指的是:把前一個任務的CPU上下文保存起來,然后加載新任務的上下文到這些寄存器和程…

(解決)從同事那里取來的工程不能編譯運行,出現以下錯誤,求幫助

錯誤 6 未能從程序集 C:\Program Files (x86)\MSBuild\Microsoft\Silverlight for Phone\v4.0\Microsoft.Phone.Build.Tasks.dll 加載任務“Microsoft.Phone.Build.Tasks.ValidateWMAppManifest”。 Could not load file or assembly Microsoft.Build.Utilities, Version2.0.0…

編程 小數位數_使用動態編程的n位數的非遞減總數

編程 小數位數Problem statement: 問題陳述: Given the number of digits n, find the count of total non-decreasing numbers with n digits. 給定位數n ,找到具有n位數字的非遞減總數。 A number is non-decreasing if every digit (except the fir…

vmstat、sysbench、/proc/interrupts,性能壓測

如何查看系統的上下文切換情況 vmstat 是一個常用的系統性能分析工具,主要用來分析系統的內存使用情況,也常用來分析 CPU 上下文切換和中斷的次數。 # 每隔 5 秒輸出 1 組數據 vmstat 5procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r …

sql查詢中自動統計某項數量

select * from dbo.Vehicle_Maintain_Details A inner join ( select MaintainType as tempTypeName,count(ID) as num from dbo.Vehicle_Maintain_Details group by MaintainType) B on A.MaintainTypeB.tempTypeName轉載于:https://www.cnblogs.com/ryan-wan/archive/2013/0…

一個簡易無鎖池

一個簡易 無鎖池 1.所有讀寫無等待,不需要判斷條件直接讀寫(除自動擴充容量時),效率是一般帶鎖或帶條件判斷池的兩倍以上。 2.預先開辟2的冪大小容量,可自增,每次翻倍 3.僅提供思路,工程應用可靠性還不確定…

在給定約束下可以使用a,b和c形成的字符串數

Problem statement: 問題陳述: Given a length n, count the number of strings of length n that can be made using a, b and c with at-most one b and two cs allowed. 給定長度n ,計算可以使用a , b和c且長度最多為b和兩個c的長度為n的…

Robotlegs輕量級AS3框架

Robotlegs是一個用來開發Flash,Flex和AIR應用的純AS3微架構(框架)。Robotlegs專注于將應用程序各層排布在一起并提供它們相互通訊的機制。Robotlegs試圖通過提供一種解決常見開發問題的經過時間檢驗的架構解決方案來加速開發。Robotlegs無意鎖定你到框架&#xff0c…

Python | 字符串isdecimal(),isdigit(),isnumeric()和Methods之間的區別

The methods isdigit(), isnumeric() and isdecimal() are in-built methods of String in python programming language, which are worked with strings as Unicode objects. These functions return either true or false. 方法isdigit() , isnumeric()和isdecim…

mssql2000 數據庫一致性錯誤修復

一般情況下,引起分配錯誤的原因是磁盤損壞或突然停電;一致性錯誤可能是數據庫中的表或索引壞,一般都可修復。1、查看紅色字體,并把有錯誤的數據庫表名記錄下來,或把索引損壞的表名記錄下來。2、把數據庫設置為單用戶模…

Linux系統上的程序調優思路概要

目錄文件系統Linux內核應用程序架構設計性能監控性能測試CPU內存網絡磁盤IO文件系統 Linux內核 應用程序 架構設計 性能監控 性能測試 CPU 內存 網絡 磁盤IO