我在一个小型 OpenWRT 路由器上运行 tor,由于可用内存有限(32mb),交换无法避免。
大多数时候,路由器不做任何其他事情,但是有时也会访问也在路由器上运行的 postgresql 数据库。由于 Tor 不断运行,postgresql 被完全换出,前几次访问延迟非常高,这很糟糕,因为它是一个交互使用的系统。
我已经为 postgres 分配了一个不错的值 -15,为 tor 分配了 +15,但它似乎并没有对内存管理产生太大影响。全局设置 swappiness=1 也不会改变事情,因为无法避免交换,并且因为 postgresql 大部分时间都没有运行,所以无论如何它都会被交换出去。
有什么办法可以像 Linux 进程的内存优先级一样吗?我查看了 cgroup 特定的交换,但是我发现的唯一描述是它影响决策页面缓存与交换。
我正在寻找的是一个参数来告诉 linux 内核不要像其他进程那样积极地换出 postgresql(但我不想锁定整个进程)。或者为postgresql分配swappiness = 80系统范围和swappiness = 1将postgresql保留在内存中,同时在需要时换出其他所有内容?