標籤:redis info used_cpu_sys used_cpu_user
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,如有不真確歡迎大家留言指正。
本文出自 “無心圓” 部落格,請務必保留此出處http://bobzy.blog.51cto.com/2109336/1439751