1 基礎(chǔ)用法詳解
先來(lái)看下最基礎(chǔ)的用法,也可能是大家最常見(jiàn)的用法了
root@chopin:~$ time find . -name "chopin.txt"
......
real 0m0.174s
user 0m0.084s
sys 0m0.084s
可以很清楚看到,find 命令執(zhí)行的時(shí)間為 0.174s ,是不是很簡(jiǎn)單,很方便呢
不過(guò),time
命令輸出了三個(gè)參數(shù),我們只用到了第一個(gè)參數(shù),其它兩個(gè)參數(shù)代表什么含義呢?
這里我來(lái)解釋一下:
- real :表示的是墻上時(shí)間,說(shuō)白了,其實(shí)就是從程序運(yùn)行開(kāi)始到結(jié)束所經(jīng)歷的時(shí)間;
- user :表示程序運(yùn)行期間,cpu 在用戶(hù)態(tài)所花費(fèi)的時(shí)間;
- sys :表示程序運(yùn)行期間,cpu 在內(nèi)核態(tài)所花費(fèi)的時(shí)間;
細(xì)心的讀者會(huì)發(fā)現(xiàn),上述案例中的 user + sys 不等于 real ,這是怎么回事呢?
其實(shí)上邊解釋的 user 和 sys ,是 cpu 執(zhí)行指令所消耗的時(shí)間,并不包含:進(jìn)程阻塞 IO、調(diào)度排隊(duì),這些非 cpu 運(yùn)行時(shí)間。
案例中 find 執(zhí)行查找文件過(guò)程中,會(huì)有磁盤(pán) IO 讀取,這時(shí) cpu 會(huì)被釋放出來(lái)干別的事情,這些 IO 消耗的時(shí)間,是不包含在 user 和 sys 統(tǒng)計(jì)數(shù)據(jù)中,所以就出現(xiàn)了 real 時(shí)間大于 user + sys 了。
再通過(guò)一個(gè)示例來(lái)驗(yàn)證并加強(qiáng)我們的理解
root@chopin:~$ time sleep 2
real 0m2.001s
user 0m0.000s
sys 0m0.000s
可以清楚地看到,sleep 命令基本上沒(méi)有消耗 cpu,程序真實(shí)的運(yùn)行時(shí)間就是 2 秒
那我們是不是可以得出如下結(jié)論了呢:
real >= user + sys
其實(shí)這個(gè)結(jié)論在單個(gè) cpu 情況下,是正確的。
如果服務(wù)器是多個(gè) cpu,你的程序正好可以將多個(gè) cpu 充分利用起來(lái),程序運(yùn)行期間是多核心并行的,那么 user + sys 統(tǒng)計(jì)的 cpu 時(shí)間可能就會(huì)大于 real 時(shí)間啦
所以這 3 個(gè)時(shí)間之間的關(guān)系并不是恒定的,你需要清楚的了解服務(wù)器是否為多個(gè)核心。
通過(guò)統(tǒng)計(jì)到的 cpu 消耗時(shí)間,我們也可以大概知道,程序運(yùn)行期間 cpu 利用情況。對(duì)于單核,計(jì)算密集型的程序,real 會(huì)很接近 user 和 sys 時(shí)間之和的。
Tips:有些同學(xué)可能對(duì)操作系統(tǒng)可能不太熟悉,這里簡(jiǎn)單科普下內(nèi)核態(tài)和用戶(hù)態(tài)的基本概念
Linux 為使系統(tǒng)更穩(wěn)定,采取了隔離保護(hù)的措施,運(yùn)行狀態(tài)分為內(nèi)核態(tài)和用戶(hù)態(tài) :
- 用戶(hù)態(tài) :用戶(hù)代碼不具備直接訪問(wèn)底層資源的能力,需要借助內(nèi)核提供的系統(tǒng)調(diào)用 API。在這種隔離保護(hù)下,即使用戶(hù)程序崩潰,也不會(huì)影響整個(gè)系統(tǒng)的功能。
- 內(nèi)核態(tài) :內(nèi)核代碼具備最大權(quán)限,可執(zhí)行任意 cpu 指令,不受任何限制。內(nèi)核態(tài)通常是操作系統(tǒng)提供的最底層、最可靠的代碼運(yùn)行的,內(nèi)核態(tài)的代碼崩潰是災(zāi)難性的,影響整個(gè)系
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1415瀏覽量
41257 -
cpu
+關(guān)注
關(guān)注
68文章
11063瀏覽量
216511 -
Linux
+關(guān)注
關(guān)注
87文章
11497瀏覽量
213267
發(fā)布評(píng)論請(qǐng)先 登錄
linux中comm命令用法
OrCAD中創(chuàng)建總線及用法詳解
Linux網(wǎng)絡(luò)編程實(shí)例詳解
你會(huì)使用Linux 中的“!”驚嘆用法嗎
Linux設(shè)備驅(qū)動(dòng)開(kāi)發(fā)詳解
Linux中GNU time命令的使用
linux中find用法詳解
linux常用命令及用法
Linux lsof命令的基本用法

評(píng)論