Redis INFO CPU 信息详解
一、INFO CPU
通过INFO CPU命令可以查看Redis进程对于CPU的使用情况,如下:
这几个字段的含义如下所示:
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
二、什么是System CPU?什么是User CPU ?
CPU通常来说有三种状态:
- Idle, 空闲,什么也不做.
- Running a user space program,运行在用户态,例如
shell或者chrome浏览器等用户态程序。 - Running the kernel, 运行在内核态,管理中断或者资源,执行系统调用,例如用户态程序malloc内存,fork子进程等.
通过top命令可以查看到CPU的信息:
%Cpu(s): 24.8 us, 0.5 sy, 0.0 ni, 73.6 id, 0.4 wa, 0.0 hi, 0.2 si, 0.0 st
关注的主要信息就是这三种us 用户态,sy 内核态,id 空闲,这三个值加起来接近100.
其他字段信息解释见:http://blog.scoutapp.com/articles/2015/02/24/understanding-linuxs-cpu-stats
三、Redis INFO CPU 信息来源
实际上是通过调用 getrusage 这个系统调用完成的。
NAME
getrusage -- get information about resource utilization
int getrusage(int who, struct rusage *r_usage);
DESCRIPTION
getrusage() returns information describing the resources utilized by the current process, or all its terminated child processes.
可以统计一个进程占用的CPU信息,第二个参数是统计信息的结构体,将信息保存至结构体返回。
因此INFO CPU命令输出的信息表示的是:从Redis启动到此刻,CPU所分别花费在系统和用户态的时间累积,因此只要Redis进程不退出,这个数值是不断变大的,源码位置:
https://github.com/antirez/redis/blob/bb3b5ddd1968d2715acc37b63124ccf461276160/src/server.c#L2817
继续给文章开头启动的Redis插入1G的数据,可以看见使用CPU时间都增长了:
四、这个信息有什么作用?
未完待续…
20191107更新:
这个信息的作用见:https://groups.google.com/forum/#!topic/redis-db/XpOgZOA4dfY
总结一下就是:
- 对于Redis的开发者(社区贡献者),可以通过这个信息来看到Redis运行情况,即启动一段时间或者执行某个命令一段时间之后分别耗费在内核或者用户态的时间。
- 对于普通用户(Redis的使用者)了解这个信息没什么作用,也不能通过这个信息判断CPU或者Redis负载情况。
Redis INFO CPU 信息详解的更多相关文章
- redis.conf配置信息详解
redis.conf配置信息详解 配置文件 # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k =& ...
- NoSQL之Redis高级实用命令详解--安全和主从复制
Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim ...
- Redis的事务功能详解
Redis的事务功能详解 MULTI.EXEC.DISCARD和WATCH命令是Redis事务功能的基础.Redis事务允许在一次单独的步骤中执行一组命令,并且可以保证如下两个重要事项: >Re ...
- CPU上下文切换详解
CPU上下文切换详解 原文地址,译文地址,译者: 董明鑫,校对:郑旭东 上下文切换(有时也称做进程切换或任务切换)是指CPU 从一个进程或线程切换到另一个进程或线程.进程(有时候也称做任务)是指一个程 ...
- redis.conf 具体配置详解
redis.conf 具体配置详解 # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => ...
- 反射实现Model修改前后的内容对比 【API调用】腾讯云短信 Windows操作系统下Redis服务安装图文详解 Redis入门学习
反射实现Model修改前后的内容对比 在开发过程中,我们会遇到这样一个问题,编辑了一个对象之后,我们想要把这个对象修改了哪些内容保存下来,以便将来查看和追责. 首先我们要创建一个User类 1 p ...
- redis.windows.conf配置详解
redis.windows.conf配置详解 转自:https://www.cnblogs.com/kreo/p/4423362.html # redis 配置文件示例 # 当你需要为某个配置项指定内 ...
- redis 五种数据结构详解(string,list,set,zset,hash)
redis 五种数据结构详解(string,list,set,zset,hash) Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存 ...
- redis 五种数据结构详解(string,list,set,zset,hash),各种问题综合
redis 五种数据结构详解(string,list,set,zset,hash) https://www.cnblogs.com/sdgf/p/6244937.html redis 与 spring ...
随机推荐
- Java基础系列(1)- JDK、JRE、JVM
Java三大版本(Write Once:Run Anywhere) JavaSE:标准版 JavaME:嵌入式开发 JavaEE:E企业级开发 JDK.JRE.JVM JDK是开发工具包 JRE是编译 ...
- Linux系列(4) - 目录处理命令(1)
前言 linux中一切皆文件.目录为目录文件,普通文件用来保存数据,目录文件用来保存文件 建立目录:mkdir mkdir -p [目录名] -p 递归创建目录,例子:mkdir -p LinuxTe ...
- P1088 [NOIP2004 普及组] 火星人
题目描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法.这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学 ...
- YOLO v3 & Pascal VOC数据集
代码地址:https://github.com/YunYang1994/tensorflow-yolov3 https://hackernoon.com/understanding-yolo-f5a7 ...
- 『GoLang』结构体与方法
结构体 结构体类型 Go 通过结构体的形式支持用户自定义类型,或者叫定制类型. Go 语言结构体是实现自定义类型的一种重要数据类型. 结构体是复合类型(composite types),它由一系列属性 ...
- Nresource服务之接口缓存化
1. 背景 Nresource服务日均4.5亿流量,考虑到未来流量急增场景,我们打算对大流量接口进行缓存化处理:根据服务管理平台数据统计显示getUsableResoureCount接口调用量很大,接 ...
- Java字符串的初始化与比较
Java字符串的初始化与比较 简单的总结:直接赋值而不是使用new关键字给字符串初始化,在编译时就将String对象放进字符串常量池中:使用new关键字初始化字符串时,是在堆栈区存放变量名和内容:字符 ...
- React Native之新架构中的Turbo Module实现原理分析
有段时间没更新博客了,之前计划由浅到深.从应用到原理,更新一些RN的相关博客.之前陆续的更新了6篇RN应用的相关博客(传送门),后边因时间问题没有继续更新.主要是平时空余时间都用来帮着带娃了,不过还是 ...
- MySQL的详细讲解
目录 Mysql的架构与历史 MySQL的逻辑架构 更新中---- Mysql的架构与历史 MySQL的逻辑架构 第二层的架构是所有的跨引擎的功能实现的地方,例如:存储,触发器,视图等. 第三层半酣了 ...
- 工作日常-SQL不能乱写
前言:刚接手别人的项目没多久,在昨天的一次上线中无故躺坑,且该大兄弟已经离职,不得不帮他填坑,整完后,今天想搞一个总结,结论就是:SQL不能乱写. 搜索关键词:Cause: java.sql.SQLE ...