Wydajność Postgresql - Dostosowywanie SHMMAX i SHMALL

9

Przeczytałem prawie wszystko, co jest dostępne online na temat poprawy wydajności postgresu, ale „właściwe” wartości dla SHMMAX i SHMALL wciąż mi umykają.

Konsensus wydaje się, że SHMMAX = total_memory / 4 i SHMALL = total_memory / 2 to bezpieczne wartości początkowe.

Jednak SHMALL można mierzyć w stronach lub bajtach i nie mogę znaleźć żadnych informacji o tym, które są używane w Ubuntu.

Czy Ubuntu (lub bardziej ogólnie Debian) używa stron lub bajtów dla SHMALL?

Enrico
źródło

Odpowiedzi:

11

Dla wszystkich używanych systemów Linux SHMALLjest mierzony w stronach i SHMMAXmierzony w bajtach. Myślę, że możesz sprawdzić swój system za pomocą ipcspolecenia, które zawsze konwertuje powyższe parametry w KBytes podczas wyjścia i porównywać je z sysctlwartościami:

[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

Alexander Seryozhin
źródło
2

Zmienne te są mierzone w bajtach, jak podano w dokumentacji. Myślę, że ważniejsze jest przyjrzenie się parametrom konfiguracyjnym postgresql. W razie potrzeby należy spojrzeć na wartości SHMALL / SHMMAX. Na przykład, jeśli chcesz zwiększyć maksymalną liczbę połączeń, konieczne może być zwiększenie tych limitów.

Strojenie serwera bazy danych zależy od wzorca użytkowania, takiego jak liczba jednoczesnych połączeń i rozmiar bazy danych. Zwiększenie parametru konfiguracji nie zawsze jest dobre.

Khaled
źródło
2
SHMMAX musi zostać zwiększony, aby zwiększyć shared_buffers, który jest najmniej wiszącym owocem, jeśli chodzi o wydajność postgresql. Czy możesz dodać link do dokumentacji?
Enrico