天天看點

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。

繼續閱讀