<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Linux中time命令,我們經常用來計算某個程序的運行耗時,用戶態cpu耗時,系統態cpu耗時。

      例如:

      1. $ time foo
      2. real        0m0.003s
      3. user        0m0.000s
      4. sys         0m0.004s$

      那么這三個時間都具體代表什么意思呢?

      real是實際命令運行結束時時鐘時間差,包括進程運行、阻塞等時間,user 時間都是運行的時間,用戶態代碼運行(不包含阻塞) ,sys是系統態代碼運行時間

      因此單核情況下 real > user +sys ,  而多核情況下  real <user  + sys   [存在多個CPU ]

      [1] real : 表示foo程序整個的運行耗時,可以理解為foo運行開始時刻你看了一下手表,foo運行結束時,你又看了一下手表,兩次時間的差值就是本次real 代表的值

      舉個極端的例子如下:可以看到real time恰好為2秒。

      # time sleep 2

      real    0m2.003s
      user    0m0.000s

      sys     0m0.000s

      [2] user   0m0.000s:這個時間代表的是foo運行在用戶態的cpu時間,什么意思?

      首先,我來講一下用戶態和核心態:

      核心態(Kernel Mode)

            在內核態,代碼擁有完全的,不受任何限制的訪問底層硬件的能力??梢詧绦腥我獾腃PU指令,訪問任意的內存地址。內核態通常情況下,都是為那些最底層的,由操作系統提供的,可信可靠的代碼來運行的。內核態的代碼崩潰將是災難性的,它會影響到整個系統。

             —– In Kernel mode, the executing code has complete and unrestricted access to the underlying hardware. It can execute any CPU instruction and reference any memory address. Kernel mode is generally reserved for the lowest-level, most trusted functions of the operating system. Crashes in kernel mode are catastrophic; they will halt the entire PC.

      用戶態(User Mode)

            在用戶態,代碼不具備直接訪問硬件或者訪問內存的能力,而必須借助操作系統提供的可靠的,底層的APIs來訪問硬件或者內存。由于這種隔離帶來的保護作用,用戶態的代碼崩潰(Crash),系統是可以恢復的。我們大多數的代碼都是運行在用戶態的。

            —– In User mode, the executing code has no ability to directly access hardware or reference memory. Code running in user mode must delegate to system APIs to access hardware or memory. Due to the protection afforded by this sort of isolation, crashes in user mode are always recoverable. Most of the code running on your computer will execute in user mode.

      為什么要區分Kernel Mode 和 User Mode

           隔離保護,使得系統更穩定。

      好,講完用戶態和核心態之后,我們來看user time,說過了,這個指的是程序foo運行在用戶態的cpu時間,cpu時間不是墻上的鐘走過的時間,而是指CPU工作時間。

      [3] sys   0m0.004s : 這個時間代表的是foo運行在核心態的cpu時間。

       

      好,講完上面的這些,我們來看看這三個的關系,這三者之間沒有嚴格的關系,常見的誤區有:

      誤區一: real_time = user_time + sys_time

             我們錯誤的理解為,real time 就等于 user time + sys time,這是不對的,real time是時鐘走過的時間,user time 是程序在用戶態的cpu時間,sys time 為程序在核心態的cpu時間。

      利用這三者,我們可以計算程序運行期間的cpu利用率如下:

      %cpu_usage = (user_time + sys_time)/real_time * 100%

      如:

      # time sleep 2

      real     0m2.003s
      user    0m0.000s

      sys     0m0.000s

      cpu利用率為0,因為本身就是這樣的,sleep 了2秒,時鐘走過了2秒,但是cpu時間都為0,所以利用率為0

      誤區二:real_time > user_time + sys_time

      一般來說,上面是成立的,上面的情況在單cpu的情況下,往往都是對的。

      但是在多核cpu情況下,而且代碼寫的確實很漂亮,能把多核cpu都利用起來,那么這時候上面的關系就不成立了,例如可能出現下面的情況,請不要驚奇。

      real 1m47.363s
      user 2m41.318s

      sys 0m4.013s

      誤區三:real_time < user_time + sys_time

      一般來講不會有人闖入這個誤區^^

      posted on 2022-04-14 08:56  redman274  閱讀(244)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美黑吊大战白妞| 女人18片毛片60分钟| 国产一区二区精品久久凹凸| 欧美乱码精品一区二区三区| 又黄又刺激又黄又舒服| 99久久夜色精品国产亚洲| 国产成人午夜精品永久免费 | 成人3D动漫一区二区三区| 午夜精品视频在线看| 久久亚洲精品11p| 亚洲av永久无码天堂影院| 动漫av网站免费观看| 亚洲一级特黄大片在线观看| 亚洲综合色网一区二区三区| 久久99九九精品久久久久蜜桃| 日韩精品久久不卡中文字幕| 中文字幕有码高清日韩| 色婷婷av久久久久久久 | 久久精品国产免费观看频道| 免费高清特级毛片A片| 风流老熟女一区二区三区| 高潮videossex潮喷| 最新国产精品好看的精品| 亚洲第一二三区日韩国产| 欧美精品V欧洲精品| 久久亚洲av成人无码软件| 精品免费看国产一区二区| 一本色道久久加勒比综合 | 中文字幕在线精品国产| 法库县| 色噜噜狠狠成人综合| 18禁网站免费无遮挡无码中文 | 亚洲加勒比久久88色综合| 国产精品一线天在线播放| 免费无码成人AV在线播放不卡| 秋霞电影院午夜无码免费视频| 国产超碰无码最新上传| 成人无码午夜在线观看| 国产在线98福利播放视频 | 女人高潮流白浆视频| 精品国产精品中文字幕|