Thread: Calculation of a shared memory
Hi. I think that a calculation sheet will be made. However, calculation does not suitable.:-( It is this.(8.2.5 Default-FreeBSD) -- max_locks_per_transaction 64 max_connections 40 max_prepared_transactions 5 shared_buffers 28MB wal_buffers 64kB max_fsm_relations 1000 max_fsm_pages 179200 inet% ipcs -b -m Shared Memory: T ID KEY MODE OWNER GROUP SEGSZ m 917504 5432001 --rw------- saito wheel 32571392 40*(400+270*64)= 7072005*(600+270*64)= 89400 28MB= 29360128 64kB= 65536 1000*70= 70000 179200*6= 1075200 Total :31367464 ipcs-m:32571392 -1203928 (difference is large: why?) Table 16-2. Configuration parameters affecting PostgreSQL's shared memory usage http://www.postgresql.org/docs/8.2/static/kernel-resources.html#SYSVIPC It may be the bug of postgres or whether the document is wrong.... or My misapprehension. Can someone see a near value? Regards, Hiroshi Saito
"Hiroshi Saito" <z-saito@guitar.ocn.ne.jp> writes: > inet% ipcs -b -m > Shared Memory: > T ID KEY MODE OWNER GROUP SEGSZ > m 917504 5432001 --rw------- saito wheel 32571392 > 40*(400+270*64)= 707200 > 5*(600+270*64)= 89400 > 28MB= 29360128 > 64kB= 65536 > 1000*70= 70000 > 179200*6= 1075200 > Total :31367464 > ipcs-m:32571392 > -1203928 (difference is large: why?) Hmm, those numbers never got updated for 8.2. The per-backend multiplier is particularly off, since it's not accounting for the in-memory pg_stat_activity array (PgBackendStatus is 1208 bytes on my machine...) Also, you neglected to add the fixed space, which was claimed to be 500K as of 8.1, but seems to have bloated to about 700K in 8.2 and 770K in HEAD. regards, tom lane
Hi. From: "Tom Lane" <tgl@sss.pgh.pa.us> > "Hiroshi Saito" <z-saito@guitar.ocn.ne.jp> writes: >> inet% ipcs -b -m >> Shared Memory: >> T ID KEY MODE OWNER GROUP SEGSZ >> m 917504 5432001 --rw------- saito wheel 32571392 > >> 40*(400+270*64)= 707200 >> 5*(600+270*64)= 89400 >> 28MB= 29360128 >> 64kB= 65536 >> 1000*70= 70000 >> 179200*6= 1075200 > >> Total :31367464 >> ipcs-m:32571392 >> -1203928 (difference is large: why?) > > Hmm, those numbers never got updated for 8.2. The per-backend > multiplier is particularly off, since it's not accounting for > the in-memory pg_stat_activity array (PgBackendStatus is 1208 > bytes on my machine...) Also, you neglected to add the fixed space, > which was claimed to be 500K as of 8.1, but seems to have bloated > to about 700K in 8.2 and 770K in HEAD. Sent: Friday, November 02, 2007 4:11 AM Subject: [COMMITTERS] pgsql: Update shared-memory-size info for 8.2 branch. Great, taken into consideration. 40*(1800+270*64)= 763200 5*(700+270*64)= 89900 28MB=29360128 64kB= 65536 1000*70= 70000 179200*6= 1075200 700kB= 716800 Total :32140764 ipcs-m:32571392 -430628 I think it is a permissible range. Thanks! Regards, Hiroshi Saito
"Hiroshi Saito" <z-saito@guitar.ocn.ne.jp> writes: > 40*(1800+270*64)= 763200 > 5*(700+270*64)= 89900 > 28MB=29360128 > 64kB= 65536 > 1000*70= 70000 > 179200*6= 1075200 > 700kB= 716800 > Total :32140764 > ipcs-m:32571392 > -430628 > I think it is a permissible range. Thanks! Most of the remaining discrepancy is because you did not account for the per-shared-buffer management overhead. The table shows shared_buffers as costing 8300 bytes each, not 8192. regards, tom lane
Hi. Thanks! From: "Tom Lane" <tgl@sss.pgh.pa.us> >> I think it is a permissible range. Thanks! > > Most of the remaining discrepancy is because you did not account for the > per-shared-buffer management overhead. The table shows shared_buffers > as costing 8300 bytes each, not 8192. Oops, I did the misapprehension by the alteration of MB and kB. This estimates the value secured more correctly. 40*(1800+270*64)= 763200 5*(700+270*64)= 89900 28MB*1024/8*8300= 29747200 64kB/8*8200= 65600 1000*70= 70000 179200*6= 1075200 700kB= 716800 Total :32527900 ipcs-m:32571392 -43492 Does this suit? Regards, Hiroshi Saito