vmtouch工具--查看文件是否缓存命中

本文介绍vmtouch工具,一款用于诊断和控制文件系统缓存的轻便工具。文章涵盖vmtouch的获取、安装及基本使用方法,通过实例展示如何检查文件数据的缓存状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言 本文为原创,可能会存在一些知识点或理解上的问题,欢迎切磋和交流  ^_^

 1. vmtouch工具介绍

因为在分析文件系统页缓存和块缓存区别时,发现有这么一个命令工具,觉得很小巧,就总结一下,应用不深。man手册里描述vmtouch工具用于轻便灵活的文件系统缓存的诊断和控制,其实我的理解,它就是一个检查文件系统文件的数据是否缓存命中的小巧神器。

2. 获取vmtouch工具

github下载地址:https://github.com/hoytech/vmtouch

 

按照链接里的快速安装指令如下:

$ git clone https://github.com/hoytech/vmtouch.git
$ cd vmtouch
$ make
$ sudo make install

在自己环境上查看是否安装成功,出现如下图所示,说明安装成功。

 

3. vmtouch工具应用小试

比如写了一个文件,如下所示:

 通过vmtouch工具查看是否缓存命令,如下

 可以看到该文件大小一共是4k,目前整个文件均缓存命中。清空缓存后,再查看文件数据是否还在缓冲中,如下图所示

此时可以看到缓存未命中。

 

I/O 问题 I/O 操作是造成抖动的常见原因。如果某个线程去访问内存映射文件,而该页面不在页面缓存中,则会发生故障,并且该线程会从磁盘读取该页面。这会造成该线程被阻塞(通常会阻塞 10 毫秒以上),并且如果问题发生在界面渲染的关键路径中,则可能会导致卡顿。造成 I/O 操作的原因多种多样,在这里我们就不一一讨论了,但在尝试改进 I/O 行为时,请注意检查以下位置: PinnerService:PinnerService 是 Android 7.0 中新增的一项功能,可以让框架锁定页面缓存中的某些文件。这会清除这部分内存,以供任何其他进程使用。但是,如果事先已知会定期使用某些文件,可以有效地 mlock(内存锁定)这些文件。在运行 Android 7.0 的 Pixel 和 Nexus 6P 设备上,我们 mlock 了以下四个文件: /system/framework/arm64/boot-framework.oat /system/framework/oat/arm64/services.odex /system/framework/arm64/boot.oat /system/framework/arm64/boot-core-libart.oat 这些文件会被大多数应用和 system_server 持续使用,因此不应该被移出页面。并且我们发现,如果上述任何一个文件被移出页面,当从重型应用切换时,它们会被重新移回页面,从而引起卡顿。 加密:这是造成 I/O 问题的另一个可能原因。我们发现,与基于 CPU 的加密或者使用可通过 DMA 访问的硬件块相比,内嵌加密可提供最佳性能。最重要的是,内嵌加密可以减少与 I/O 相关的抖动,尤其是和基于 CPU 的加密相比。由于提取页面缓存通常发生在界面渲染的关键路径中,而基于 CPU 的加密会在关键路径中引入额外的 CPU 负载,因此会比 I/O 提取造成更多的抖动。基于 DMA 的硬件加密引擎也有类似问题,因为即使其他关键工作可以运行,内核仍然需要花费时间管理此类工作。我们强烈建议所有 SOC 供应商在构建新硬件时,都应支持内嵌加密功能。 简单解释一下
03-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值