linux下cache分析工具,cachestat、cachetop、pcstat-linux系统缓存命中率分析工具
命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好。
缓存是现在所有高并发系统必需的核心模块,主要作用就是把经常访问的数据(也就是热点数据),提前读入到内存中。这样,下次访问时就可以直接从内存读取数据,而不需要经过硬盘,从而加快应用程序的响应速度。
这些独立的缓存模块通常会提供查询接口,方便我们随时查看缓存的命中情况。
不过 Linux 系统中并没有直接提供这些接口,所以这里我要介绍一下,cachestat 和 cachetop ,它们正是查看系统缓存命中情况的工具。
cachestat 提供了整个操作系统缓存的读写命中情况。
cachetop 提供了每个进程的缓存命中情况。
这两个工具都是 bcc 软件包的一部分,它们基于 Linux 内核的 eBPF(extended Berkeley Packet Filters)机制,来跟踪内核中管理的缓存,并输出缓存的使用和命中情况。
使用 cachestat 和 cachetop 前,我们首先要安装 bcc 软件包。比如,在 Ubuntu 系统中,你可以运行下面的命令来安装:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD
echo "deb https://repo.iovisor.org/apt/xenial xenial main" | sudo tee /etc/apt/sources.list.d/iovisor.list
sudo apt-get update
sudo apt-get install -y bcc-tools libbcc-examples linux-headers-$(uname -r)
注意:bcc-tools需要内核版本为4.1或者更新的版本,如果你用的是CentOS,那就需要手动升级内核版本后再安装。
Centos7安装bcc-tools
第一步,升级内核。你可以运行下面的命令来操作:
升级系统
yum update -y
安装ELRepo
安装新内核
yum remove -y kernel-headers kernel-tools kernel-tools-libs
yum --enablerepo="elrepo-kernel" install -y kernel-ml kernel-ml-devel kernel-ml-headers kernel-ml-tools kernel-ml-tools-libs kernel-ml-tools-libs-devel
更新Grub后重启
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-set-default 0
reboot
重启后确认内核版本已升级为4.20.0-1.el7.elrepo.x86_64
uname -r
第二步,安装 bcc-tools:
安装bcc-tools
yum install -y bcc-tools
配置PATH路径
export PATH=$PATH:/usr/share/bcc/tools
验证安装成功
cachestat
操作完这些步骤,bcc 提供的所有工具就都安装到 /usr/share/bcc/tools 这个目录中了。不过这里提醒你,bcc 软件包默认不会把这些工具配置到系统的 PATH 路径中,所以你得自己手动配置:
$ export PATH=$PATH:/usr/share/bcc/tools
配置完,你就可以运行 cachestat 和 cachetop 命令了。比如,下面就是一个 cachestat 的运行界面,它以1秒的时间间隔,输出了3组缓存统计数据:
$ cachestat 1 3
TOTAL MISSES HITS DIRTIES BUFFERS_MB CACHED_MB
2 0 2 1 17 279
2 0 2 1 17 279
2 0 2 1 17 279
你可以看到,cachestat 的输出其实是一个表格。每行代表一组数据,而每一列代表不同的缓存统计指标。这些指标从左到右依次表示:
TOTAL ,表示总的 I/O 次数;
MISSES ,表示缓存未命中的次数;
HITS ,表示缓存命中的次数;
DIRTIES, 表示新增到缓存中的脏页数;
BUFFERS_MB 表示 Buffers 的大小,以 MB 为单位;
CACHED_MB 表示 Cache 的大小,以 MB 为单位。
接下来我们再来看一个 cachetop 的运行界面:
$ cachetop
11:58:50 Buffers MB: 258 / Cached MB: 347 / Sort: HITS / Order: ascending
PID UID CMD HITS MISSES DIRTIES READ_HIT% WRITE_HIT%
13029 root python 1 0 0 100.0% 0.0%
它的输出跟 top 类似,默认按照缓存的命中次数(HITS)排序,展示了每个进程的缓存命中情况。具体到每一个指标,这里的 HITS、MISSES和DIRTIES ,跟 cachestat 里的含义一样,分别代表间隔时间内的缓存命中次数、未命中次数以及新增到缓存中的脏页数。
而 READ_HIT 和 WRITE_HIT ,分别表示读和写的缓存命中率。
指定文件的缓存大小
除了缓存的命中率外,还有一个指标你可能也会很感兴趣,那就是指定文件在内存中的缓存大小。你可以使用 pcstat 这个工具,来查看文件在内存中的缓存大小以及缓存比例。
pcstat 是一个基于 Go 语言开发的工具,所以安装它之前,你首先应该安装 Go 语言;
安装完 Go 语言,再运行下面的命令安装 pcstat:
$ export GOPATH=~/go
$ export PATH=~/go/bin:$PATH
$ go get golang.org/x/sys/unix
$ go get github.com/tobert/pcstat/pcstat
全部安装完成后,你就可以运行 pcstat 来查看文件的缓存情况了。比如,下面就是一个 pcstat 运行的示例,它展示了 /bin/ls 这个文件的缓存情况:
$ pcstat /bin/ls
+---------+----------------+------------+-----------+---------+
| Name | Size (bytes) | Pages | Cached | Percent |
|---------+----------------+------------+-----------+---------|
| /bin/ls | 133792 | 33 | 0 | 000.000 |
+---------+----------------+------------+-----------+---------+
这个输出中,Cached 就是 /bin/ls 在缓存中的大小,而 Percent 则是缓存的百分比。你看到它们都是 0,这说明 /bin/ls 并不在缓存中。
接着,如果你执行一下 ls 命令,再运行相同的命令来查看的话,就会发现 /bin/ls 都在缓存中了:
$ ls
$ pcstat /bin/ls
+---------+----------------+------------+-----------+---------+
| Name | Size (bytes) | Pages | Cached | Percent |
|---------+----------------+------------+-----------+---------|
| /bin/ls | 133792 | 33 | 33 | 100.000 |
+---------+----------------+------------+-----------+---------+
linux下cache分析工具,cachestat、cachetop、pcstat-linux系统缓存命中率分析工具相关推荐
- cachestat、cachetop、pcstat-linux系统缓存命中率分析工具
命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好. 缓存是现在所有高并发系统必需的核心模块,主要作用就是把经常访问的数据(也就是热点数据),提前读入到内存中.这样,下次访问时就可以直接从 ...
- partprobe使用方法_教程方法;linux下使用fdisk结合partprobe命令不重启系统添加一块新的磁盘分区电脑技巧-琪琪词资源网...
琪琪词资源网-教程方法;linux下使用fdisk结合partprobe命令不重启系统添加一块新的磁盘分区电脑技巧,以下是给大家带来的教程方法;linux下使用fdisk结合partprobe命令不重 ...
- linux格式化大于2t硬盘分区,linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区...
linux下大于2tb硬盘格式化及挂载,linux下大于2t的分区方法,linux gpt分区表 管理 自动挂载分区 (7页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找 ...
- 在linux下vcd光盘提取,linux下抓取Vcd的视频文件[Linux安全]
赞助商链接 本文"linux下抓取Vcd的视频文件[Linux安全]"是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判 ...
- linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案
linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案 参考文章: (1)linux 下mysql忘记密码或者安装好linux后不知道mysql初始密码解决方案 (2) ...
- linux中替换文件中的内容,linux下批量替换文件中的内容linux操作系统 -电脑资料...
对于单个文件,使用sed命令很容易做到, grep命令可以查找单个文件或文件夹下文件中的内容,使用参数"r"或"-R"可以递归查找指定文件夹下的所有文件:参数& ...
- linux 下tar怎样解压zip文件,linux下 zip解压 tar解压 gz解压 bz2等各种解压文件命令(示例代码)...
简介这篇文章主要介绍了linux下 zip解压 tar解压 gz解压 bz2等各种解压文件命令(示例代码)以及相关的经验技巧,文章约6037字,浏览量504,点赞数7,值得推荐! .tar 解包:ta ...
- linux下做u盘启动权限不够,Linux U盘启动安装制作工具unetbootin - 第一原理 - 小木虫 - 学术 科研 互动社区...
http://baike.baidu.com/view/1434744.htm UNetbootin (Universal Netboot Installer)为一种跨平台工具软件,可以用来建立Liv ...
- linux下php可以实现哪些功能,基于Linux的远程管理系统的设计与实现(PHP)
基于Linux的远程管理系统的设计与实现(PHP) 来源:2BYSJ.cn 资料编号:2SJ260700 资料等级:★★★★★ %D7%CA%C1%CF%B1%E0%BA%C5%A3%BA2SJ260 ...
最新文章
- 二叉树非递归遍历的经典求解
- 未能加载文件或程序集“*****.dll”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。(异常来自HRESULT:0x80131040)
- Android edittext 属性inputtype详解
- ToString()的格式设置
- 快速锁屏电脑快捷键_一学就会的8个电脑快捷键一定要掌握!堪称“高效”神器...
- Odoo10教程---模块化三:模型约束,高级视图,工作流,安全性,向导,国际化和报表等
- mysql skip slave_MYSQL replication slave-skip-errors 详解
- java motherfree video_Java Config 下的Spring Test方式
- centos7删除符号链接_如何在 Linux 上查找和删除损坏的符号链接 | Linux 中国
- SpringSecurity入门到入土教程_2 Oauth教程
- 个性化推荐系统实践应用
- 万能五笔2005输入法平台6.46版---试用手记
- Java项目开发-基于Java的宠物领养管理系统(附源码)
- Python 信号处理——包络分析
- fedora linux搜狗输入法,Linux_Fedora20 32位系统中安装搜狗拼音输入法图文教程,搜狗输入法在windows系统中是非 - phpStudy...
- 英雄无敌6服务器在哪个文件夹,魔法门英雄无敌6:生物-墓园资料
- 本地运行Flink-DIMAPP出现问题
- Metro风格的CSS框架 BootMetro
- 计算机管理要继续请输入,Windows 10上提示UAC错误:如要继续请输入管理员密码!...
- 区块链Oracle预言机实现教程【含代码】