Linux 環境下的性能測試——top與stress

對于Linux 環境,top命令是使用頻繁且信息較全的命令, 它對于所有正在運行的進行和系統負荷提供實時更新的概覽信息。stress是個簡單且全面的性能測試工具。通過它可以模擬各種高負載情況。

通過topstress這兩個命令的結合使用,基本可以達到壓力測試的目的。

1. 查看硬件資源

# 查看cpu個數
cat /proc/cpuinfo# 查看內存大小
cat /proc/meminfo# 查看當前內存使用情況
free -h# 查看磁盤大小
df -h# 查看當前文件夾已用磁盤大小
du -sh ./*

2. 查看資源實時使用率——top命令

執行top命令

請添加圖片描述

2.1 第一行

top - 03:13:05 up 7 days, 1:29, 4 users, load average: 0.85,0.67.0.57
  • top: 當前時間
  • up: 機器運行了多長時間
  • users: 當前登錄用戶數
  • load average: 系統負載,即任務隊列的平均長度。三個數值分別為 過去的1分鐘、5分鐘和15分鐘里,有多少進程在等待CPU資源。 如果這幾個數字高于了CPU核心數(比如在4核CPU上,如果3個數字之和超過了4,就表示負載較大),則說明系統負載較高,需要優化,否則就表示系統運行穩定。

2.2 第二行

Tasks: 182 total, 1 running, 181 sleeping, 0 stopped, 0 zombie
  • Tasks: 當前有多少進程。
  • running: 正在運行的進程數 。
  • sleeping: 正在休眠的進程數 。
  • stopped: 停止的進程數 。
  • zombie: 僵尸進程數。

2.3 第三行

%Cpu(s):3.6 us, 5.1 sy, 0.0 ni, 91.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  • us:用戶空間占CPU的百分比(像shell程序、各種語言的編譯器、各種應用、web服務器和各種桌面應用都算是運行在用戶地址空間的進程,這些程序如果不是處于idle狀態,那么絕大多數的CPU時間都是運行在用戶態)。
  • sy:內核空間占CPU的百分比(所有進程要使用的系統資源都是由Linux內核處理的,對于操作系統的設計來說,消耗在內核態的時間應該是越少越好,在實踐中有一類典型的情況會使sy變大,那就是大量的IO操作,因此在調查IO相關的問題時需要著重關注它)。
  • ni:用戶進程空間改變過優先級(ni是nice的縮寫,可以通過nice值調整進程用戶態的優先級,這里顯示的ni表示調整過nice值的進程消耗掉的CPU時間,如果系統中沒有進程被調整過nice值,那么ni就顯示為0)。
  • id:空閑CPU占用率。
  • wa:等待輸入輸出的CPU時間百分比(和CPU的處理速度相比,磁盤IO操作是非常慢的,有很多這樣的操作,比如,CPU在啟動一個磁盤讀寫操作后,需要等待磁盤讀寫操作的結果。在磁盤讀寫操作完成前,CPU只能處于空閑狀態。Linux系統在計算系統平均負載時會把CPU等待IO操作的時間也計算進去,所以在我們看到系統平均負載過高時,可以通過wa來判斷系統的性能瓶頸是不是過多的IO操作造成的)。
  • hi:硬中斷占用百分比(硬中斷是硬盤、網卡等硬件設備發送給CPU的中斷消息,當CPU收到中斷消息后需要進行適當的處理,消耗CPU時間)。
  • st:軟中斷占用百分比(軟中斷是由程序發出的中斷,最終也會執行相應的處理程序,消耗CPU時間)。
  • st:steal time, 系統花了百分之多少等待得到真正的cpu資源 。

2.4 第四行

KiB Mem :7888320 total, 1695796 free, 4378504 used, 1814020 buff/cache
  • total:物理內存總量。
  • free:空閑內存量。
  • used:使用的內存量。
  • buffer/cache:用作內核緩存的內存量。

2.5 第五行

KiB Swap: 8126460 total, 8126460 free, 0 used. 3156100 avail Mem
  • total:交換區內存總量。
  • free:空閑交換區總量。
  • used:使用的交換區總量。
  • buffer/cache:緩沖的交換區總量。

第四第五行分別是內存信息和swap信息,所有程序的運行都是在內存中進行的,所以內存的性能對與服務器來說非常重要。不過當內存的free變少的時候,其實我們并不需要太緊張。真正需要看的是Swap中的used信息。

Swap分區是由硬盤提供的交換區,當物理內存不夠用的時候,操作系統才會把暫時不用的數據放到Swap中。所以當這個數值變高的時候,說明內存是真的不夠用了。

2.6 進程信息

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  • PID: 進程id
  • USER: 進程所有者的用戶名
  • PR:優先級
  • NI: nice值,負值表示高優先級,正值表示低優先級
  • VIRT: 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
  • RES: 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
  • SHR: 共享內存大小,單位kb
  • S: 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
  • %CPU: 上次更新到現在的CPU時間占用百分比
  • %MEM: 進程使用的物理內存百分比
  • TIME+: 進程使用的CPU時間總計,單位1/100秒
  • COMMAND: 命令名/命令行

3. 壓力測試工具——stress

3.1 安裝

  • 在RHEL/CentOS 系統可以使用 yum install stress

  • 在Debian/Ubuntu系統中,可以使用apt-get install stress

  • 源碼離線安裝 stress-1.0.4.tar.gz

tar -zxvf stress-1.0.4.tar.gz
cd stress-1.0.4
./configure
make 
make install

3.2 壓測命令

幫助命令:stress --help

`stress' imposes certain types of compute stress on your systemUsage: stress [OPTION [ARG]] ...-?, --help         show this help statement--version      show version statement顯示版本號-v, --verbose      be verbose顯示詳細的信息-q, --quiet        be quiet程序在運行的過程中不輸出信息-n, --dry-run      show what would have been done輸出程序會做什么而并不實際執行相關的操作-t, --timeout N    timeout after N seconds在 N 秒后結束程序--backoff N    wait factor of N microseconds before work starts等待N微妙后開始運行-c, --cpu N        spawn N workers spinning on sqrt()產生 N 個進程,每個進程都反復不停的計算隨機數的平方根-i, --io N         spawn N workers spinning on sync()產生 N 個進程,每個進程反復調用 sync() 將內存上的內容寫到硬盤上-m, --vm N         spawn N workers spinning on malloc()/free()產生 N 個進程,每個進程不斷分配和釋放內存--vm-bytes B   malloc B bytes per vm worker (default is 256MB)指定分配內存的大小--vm-stride B  touch a byte every B bytes (default is 4096)不斷的給部分內存賦值,讓 COW(Copy On Write)發生--vm-hang N    sleep N secs before free (default none, 0 is inf)指示每個消耗內存的進程在分配到內存后轉入睡眠狀態 N 秒,然后釋放內存,一直重復執行這個過程--vm-keep      redirty memory instead of freeing and reallocating 一直占用內存,區別于不斷的釋放和重新分配(默認是不斷釋放并重新分配內存)。-d, --hdd N        spawn N workers spinning on write()/unlink()產生 N 個不斷執行 write 和 unlink 函數的進程(創建文件,寫入內容,刪除文件)--hdd-bytes B  write B bytes per hdd worker (default is 1GB)指定文件大小Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10sNote: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).

stress常用壓測命令

# CPU壓力測試
# 啟動2個CPU進程
stress -c 2
# 啟動2個CPU進程,持續時間為60s
stress -c 2 -t 60# 內存壓測
# 啟動2個進程,每個進程分配1G內存,分配后不釋放
stress --vm 2 --vm-bytes 1G --vm-keep# IO壓測
# 啟動4個進程,將內存上的內容寫到硬盤上,top命令可看到sy升高,wa升高
stress -i 4# 磁盤IO壓測
# 創建一個進程不斷地在磁盤上創建10M大小的文件并寫入內容
stress -d 1 --hdd-bytes 10M

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

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

相關文章

軟件測試——單元測試

單元測試是軟件開發中的一種測試方法,用于驗證軟件中的各個獨立單元(通常是函數、方法或類)是否按照設計規范正常工作。以下是進行單元測試的一般步驟和最佳實踐: 1. 選擇測試框架 選擇適合項目的測試框架,例如&…

SHAP:Python的可解釋機器學習庫

SHAP:Python的可解釋機器學習庫 一、概念二、步驟三、代碼-以波士頓房價為例summary_plotFeature Importanceshap_interaction_valuesdependence_plot完整代碼一、概念 SHAP(Shapley Additive Explanations)模型是一種用于解釋機器學習模型預測結果的方法。它基于合作博弈論…

【C++】類和對象——explicit關鍵字,友元和內部類

這篇博客已經到了類和對象的最后一部分了&#xff0c;下面我們先看一下explicit關鍵字 我們還是先來引入一個例子&#xff0c;我們的代碼是可以這么寫的 class A { public:A(int aa 0) {_a aa;cout << "A(int aa 0)" << endl;} private:int _a; }; i…

紅隊攻防實戰之Redis-RCE集錦

心若有所向往&#xff0c;何懼道阻且長 Redis寫入SSH公鑰實現RCE 之前進行端口掃描時發現該機器開著6379&#xff0c;嘗試Redis弱口令或未授權訪問 嘗試進行連接Redis&#xff0c;連接成功&#xff0c;存在未授權訪問 嘗試寫入SSH公鑰 設置redis的備份路徑 設置保存文件名 …

[GXYCTF2019]禁止套娃1

提示 git泄露無參數rce &#xff01;&#xff01;注意需要python3環境 github里dirsearch工具下載位置 ###可能需要開節點才能打開 百度網盤dirsearch下載地址 ###如果github里下載不了可以在網盤下載 提取碼sx5d 只給了flag在哪里呢&#xff0c;那么應該就是要讓…

Java參數校驗詳解:使用@Valid注解和自定義注解進行參數驗證

很多時候我們需要使用不少if、else等等邏輯判斷及驗證&#xff0c;這樣在進行一些重復的參數校驗會很麻煩&#xff0c;且以后要維護也會吃力。 而這樣就可以使用javax.validation。驗證&#xff08;Validation&#xff09;常見的驗證操作包括驗證數據的類型、格式、長度、范圍、…

我想漲工資,請問測試開發該怎么入門?

我是測試開發工程師!歡迎和我交流測試領域相關問題&#xff08;測試入門、技術、python交流都可以&#xff09; 我幾乎是靠這套方法&#xff0c;從一個只會功能測試的小白&#xff0c;到成為測試開發工程師的。 別急&#xff0c;先慢慢看&#xff0c;只要按照下面的流程走一遍…

postcss-pxtorem實現頁面自適應的原理

先聲明一點這玩意本身不能實現哈&#xff0c;他只是一個工具&#xff0c;更是一個postcss的插件 幫助我們從px轉化成為rem比如我們的代碼 div {height: 100px;width: 100px; }經過這個插件轉化之后變成 假設變成下面這樣哈 div {height: 1rem;width: 1rem; }其他沒啥子太大作…

P1046 [NOIP2005 普及組] 陶陶摘蘋果題解

題目 陶陶家的院子里有一棵蘋果樹&#xff0c;每到秋天樹上就會結出 1010 個蘋果。蘋果成熟的時候&#xff0c;陶陶就會跑去摘蘋果。陶陶有個 3030 厘米高的板凳&#xff0c;當她不能直接用手摘到蘋果的時候&#xff0c;就會踩到板凳上再試試。 現在已知 1010 個蘋果到地面的…

Spring全面詳解

目錄 1. Spring 概述 1.1 Spring是什么 1.2 Spring的作用 1.3 Spring IoC是什么 2. Spring 快速入門 3. Spring Bean 3.1 的實例化方式 空參構造器 3.2 的屬性注入 全參構造器注入 setter方法注入 策略模式 3.3 注解管理 3.4 注解方式的屬性注入 1. Spring 概述 …

奕碳科技亮相COP28:展現中國智慧,引領全球碳減排新篇章

11月30日,聯合國氣候變化框架公約第28次締約方大會 (COP28) 在阿聯酋迪拜開幕。COP28是全球氣候治理的重要盛會&#xff0c;匯聚了世界各國領導人、企業界和科學界代表&#xff0c;共同探討和制定應對全球氣候變化的策略與行動計劃。在這樣的背景下&#xff0c;企業群體的積極參…

跨境電商系統搭建 無貨源系統對接API 反向代購系統

跨境電商系統是為國外的客戶代購中國商品的系統&#xff0c;系統實現與國內電商API對接&#xff0c;客戶可直接在系統中搜索國內電商平臺的商品。查看演示網站 一級功能二級功能 標準版 高級版 企業版 企業旗艦版 大客戶尊享版 標準版高級版企業版企業旗艦版大客戶尊享版 前臺主…

shell常用組合命令整理

shell常用組合命令整理 rm -f 是一個用于在Unix/Linux系統中刪除文件的命令。這個命令具有以下特點&#xff1a; -f 選項表示“強制”&#xff08;force&#xff09;&#xff0c;即強制刪除文件而不提示用戶確認。使用 -f 選項時&#xff0c;rm 命令不會詢問用戶是否確定刪除&…

2023.12.7 關于 MySQL 事務詳解

目錄 事務的四大特性 原子性 一致性 持久性 隔離性 事務并發執行 臟讀 不可重復讀 幻讀 四個隔離級別 read uncommitted read committed repeatable read serializable 事務的四大特性 原子性 一個事務中的所有操作&#xff0c;要么全部完成&#xff0c;要么全部…

Java數據結構之《鏈式二叉樹的創建及遍歷》(難度系數100)

一、前言&#xff1a; 這是懷化學院的&#xff1a;Java數據結構中的一道難度偏難(偏難理解)的一道編程題(此方法為博主自己研究&#xff0c;問題基本解決&#xff0c;若有bug歡迎下方評論提出意見&#xff0c;我會第一時間改進代碼&#xff0c;謝謝&#xff01;) 后面其他編程題…

視頻剪輯:視頻轉碼實用技巧,批量將MP4轉為MP3音頻

隨著數字媒體設備的普及&#xff0c;視頻和音頻文件已成為日常生活中的重要組成部分。有時&#xff0c;可能要將MP4視頻文件轉換為MP3音頻文件&#xff0c;以提取其中的音頻內容或者進行其他處理。這是耗費時間的任務&#xff0c;那要如何操作呢&#xff1f;本文詳解云炫AI智剪…

TypeScript中泛型對象、泛型類

一. 概覽 本文詳細介紹泛型中泛型對象和泛型類的使用&#xff0c;結合實際應用場景&#xff0c;加深對泛型的理解、使用。 二. 泛型對象 舉個例子 const test {a: 1,b: 1 }一個類型有沒有一種可能讓我么在定義的時候傳入一個類似于變量的形參&#xff0c;在使用的時候傳入…

Jtti:香港云服務器如何實現遠程連接?

云服務器具有靈活擴展、高可用性、易于管理和數據安全等優點&#xff0c;因此被廣泛應用于各種業務場景。然而&#xff0c;對于初次使用云服務器的用戶來說&#xff0c;如何實現遠程連接可能是一個難題。本文將詳細介紹云服務器實現遠程連接的步驟和注意事項&#xff0c;幫助用…

教你pycharm運行Django第一個項目

文章目錄 前言搭建Django:1.新建Django項目&#xff1a;2.為Django項目指定遠程中創建的虛擬環境下的python解釋器&#xff1a;3.配置ubuntu的端口轉發&#xff08;添加端口號為1234的端口&#xff09;&#xff1a;關于Python技術儲備一、Python所有方向的學習路線二、Python基…

循環單向鏈表與約瑟夫問題

循環鏈表介紹 先不急著看約瑟夫問題是什么&#xff0c;先了解循環鏈表的結構&#xff0c;那什么是循環鏈表&#xff1f; 循環&#xff0c;顧名思義&#xff0c;從鏈表中第一個節點出發&#xff0c;還會遇到第一個節點&#xff0c;形成循環的一環。也就是說鏈表中最后一個節點…