zoukankan      html  css  js  c++  java
  • Redis 中 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://bob-zhangyong.blog.163.com/blog/static/17610982014617114552675/

  • 相关阅读:
    如何在VS2013中进行Boost单元测试
    C++项目中的extern "C" {}(转)
    C/C++语言中NULL、'’和0的区别
    关于C++“加、减机制”的整理
    C++继承中的public/protected/private
    Systemc在VC++2010安装方法及如何在VC++2010运行Noxim模拟器
    Testbench(转)
    Java高级特性之泛型
    Java高级特性之反射
    Java 输入输出流
  • 原文地址:https://www.cnblogs.com/wayneiscoming/p/7640471.html
Copyright © 2011-2022 走看看