web-dev-qa-db-ja.com

Postgresqlはカーネル共有メモリを計算しますか?

PGSQL 9.2を実行しており、ハードウェアの仕様は次のとおりです。

OS: CentOS7 64bit
CPU: 24
Memory: 32GB
Disk: SSD

Shmmax/shmall値を計算したいのですが、良い方法は何でしょうか?私はそれをグーグルで検索し、人々は総メモリの50%と言っています。しかし、私のボックスではPGSQLしか実行していないのに、合計メモリの80%を実行しないのはなぜですか?

kernel.shmmax 28GBを構成できますか? LinuxOS用に4Gを維持します。

何を指示してるんですか?

2
Satish

shmmaxshmallは割り当てではなく、カーネルの制御ノブであり、共有メモリセグメントの最大サイズと共有メモリページの数を制御できます。

sysctlドキュメント からの引用:

shmall:

This parameter sets the total amount of shared memory pages that
can be used system wide. Hence, SHMALL should always be at least
ceil(shmmax/PAGE_SIZE).

If you are not sure what the default PAGE_SIZE is on your Linux
system, you can run the following command:

# getconf PAGE_SIZE

==============================================================

shmmax:

This value can be used to query and set the run time limit
on the maximum shared memory segment size that can be created.
Shared memory segments up to 1Gb are now supported in the
kernel.  This value defaults to SHMMAX

これらのsysctl変数の設定について与えられた提案は、PostgreSQLをさらに調整できるようにするために不可欠であり、多くの場合、必要なタスクには十分すぎるため、推奨することをお勧めします。 =)

これらのsysctlを設定したら、shared_buffersをRAMの25%に設定し、effective_cache_sizepostgresql.confで75%に設定すると、RAMを効果的に。

また、 PostgreSQLサーバーのチューニング のPostgreSQL Wikiエントリに従うか、適切なチューニングとケアの詳細について、GregSmithのPostgreSQL9.0 HighPerformanceブックを入手することをお勧めします。あなたのサーバー。 =)

0
Kassandry