postgres shared_buffers内存显示为私有

时间:2014-02-25 07:19:52

标签: linux postgresql memory-management

我在Linux机器上将postgres shared_buffers增加到7GB。这大约是这台机器上可用内存的25%,我相信它遵循postgres建议。

机器上的内存耗尽。我看到的是man postgres进程,每个使用7GB驻留内存。当我运行顶部时,我看到机器上的内存被充分利用,所以我认为7GB是postmaster进程的私有内存。

我认为应该共享shared_buffers内存。

这是postgres 8

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
15872 postgres  15   0 7481m 7.2g 7.1g S 17.6 15.2  43:19.92 postgres: st stk 127.0.0.1(60729) SELECT
3467 postgres  15   0 7489m 7.2g 7.1g S 15.9 15.2  56:33.33 postgres: st stk 127.0.0.1(44351) SELECT
9484 postgres  15   0 7495m 7.2g 7.1g S 15.0 15.2 206:31.23 postgres: st stk 127.0.0.1(42126) SELECT
19090 postgres  15   0 7495m 7.2g 7.1g S 14.2 15.2 155:23.52 postgres: st stk 127.0.0.1(43897) SELECT
14857 postgres  16   0 7485m 7.2g 7.1g D 10.9 15.2  36:12.30 postgres: st stk 127.0.0.1(52229) SELECT
15862 postgres  15   0 7495m 7.2g 7.1g S 10.0 15.2 146:18.47 postgres: st stk 127.0.0.1(60728) SELECT
9485 postgres  16   0 7488m 7.2g 7.1g S  3.3 15.2 191:53.33 postgres: st stk 127.0.0.1(42127) SELECT

1 个答案:

答案 0 :(得分:1)

当页面通过读取或写入操作映射到进程的地址空间时,

shared_buffers似乎映射到Linux上的RSS。

RAM实际上是共享的,它只是Linux占用RAM的方式以及top如何显示它是一个问题。

http://wiki.postgresql.org/wiki/FAQ#Why_does_PostgreSQL_use_so_much_memory.3F