Postgresqlのパフォーマンス-SHMMAXとSHMALLの調整


9

postgresのパフォーマンスの向上についてオンライン上にあるすべてのことについて読みましたが、SHMMAXとSHMALLの「適切な」値はまだわかりません。

コンセンサスはSHMMAX = total_memory / 4であり、SHMALL = total_memory / 2が安全な開始値であるようです。

ただし、SHMALLはページまたはバイト単位で測定でき、Ubuntuで使用されているものに関する情報を見つけることができません。

Ubuntu(またはより一般的にはDebian)はSHMALLにページまたはバイトを使用しますか?

回答:


11

私が使用したすべてのLinuxシステムでSHMALLは、ページSHMMAX単位で測定され、バイト単位で測定されます。ipcs出力中に常に上記のパラメーターをキロバイト単位で変換するコマンドを使用してシステムをチェックし、sysctl値と比較できると思います。

[aseryozhin@centos ~]$ ipcs -l

------ Shared Memory Limits --------
max number of segments = 4096               // SHMMNI   
max seg size (kbytes) = 524288              // SHMMAX
max total shared memory (kbytes) = 8388608  // SHMALL
min seg size (bytes) = 1

[aseryozhin@centos ~]$ sysctl -e kernel.shmmax
kernel.shmmax = 536870912

[aseryozhin@centos ~]$ sysctl -e kernel.shmall
kernel.shmall = 2097152

[aseryozhin@centos ~]$ getconf PAGE_SIZE
4096

SHMMAX:524288 * 1024 = 536870912

SHMALL:8388608 * 1024/4096 = 2097152


2

これらの変数は、ドキュメントに記載されているようにバイト単位で測定されます。postgresqlの設定パラメータを確認することがより重要だと思います。必要に応じて、SHMALL / SHMMAX値を確認する必要があります。たとえば、接続の最大数を増やしたい場合は、これらの制限を増やす必要があるかもしれません。

データベースサーバーのチューニングは、同時接続数やデータベースサイズなどの使用パターンによって異なります。設定パラメータを増やすことは常に良いとは限りません。


2
postgresqlのパフォーマンスに関して最も低いぶら下がり果物であるshared_buffersを増やすには、SHMMAXを増やす必要があります。ドキュメントへのリンクを追加できますか?
Enrico

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.