首页
解决方案
数据库专业技术服务全栈式PostgreSQL解决方案Oracle分布式存储化数据库云PolarDB一体化解决方案
产品
CLup:PostgreSQL高可用集群平台 CMiner: PostgreSQL中的CDC CData高性能数据库云一体机 CBackup数据库备份恢复云平台 CPDA高性能双子星数据库机 CSYun超融合虚拟机产品 ZQPool数据库连接池 ConshGuard数据保护产品
文档
文章
客户及伙伴
中启开源
关于我们
公司简介 联系我们
中启开源

fincache介绍

有时,我们在测试时,需要把一个文件的cache清理掉,以便得到更准确的测试结果,就可以使用此工具。此工具还可以显示某个文件被cache了多少。

注意这个工具是清理一个文件的cache,而不是清理所有的cache,如果清理所有文件的cache,使用下面的命令:

  1. echo 3 > /proc/sys/vm/drop_caches

如果是生产系统,上面的命令慎用,因为把所有的cache清理掉后,可能会导致短时间内性能大幅下降。

编译方法

在CentOS7.X下,已经有编译好的包,可以直接下载使用:

https://gitee.com/osdba/fincache/releases/download/1.0/fincache1.0.el7.x86_64.tar.xz

如果是其他的Linux平台,可以到https://gitee.com/osdba/fincache 下载源码进行编译。在源码下直接运行make就编译生成一个fincache的可执行文件:

  1. make

使用方法

显示一个文件,有多少被cache了:

  1. osdba@osdba-laptop:~/03.tangsrc/fincache$ ./fincache ~/tmp/t1.dat
  2. Total: 12800, 0 in caches

上面显示这个文件的大小为“12800“页面,每个页面的大小为4k,0个页面被cache,说明这个文件没有被cache。 我们使用dd读一下这个文件,这个文件就会被cache:

  1. osdba@osdba-laptop:~/03.tangsrc/fincache$ dd if=~/tmp/t1.dat of=/dev/null bs=1M
  2. 50+0 records in
  3. 50+0 records out
  4. 52428800 bytes (52 MB) copied, 0.209783 s, 250 MB/s
  5. osdba@osdba-laptop:~/03.tangsrc/fincache$ ./fincache ~/tmp/t1.dat
  6. Total: 12800, 12800 in caches

使用“-c”参数,清理一个cache,再看,这个文件就没有被cache住了:

  1. osdba@osdba-laptop:~/03.tangsrc/fincache$ ./fincache -c ~/tmp/t1.dat
  2. Cache FADV_DONTNEED done
  3. osdba@osdba-laptop:~/03.tangsrc/fincache$ ./fincache ~/tmp/t1.dat
  4. Total: 12800, 0 in caches