[pgsql-jp: 35037] Re: SMP と共有メモリ
Kouji Ito
kouji @ cty-net.ne.jp
2005年 3月 14日 (月) 18:51:06 JST
伊藤です。
linuxはあんまり詳しくないので、適当に答えています。
すみません。
sysctl -a | grep page
で、出て来ませんか?
FreeBSD(i386)の場合は、
/usr/src/sys/i386/include/param.h で、
param.h:#define PAGE_SHIFT 12 /* LOG2(PAGE_SIZE) */
param.h:#define PAGE_SIZE (1<<PAGE_SHIFT) /* bytes/page */
の様に定義されています。
ページサイズは、CPU(というよりMMU)によって変わると思うので、
linuxの場合も、マシンアーキテクチャ固有のファイルで指定されている
と思うので、それらしい場所を探せば出て来ると思いますよ。
また、共有メモリの確保出来るMAX値を増やすという話なので、
それほど厳密に計算しなくても、適当に切りの良い値にしておけば
良いかと思います。
koyama wrote:
>k7-koyama です。
>
>伊藤 さん、水野さん ご返答ありがとうございます。
>
>
>
>
>>sysctl.conf に設定したshmallおよび、shmmaxの指定単位が
>>ページという事ではないでしょうか。
>>1ページが4Kbyte。
>>ipcs で表示させたときは、kbytesとなっているので、
>>134217728ページ×4Kbyte = 536870912 Kbytes
>>
>>
>
>kernel のソースの shm.h を覗いてみました。
>
>#define SHMMAX 0X2000000 /* max shared seg size (byte)*/
>#define SHMMIN 1 /* min shared seg size (byte)*/
>#define SHMMNI 4096 /* max num of segs system wide*/
>
>#define SHMALL (SHMMAX/PAGE_SIZE*(SHMMNI/16)) 折り返します
>/* max shm system wide(pages)*/
>
>#define SHMSEG SHMMNI /* max shared segs per process*/
>
>となっていました。
>
>という事は、
>
>kernel.shmmax= 536870912
>
>1ページ4kbとして
>kernel.shmall= 536870912/4000*(4096/16)
> = 34359738.37 と指定すべきなのでしょうか?
>
>
>この1ページのサイズを調べたいのですが、どこを見れば良いでしょうか?
>
>
>
>
>
pgsql-jp メーリングリストの案内