cpu压测 windows_cpu压测神器:cpuburn深度指南
1. 前言
最近在測試一個物聯(lián)網(wǎng)的項目,項目里包含設(shè)備資源進(jìn)行監(jiān)控告警的功能。例如如下監(jiān)控項:cpu負(fù)載超核、內(nèi)存使用率過高、硬盤使用率過高,系統(tǒng)流量超速等。為了驗證監(jiān)控的有效性,就需要構(gòu)造對應(yīng)場景來進(jìn)行測試。
如何對cpu,內(nèi)存,硬盤,流量這幾類資源進(jìn)行數(shù)據(jù)構(gòu)造呢?
我在網(wǎng)速搜羅了一圈發(fā)現(xiàn)有四個比較好用的工具,能較方便的構(gòu)造對應(yīng)場景:
cpuburn
memtester
dd
netperf
首先我們來介紹這款燒腦神器,cpuburn
2.簡介
一句話介紹:cpuburn lets you utilize 100% of all available cores from the command line — useful when stress-testing(cpuburn 能夠讓你用一行命令來打滿所有CPU的可用核,在做壓力測試的時候特別奏效)
3.安裝方式
cpuburn主要是針對windows和linux系統(tǒng)。
有三種安裝方式
二進(jìn)制運(yùn)行
源碼編譯安裝
yum或者apt安裝
3.1 二進(jìn)制安裝
3.1.1 Linux版下載地址
Linux:
3.1.2 Linux下安裝
1)根據(jù)系統(tǒng)位數(shù)下載上述文件(以64位為例)
2)解壓縮,解壓完之后即可得到cpuburn二進(jìn)制
tar xzvf cpuburn-1.0-amd64.tar.gz
3) 拷貝cpuburn到/usr/bin
cp cpuburn /usr/bin/
3.1.3?Windows版下載地址
3.1.3 Windows下安裝
1)點(diǎn)擊下載后解壓縮到當(dāng)前目錄
2)添加到Path環(huán)境變量中(可選)
運(yùn)行如圖
3.2 源碼編譯安裝
這種方式適合官方?jīng)]有對應(yīng)系統(tǒng)包的情況,比如mac
1)安裝go環(huán)境(如果已經(jīng)安裝,請忽略)
2)下載源碼
3) 編譯源碼
執(zhí)行完如下命令后會在當(dāng)前目錄生成cpuburn二進(jìn)制文件
go build cpuburn.go
3.3 使用yum或者apt安裝
Centos:
yum?install?-y?cpuburn
Ubuntu:
apt-get?install?-y?cpuburn
4. 幫助
輸入:cpuburn -h
Usage of ./cpuburn:
-n int
number of cores to burn (0 = all) //指定進(jìn)行壓測的CPU核數(shù),默認(rèn)為0(有幾核壓幾核)
-u int
seconds between updates (0 = don't update) (default 10) //打印運(yùn)行時長的間隔,默認(rèn)10秒中打印一次運(yùn)行時間(0代表靜默模式,不打印任何信息)
5. 例子
1. 壓測所有CPU核(當(dāng)前CPU有8核),每隔10秒更新一次運(yùn)行時間。
cpuburn
2.壓測CPU核數(shù)為4,每隔10秒更新一次運(yùn)行時間。
cpuburn -n=4
查看效果:
輸入:top,然后按最上面的數(shù)字1,可以看到4核幾乎被全部榨滿了。
3.靜默模式運(yùn)行cpuburn
cpuburn -u=0
6.源碼解析
cpuburn是go寫的一個小工具,非常的輕巧,讓我們簡單拜讀一下。
package?main
import?(
"flag"
"fmt"
"runtime"
"time"
)
var?(
numBurn????????int
updateInterval?int
)
func?cpuBurn()?{??????????//這里是核心,每個go協(xié)程不斷的讓出CPU時間片
for?{
for?i?:=?0;?i?
}
runtime.Gosched()
}
}
func?init()?{?//初始化變量
fmt.Printf("Your?System?is?%s,and?CPUs/cores?number?is?%d\n",runtime.GOOS,?runtime.NumCPU);?//這里是我加的一個打印信息
flag.IntVar(&numBurn,?"n",?0,?"number?of?cores?to?burn?(0?=?all)")
flag.IntVar(&updateInterval,?"u",?10,?"seconds?between?updates?(0?=?don't?update)")
flag.Parse()
if?numBurn?<=?0?{
numBurn?=?runtime.NumCPU()
}
}
func?main()?{
runtime.GOMAXPROCS(numBurn)????//設(shè)定使用的cpu核數(shù),不設(shè)定默認(rèn)使用1核運(yùn)行所有協(xié)程
fmt.Printf("Burning?%d?CPUs/cores\n",?numBurn)
for?i?:=?0;?i?
go?cpuBurn()
}
if?updateInterval?>?0?{???//如果設(shè)定了更新時間,則不斷每間隔updateInterval*60秒打印更新時間
t?:=?time.Tick(time.Duration(updateInterval)?*?time.Second)?//設(shè)定定時器時間間隔
for?secs?:=?updateInterval;?;?secs?+=?updateInterval?{?//間隔幾秒打印一下當(dāng)前運(yùn)行的總時間
fmt.Printf("%d?seconds\n",?secs)
}
}?else?{?//如果沒有設(shè)定更新時間,則一直阻塞住。
select?{}?//?wait?forever
}
}
重新編譯cpuburn.go,執(zhí)行下看看效果:
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的cpu压测 windows_cpu压测神器:cpuburn深度指南的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪海豚六方位介绍话术?
- 下一篇: lua和unity如何交互_Unity中