我已经将数据库服务器上的 swappiness 设置为零,但在进行大型排序操作时,即使缓存仍在使用大量内存,使用的交换空间也会增加,然后缓存会增长,但交换空间保持不变。这对我来说毫无意义。free -m
目前情况如下:
total used free shared buffers cached
Mem: 16000 15979 20 0 24 10520
-/+ buffers/cache: 5434 10565
Swap: 6111 5478 633
这发生在 PostgreSQL 的大型排序过程中。问题是,排序一结束,交换出的内存就可能被调用(这是UPDATE
我放入 tmpfs 的表中的一大块内存),这会导致速度大幅下降,因为它是随机访问。
答案1
您在 tmpfs 中使用了多少空间?
请记住,tmpfs 由缓存支持,并显示在该统计信息中。因此,“忽略缓存并使用 +/- 行”的常规建议不一定适用。
事实上,tmpfs 是可交换的,因此很有可能那是随着实际内存压力的增加,哪些内容会被换出。