检查Linux页面缓存的使用gydF4y2Ba在这个简短的博文中,我们将查看如何使用gydF4y2Balinux-fincoregydF4y2Ba检查哪些文件在内存中的Linux页面缓存。有一个介绍性的读到Linux页面缓存检查gydF4y2Ba在这里gydF4y2Ba和gydF4y2Ba在这里gydF4y2Ba。gydF4y2Ba

总之,当你从磁盘读取或写入一个文件(除非你指定使用Direct_IO绕过功能),结果是缓存在内存中,以便后续请求服务,而不是订单magnitude-slower磁盘子系统(它也可以用来缓存写道,之前刷新到磁盘)。这样做是只要有记忆,不被任何过程;每当有短缺,否则空闲内存,内核将选择第一个驱逐页面缓存。gydF4y2Ba

这个过程对用户是透明的居民和一般我们不应该介意的东西。然而,如果我们想要更多的信息吗?是可能的吗?我们能怎么做?让我们来看看!gydF4y2Ba

安装它gydF4y2Ba

除非是CentOS 6,似乎没有包可用,所以我们需要下载和编译的源代码。这是非常简单的步骤:gydF4y2Ba

在这之后,我们将用于二进制文件准备好gydF4y2Ba/usr/local/bin/gydF4y2Ba。gydF4y2Ba

使用它gydF4y2Ba

见前面的输出,我们需要通过一个文件或一组文件。这是奇怪的乍一看,乞求一个问题:“如果我不确实提供了一些文件在页面缓存吗?“答案很简单——他们不会上市,即使他们是在缓存!让我们看看它的实际效果。首先,让我们写两个文件,检查是否在缓存中(和它们占用多少空间)。gydF4y2Ba

- l选项显示我们垂直格式的输出,而不是默认的柱状的风格。现在,如果我们离开了第三个参数(这是第二个文件名称):gydF4y2Ba

我们只看到gydF4y2Batest_file_1gydF4y2Ba,即使我们知道gydF4y2Batest_file_2gydF4y2Ba也是缓存。这是现在我们每次使用该工具。gydF4y2Ba

一个更有趣的例子是检查,例如,运行MySQL服务器,文件缓存。我们可以使用一个命令如下:gydF4y2Ba

的gydF4y2Ba-only-cachedgydF4y2Ba国旗将使它不太详细,只显示输出的文件缓存。gydF4y2Ba

警告和限制gydF4y2Ba

一个警告,如前所述,是提供一个准确的文件列表来检查,否则结果将是明显错误的(如果我们试图维度整个缓存使用)。gydF4y2Ba

限制之一是有一个上限的文件我们可以检查(至少有一个命令),考虑到参数列表并不是无限的。举例来说,一个自然的方式想要检查整个缓存是使用命令如下:gydF4y2Ba

命令失败,正如我们所看到的,因为我们的数量超过参数所允许的bash。gydF4y2Ba

清理页面缓存gydF4y2Ba

这个话题有点博客文章的范围,但是我认为我至少可以提一下。有三种方法如果需要手动清除页面缓存:gydF4y2Ba

1 -直接写入gydF4y2Ba/proc/sys/vm/drop_cachesgydF4y2Ba文件gydF4y2Ba

2 -使用gydF4y2BasysctlgydF4y2Ba配置工具gydF4y2Ba

更多的信息关于这个gydF4y2Ba在这里gydF4y2Ba(搜索gydF4y2Badrop_cachesgydF4y2Ba部分)。gydF4y2Ba

3 -(更新:感谢LeFred输入这个!)使用gydF4y2BauncachegydF4y2Ba工具从DBSake选择性地从缓存中删除文件,而不需要驱逐整个。gydF4y2Ba

我能使用它吗?gydF4y2Ba

该工具可用于检查哪些文件缓存,以及他们正在多少内存。例如,如果你看到一个内存使用量激增某些操作后,您可以:gydF4y2Ba

  • 捕捉与linux-fincore初始输出gydF4y2Ba
  • 刷新页面缓存(如上所示)gydF4y2Ba
  • 运行有问题的操作gydF4y2Ba
  • 捕捉与linux-fincore第二个示例gydF4y2Ba

然后你可以比较输出哪些文件被使用的操作,需要多少。gydF4y2Ba

进一步阅读和类似的工具gydF4y2Ba

有一个gydF4y2Ba扩展的博客gydF4y2Ba在这个问题上,有更多的工具和如何使用它们。gydF4y2Ba

uncachegydF4y2Ba- - - - - -gydF4y2Bahttps://dbsake。gydF4y2Ba最新readthedocs.io / en / /gydF4y2Ba命令/ uncache.htmlgydF4y2Ba(更新:检查LeFred更多有关这个的评论。)还有一个额外的好处,DBSake fincore工具可以使用!gydF4y2Ba

vmtouch -gydF4y2Bahttps://hoytech.com/vmtouch/gydF4y2Ba

mincore -gydF4y2Bahttp://man7.org/linux/man-pages/man2/mincore.2.htmlgydF4y2Ba

2gydF4y2Ba评论gydF4y2Ba
最古老的gydF4y2Ba
最新的gydF4y2Ba 大多数投票gydF4y2Ba
内联反馈gydF4y2Ba
查看所有评论gydF4y2Ba
lefredgydF4y2Ba

嗨Agusin !gydF4y2Ba

好帖子,我只是想点你我真的喜欢与另一个工具:gydF4y2Bahttps://dbsake.readthedocs.io/en/latest/gydF4y2Ba

dbsake允许你“uncache”特定的文件也没有放弃整个文件系统缓存,可以是危险的。这是非常有用的在阅读许多binlogs例如免费的文件系统缓存。gydF4y2Ba

欢呼。gydF4y2Ba