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,如有不真確歡迎大家留言指正。
原文鏈接:http://bob-zhangyong.blog.163.com/blog/static/17610982014617114552675/
