Kinerja Postgresql - Menyesuaikan SHMMAX dan SHMALL

9

Saya telah membaca hampir semua yang ada di internet tentang meningkatkan kinerja postgres, tetapi nilai-nilai "benar" untuk SHMMAX dan SHMALL masih menghindari saya.

Konsensus tampaknya SHMMAX = total_memory / 4 dan SHMALL = total_memory / 2 adalah nilai awal yang aman.

Namun, SHMALL dapat diukur dalam halaman atau byte dan saya tidak dapat menemukan info tentang yang digunakan di Ubuntu.

Apakah Ubuntu (atau lebih umum Debian) menggunakan halaman atau byte untuk SHMALL?

Enrico
sumber

Jawaban:

11

Untuk semua sistem Linux yang saya gunakan SHMALLdiukur dalam halaman dan SHMMAXdiukur dalam byte. Saya pikir Anda dapat memeriksa sistem Anda menggunakan ipcsperintah, yang selalu mengubah parameter di atas dalam KBytes saat output, dan membandingkannya dengan sysctlnilai - nilai:

[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
sumber
2

Variabel-variabel ini diukur dalam byte seperti yang dinyatakan dalam dokumentasi. Saya pikir lebih penting untuk melihat parameter konfigurasi postgresql. Anda perlu melihat nilai SHMALL / SHMMAX saat dibutuhkan. Misalnya, jika Anda ingin menambah jumlah koneksi maksimum, Anda mungkin perlu menambah batas ini.

Tuning server basis data tergantung pada pola penggunaan Anda seperti jumlah koneksi simultan dan ukuran basis data. Meningkatkan parameter konfigurasi tidak selalu baik.

Khaled
sumber
2
SHMMAX perlu ditingkatkan untuk meningkatkan shared_buffers yang merupakan buah gantung terendah dalam hal kinerja postgresql. Bisakah Anda menambahkan tautan ke dokumentasi?
Enrico