一,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内存的状态的更多相关文章

  1. centos8平台使用pidstat监控cpu/内存/io

    一,安装pidstat: 1,安装 [root@localhost yum.repos.d]# yum install sysstat 2,查看版本: [root@localhost ~]# pids ...

  2. centos8平台用ss监控网络

    一,ss所属的包: [root@blog ~]# whereis ss ss: /usr/sbin/ss /usr/share/man/man8/ss.8.gz [root@blog ~]# rpm ...

  3. centos8平台使用vmstat监控系统

    一,vmstat的用途和特点: vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数. 相对于 iostat 来说,vmstat 可 ...

  4. centos8平台使用iotop监控磁盘io

    一,iotop的作用: iotop是监视磁盘I/O使用状况的top类工具, 可以针对进程和线程统计io的使用情况 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblog ...

  5. centos8平台基于iftop监控网络流量

    一,iftop的作用: 基于ip统计外部机器与本机之间的网络流量, 可以方便的查看各客户端是否有非正常的到本机的访问 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnbl ...

  6. centos8平台使用iostat监控磁盘io

    一,iostat所属的包: [root@centos8 ~]# whereis iostat iostat: /usr/bin/iostat /usr/share/man/man1/iostat.1. ...

  7. centos8平台使用mpstat监控cpu

    一,mpstat的用途 mpstat是 Multiprocessor Statistics的缩写,是实时cpu监控工具. 在多CPU系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU ...

  8. Hadoop Yarn内存资源隔离实现原理——基于线程监控的内存隔离方案

    注:本文以hadoop-2.5.0-cdh5.3.2为例进行说明.   Hadoop Yarn的资源隔离是指为运行着不同任务的“Container”提供可独立使用的计算资源,以避免它们之间相互干扰.目 ...

  9. 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 ...

随机推荐

  1. 最全总结 | 聊聊 Python 数据处理全家桶(Sqlite篇)

    1. 前言 上篇文章 聊到 Python 处理 Mysql 数据库最常见的两种方式,本篇文章继续说另外一种比较常用的数据库:Sqlite Sqlite 是一种 嵌入式数据库,数据库就是一个文件,体积很 ...

  2. Mac 环境下配置 MySQL 以及 Mac终端登录MySQL

    1.首先mysql官网下载Mac 版 mysql直接安装 2.打开偏好设置-> MySQL -> 查看是否开启mysql服务 3.打开终端 进入mysql目录: /usr/local/my ...

  3. hadoop分布式格式化时出现异常java.net.unknownhostexception

    当搭建好分布式集群后,准备使用命令格式化时 hdfs namenode format 在日志的最后一行出现 java.net.unknownhostexception的异常,通常是你的主机名没有配置好 ...

  4. PJzhang:CVE-2020-1472微软NetLogon权限提升漏洞~复现

    猫宁~~~ 虚拟机上进行 安装windows 2008 R2 查看服务器ip 本地连接属性,取消ipv6,ip设置为192.168.43.158,子网掩码255.255.255.0,网关192.168 ...

  5. ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?

    为什么需要ARM架构下的OpenJDK8的Docker镜像? 对现有的Java应用,之前一直运行在x86处理器环境下,编译和运行都是JDK8,如今在树莓派的Docker环境运行(或者其他ARM架构电脑 ...

  6. Centos-zip压缩-文件或目录-zip unzip

    zip uzip 将一般文件或者目录进行压缩或者解压,默认以 .zip为后缀名 zip 相关选项 -r 递归压缩目录 -d 从压缩包中删除指定文件 -i  压缩指定文件列表文件 -x 压缩排除指定文件 ...

  7. 理解pytorch几个高级选择函数(如gather)

    目录 1. 引言 2. 维度的理解 3. gather函数 4. index_select函数 5. masked_select函数 6. nonzero函数 1. 引言   最近在刷开源的Pytor ...

  8. Pots(POJ - 3414)【BFS 寻找最短路+路径输出】

    Pots(POJ - 3414) 题目链接 算法 BFS 1.这道题问的是给你两个体积分别为A和B的容器,你对它们有三种操作,一种是装满其中一个瓶子,另一种是把其中一个瓶子的水都倒掉,还有一种就是把其 ...

  9. SQL错题集

    查找最晚入职员工的所有信息 select * from employees where hire_date = (select max(hire_date) from employees) 查找入职员 ...

  10. 步进电机的Arduino库函数

    This library allows you to control unipolar or bipolar stepper motors. To use it you will need a ste ...