Redis 中 used_cpu_sys 和 used_cpu_user含義。
在Redis的info命令輸出結果中有如下四個指標,redis官網給出了下面一段解釋,但是還是不明白什麼意思。
used_cpu_sys
: System CPU consumed by the Redis serverused_cpu_user
:User CPU consumed by the Redis serverused_cpu_sys_children
: System CPU consumed by the background processesused_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,如有不真確歡迎大家留言指正。