Redis used_cpu_sys used_cpu_user meaning

Redis 中 used_cpu_sys 和 used_cpu_user含義。

在Redis的info命令輸出結果中有如下四個指標,redis官網給出了下面一段解釋,但是還是不明白什麼意思。

  • used_cpu_sys: System CPU consumed by the Redis server

  • used_cpu_user:User CPU consumed by the Redis server

  • used_cpu_sys_children: System CPU consumed by the background processes

  • used_cpu_user_children: User CPU consumed by the background processes

user_cpu_sys 和user_cpu_sys_children的區別比較明顯,一個是Redis主進程消耗,一個是後臺進程消耗(後臺包括RDB文件的消耗,master,slave同步產生的消耗等等),但是used_cpu_sys 和used_cpu_user直接的區別就不清楚了。英文解釋說明一個是System CPU一個是User CPU,那到底什麼是System CPU和User CPU呢?

 

經過一番Google之後,我發現在Linux系統中存在一個time的命令,它用於顯示一個進程所佔用的 CPU 時間。

$ time php test.php

real        0m0.003s
user        0m0.000s
sys         0m0.004s

這裏的real指的是進程執行的實際時間,也就是時鐘走過的時間

user 指的是指令在 用戶態(User Mode)所消耗的CPU時間

sys指的是指令在 核心態(Kernel Mode)所消耗的CPU時間。

Redis Info中的used_cpu_sys 和used_cpu_user也就是取的這裏的兩個時間。

具體 核心態(Kernel Mode)和 用戶態(User Mode)有什麼區別大家可以自己Google,這裏也給出一篇stackoverflow.com上的回答提供大家參考:

http://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1

回到Redis,經過測試,發現這4個CPU指標是一個統計指標,比如used_cpu_sys是將所有Redis主進程在 核心態 所佔用的CPU時間求和累計起來,所以它會隨着Redis啓動的時間長度不斷累計上升,並在你重啓Redis服務後清0。

其次個人認爲 used_cpu_sys 和 used_cpu_user的大小關係並不能說明什麼問題,在幾次測試之後基本都是sys高於user這說明Redis的主要命名是直接運行中系統的 核心態 環境。

 

剛剛接觸Redis,如有不真確歡迎大家留言指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章