首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Linux页面缓存替换

Linux页面缓存替换
EN

Stack Overflow用户
提问于 2012-11-20 17:00:01
回答 1查看 606关注 0票数 3

我在同一台机器上有两个名为PostgreSQL -1和data-2的数据库。这两个数据库都保留了40 GB的数据,机器上可用的总内存是68 GB。

我启动了data-1和data-2,并运行了几个查询来遍历它们的所有数据。然后,我关闭了data-1,并继续对data-2发出查询。由于某些原因,操作系统仍然在其页高速缓存中保留数据1的大部分页面,并为数据2的文件保留大约35 GB的RAM。结果,我对-2\f25 data-2 \f6的查询一直命中磁盘。

我正在用fincore检查页面缓存的使用情况。当我对data-2运行表扫描查询时,我看到data-2的页面被逐出并以循环方式放回缓存中。data-1的页面没有任何变化,尽管它们已经有几天没有被接触过了。

有人知道为什么data-1的页面没有从页面缓存中清除吗?我对你认为可能与问题有关的各种建议持开放态度。

这是亚马逊上的一个EC2 m2.4xlarge实例,内存为68 GB,没有交换空间。内核版本为:

代码语言:javascript
运行
复制
$ uname -r
3.2.28-45.62.amzn1.x86_64

编辑-1:

似乎没有NUMA配置:

代码语言:javascript
运行
复制
$ dmesg | grep -i numa
[    0.000000] No NUMA configuration found

编辑-2:

我使用Linux内核源码树中的page-types工具来监控页面缓存状态。从结果中我得出结论:

代码语言:javascript
运行
复制
data-1 pages are in state : referenced,uptodate,lru,active,private
data-2 pages are in state : referenced,uptodate,lru,mappedtodisk
EN

回答 1

Stack Overflow用户

发布于 2012-11-20 20:30:12

看看您在/dev/cpusets中配置的cpusets。如果这里有多个目录,那么就有多个cpusets,并且可能有多个内存节点。

cpusets机制详细记录在这里:http://www.kernel.org/doc/man-pages/online/pages/man7/cpuset.7.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13469638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档