centos8平台使用slabtop监控slab内存的状态
一,slabtop 所属的包:
[root@yjweb ~]# whereis slabtop
slabtop: /usr/bin/slabtop /usr/share/man/man1/slabtop.1.gz [root@yjweb ~]# rpm -qf /usr/bin/slabtop
procps-ng-3.3.15-1.el8.x86_64
如果找不到命令,可以用yum进行安装:
[root@yjweb ~]# yum install procps-ng
说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,什么是slab?
slab是Linux操作系统的一种内存分配机制
针对一些经常分配并释放的对象,这些对象的大小一般比较小,
slab分配器是基于对象进行管理的,相同类型的对象归为一类,
因为对象释放后直接保存在内存中,当请求新的对象时,
可以从内存中直接获取
说明:这些对象包括inode信息,目录项信息等
slabtop的作用:
显示实时内核slab缓存信息,给出slab使用情况和汇总
三,查看版本:
[root@yjweb ~]# slabtop --version
slabtop from procps-ng 3.3.15
四,常见用法:
1,按cache大小倒排:
[root@yjweb ~]# slabtop -s c
说明: -s:指定排序字段
有哪些排序字w
The following are valid sort criteria:
a: sort by number of active objects
b: sort by objects per slab
c: sort by cache size
l: sort by number of slabs
v: sort by number of active slabs
n: sort by name
o: sort by number of objects (the default)
p: sort by pages per slab
s: sort by object size
u: sort by cache utilization
五,输出信息各字段的意义:
我们以xfs_inode为例:
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
96000 91833 95% 1.00K 6000 16 96000K xfs_inode
共 6000个slab
每个slab包含16个对象
共 96000个对象
对象的size是1K
所以CACHE SIZE是96000K
ACTIVE #:指对象中活跃的数量
CACHE SIZE #:是占用的内存大小
NAME #:内存项的名字
汇总信息中:
Active / Total Size (% used) : 390763.29K / 406922.94K (96.0%)
这一项是slab活跃项占用内存的大小/总的内存使用的大小
六,发现slab占用内存过高时,如何手动释放slab内存?
sync
echo 1 > /proc/sys/vm/drop_caches
echo 2 > /proc/sys/vm/drop_caches
echo 3 > /proc/sys/vm/drop_caches
说明:
sync:用来确保文件系统的完整性:
sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-Node、已延迟的块 I/O 和读写映射文件
参照这段原始文档:
To free pagecache:
* echo 1 > /proc/sys/vm/drop_caches To free dentries and inodes:
* echo 2 > /proc/sys/vm/drop_caches To free pagecache, dentries and inodes:
* echo 3 > /proc/sys/vm/drop_caches
因为 3代表释放 pagecache,dentries,inodes 三项,所以只执行3应该也可以
七,什么是dentries?
dentry_cache是目录项高速缓存,它记录了目录项到inode的映射关系。
当应用程序发起stat系统调用时,就会创建对应的dentry_cache项,
如果每次stat的文件都是不存在的文件,那么总是会创建大量新的dentry_cache项
八,什么是inode?
inode包含文件的元信息,具体来说有以下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的time,共三个:
ctime:inode上一次变动的时间,
mtime指文件内容上一次变动的时间
atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
说明:block对应到磁盘的扇区
九,查看centos的版本
[root@yjweb ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)
centos8平台使用slabtop监控slab内存的状态的更多相关文章
- centos8平台使用pidstat监控cpu/内存/io
一,安装pidstat: 1,安装 [root@localhost yum.repos.d]# yum install sysstat 2,查看版本: [root@localhost ~]# pids ...
- centos8平台用ss监控网络
一,ss所属的包: [root@blog ~]# whereis ss ss: /usr/sbin/ss /usr/share/man/man8/ss.8.gz [root@blog ~]# rpm ...
- centos8平台使用vmstat监控系统
一,vmstat的用途和特点: vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数. 相对于 iostat 来说,vmstat 可 ...
- centos8平台使用iotop监控磁盘io
一,iotop的作用: iotop是监视磁盘I/O使用状况的top类工具, 可以针对进程和线程统计io的使用情况 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblog ...
- centos8平台基于iftop监控网络流量
一,iftop的作用: 基于ip统计外部机器与本机之间的网络流量, 可以方便的查看各客户端是否有非正常的到本机的访问 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnbl ...
- centos8平台使用iostat监控磁盘io
一,iostat所属的包: [root@centos8 ~]# whereis iostat iostat: /usr/bin/iostat /usr/share/man/man1/iostat.1. ...
- centos8平台使用mpstat监控cpu
一,mpstat的用途 mpstat是 Multiprocessor Statistics的缩写,是实时cpu监控工具. 在多CPU系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU ...
- Hadoop Yarn内存资源隔离实现原理——基于线程监控的内存隔离方案
注:本文以hadoop-2.5.0-cdh5.3.2为例进行说明. Hadoop Yarn的资源隔离是指为运行着不同任务的“Container”提供可独立使用的计算资源,以避免它们之间相互干扰.目 ...
- Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches Slab内存管理机制 SLUB内存管理机制
Linux中的Buffer Cache和Page Cache echo 3 > /proc/sys/vm/drop_caches Slab内存管理机制 SLUB内存管理机制 http://w ...
随机推荐
- IIS实现Nginx功能:转发
这个标题本身是不合理的,但是基于目前公司有一份系统是外部代理商贴牌使用,有一个老的站点是部署在IIS上,好多代理商自己的域名绑定在这个上面,而近期新版本的系统已经上线,那么需要将这些域名也转发到新的站 ...
- [LeetCode]621. 任务调度器(贪心)
题目 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完.CP ...
- 14个Spring MVC顶级技巧,随时用随时爽,一直用一直爽~
通常,在Spring MVC中,我们编写一个控制器类来处理来自客户端的请求.然后,控制器调用业务类来处理与业务相关的任务,然后将客户端重定向到逻辑视图名称,该名称由Spring的调度程序Servlet ...
- Codeforces Round #673 (Div. 2)
[Codeforces Round #673 (Div. 2) ] 题目链接# A. Copy-paste 思路: 贪心的策略.每次只加上最小的就可以了 #include<bits/stdc++ ...
- 基础篇:java基本数据类型
1:java几种基本数据类型大小 关键字 类型 位数 (8位一字节) 取值范围(表示范围) byte 整型 8 -2^7 ~ 2^7-1 short 整型 16 -2^15 ~ 2^15-1 int ...
- Java基础——消息队列
1.消息队列的适用场景:商品秒杀.系统解耦.日志记录等 2.使用Queue实现消息对列 双端队列(Deque)是 Queue 的子类也是 Queue 的补充类,头部和尾部都支持元素插入和获取阻塞队列指 ...
- Spring学习(五)--Spring的IOC
1.BeanDefinition在IOC的注册 当BeanDefinition完成载入和解析之后,用户定义的BeanDefinition在IOC容器中已经建立自己的数据结构和数据表示,但是无法使用,需 ...
- Java知识系统回顾整理01基础05控制流程01if
一.if if(表达式1){ 表达式2: } 如果表达式1的值是true, 就执行表达式2 public class HelloWorld { public static void main(Stri ...
- 《C++primerplus》第7章练习题
1.用户不断输入两个数,计算调和平均数,直到其中一个数为0. #include<iostream> using namespace std; double harm_mean(double ...
- tomcat:tomcat安装(在一台电脑上安装两个tomcat)
1.安装前的说明 (1)在安装第二个tomcat之前,我们要知道安装一台tomcat的时候需要在电脑上添加两个系统变量 然后在path中配置: (2)这个时候我们就要思考了,当安装第二台服务器的时候首 ...