PostgreSQL เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ Linux เด•เต‡เตผเดฃเตฝ เด“เดชเตเดทเดจเตเด•เตพ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

PostgreSQL เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ Linux เด•เต‡เตผเดฃเตฝ เด“เดชเตเดทเดจเตเด•เตพ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตฝ PostgreSQL เดชเตเดฐเด•เดŸเดจเด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเดฟเด‚เด—เต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดฎเต‹เดถเดฎเดพเดฏเดฟ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดค OS เด•เต‡เตผเดฃเตฝ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดฎเต‹เดถเด‚ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเตผ เดชเตเดฐเด•เดŸเดจเดคเตเดคเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเด•เตเด‚. เด…เดคเดฟเดจเดพเตฝ, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเดฑเดฟเดจเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เดœเต‹เดฒเดฟเดญเดพเดฐเดคเตเดคเดฟเดจเตเด‚ เด…เดจเตเดธเตƒเดคเดฎเดพเดฏเดฟ เดˆ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เดคเตเดฏเดจเตเดคเดพเดชเต‡เด•เตเดทเดฟเดคเดฎเดพเดฃเต. เดˆ เดชเต‹เดธเตเดฑเตเดฑเดฟเตฝ, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดธเต†เตผเดตเตผ เดชเตเดฐเด•เดŸเดจเดคเตเดคเต† เดฌเดพเดงเดฟเด•เตเด•เตเดจเตเดจ เดšเดฟเดฒ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เดฒเดฟเดจเด•เตเดธเต เด•เต‡เตผเดฃเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเด‚ เด…เดต เดŽเด™เตเด™เดจเต† เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเตเด‚.

SHMMAX / SHMALL

SHMMAX เด’เดฐเต เดฒเดฟเดจเด•เตเดธเต เดชเตเดฐเต‹เดธเดธเดฟเดจเต เด…เดจเตเดตเดฆเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เด’เดฐเต เดชเด™เตเด•เดฟเดŸเตเดŸ เดฎเต†เดฎเตเดฎเดฑเดฟ เดธเต†เด—เตโ€Œเดฎเต†เดจเตเดฑเดฟเดจเตเดฑเต† เดชเดฐเดฎเดพเดตเดงเดฟ เดตเดฒเตเดชเตเดชเด‚ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด•เต‡เตผเดฃเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดพเดฃเต. เดชเดคเดฟเดชเตเดชเต 9.2-เดจเต เดฎเตเดฎเตเดชเต, PostgreSQL เดธเดฟเดธเตเดฑเตเดฑเด‚ V (SysV) เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดฐเตเดจเตเดจเต, เด…เดคเดฟเดจเต SHMMAX เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต. 9.2 เดจเต เดถเต‡เดทเด‚, PostgreSQL POSIX เดชเด™เตเด•เดฟเดŸเตเดŸ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเดฟ. เด…เดคเดฟเดจเดพเตฝ เด‡เดชเตเดชเต‹เตพ เดธเดฟเดธเตเดฑเตเดฑเด‚ V เดชเด™เตเด•เดฟเดŸเตเดŸ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเตเดŸเต† เด•เตเดฑเดšเตเดšเต เดฌเตˆเดฑเตเดฑเตเด•เตพ เด†เดตเดถเตเดฏเดฎเดพเดฃเต.

เดชเดคเดฟเดชเตเดชเต 9.3-เดจเต เดฎเตเดฎเตเดชเต, เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เด•เต‡เตผเดฃเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดพเดฏเดฟเดฐเตเดจเตเดจเต SHMMAX. SHMMAX เดฎเต‚เดฒเตเดฏเด‚ เดฌเตˆเดฑเตเดฑเตเด•เดณเดฟเตฝ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด…เดคเตเดชเต‹เดฒเต† SHMALL เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดฎเดฑเตเดฑเตŠเดฐเต เด•เต‡เตผเดฃเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดพเดฃเต
เดชเด™เตเด•เดฟเดŸเตเดŸ เดฎเต†เดฎเตเดฎเดฑเดฟ เดชเต‡เดœเตเด•เดณเตเดŸเต† เดธเดฟเดธเตเดฑเตเดฑเด‚-เดตเตˆเดกเต เดตเต‹เดณเดฟเดฏเด‚. เดจเดฟเดฒเดตเดฟเดฒเต† SHMMAX, SHMALL, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ SHMMIN เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจเดคเดฟเดจเต, เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• ipcs.

SHM* เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ - Linux

$ ipcs -lm

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 1073741824
max total shared memory (kbytes) = 17179869184
min seg size (bytes) = 1

SHM* เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ - MacOS X

$ ipcs -M
IPC status from  as of Thu Aug 16 22:20:35 PKT 2018
shminfo:
	shmmax: 16777216	(max shared memory segment size)
	shmmin:       1	(min shared memory segment size)
	shmmni:      32	(max number of shared memory identifiers)
	shmseg:       8	(max shared memory segments per process)
	shmall:    1024	(max amount of shared memory in pages)

PostgreSQL เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เดตเดฟ เดเดชเดฟเดธเดฟ เดชเด™เตเด•เดฟเดŸเตเดŸ เดฎเต†เดฎเตเดฎเดฑเดฟ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต. เดˆ เดชเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เด•เต‡เตผเดฃเตฝ เดชเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเดฟเตฝ เด’เดจเตเดจเดพเดฃเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเดฟเดถเด•เต เดธเดจเตเดฆเต‡เดถเด™เตเด™เตพ เดฒเดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เดดเต†เดฒเตเดฒเดพเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต PostgreSQL-เดจเตเดฑเต† เดชเดดเดฏ เดชเดคเดฟเดชเตเดชเต เด‰เดฃเตเดŸเต†เดจเตเดจเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† SHMMAX เดฎเต‚เดฒเตเดฏเด‚ เดตเดณเดฐเต† เด•เตเดฑเดตเดพเดฃเต†เดจเตเดจเตเด‚ เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเต. เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ เด…เดตเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด‰เดฆเตเดฆเต‡เดถเดฟเด•เตเด•เตเดจเตเดจ เดชเด™เตเด•เดฟเดŸเตเดŸ เดฎเต†เดฎเตเดฎเดฑเดฟ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดฎเต‚เดฒเตเดฏเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเตผเดฆเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดฎเต†เดจเตเดจเต เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

เดธเดพเดงเตเดฏเดฎเดพเดฏ เดคเต†เดฑเตเดฑเดพเดฏ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดชเดฟเดถเด•เตเด•เตพ

SHMMAX เดถเดฐเดฟเดฏเดพเดฏเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต PostgreSQL เด•เตเดฒเดธเตเดฑเตเดฑเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดชเดฟเดถเด•เต เดฒเดญเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚. initdb.

initdb เดชเดฐเดพเดœเดฏเด‚
DETAIL: Failed system call was shmget(key=1, size=2072576, 03600).

HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter. 
You can either reduce the request size or reconfigure the kernel with larger SHMMAX. To reduce the request size (currently 2072576 bytes),
reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.

If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter,
in which case raising the request size or reconfiguring SHMMIN is called for.

The PostgreSQL documentation contains more information about shared memory configuration. child process exited with exit code 1

เด…เดคเตเดชเต‹เดฒเต†, เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต PostgreSQL เดธเต†เตผเดตเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดชเดฟเดถเด•เต เดฒเดญเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚ pg_ctl.

pg_ctl เดชเดฐเดพเดœเดฏเด‚
DETAIL: Failed system call was shmget(key=5432001, size=14385152, 03600).

HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter.

You can either reduce the request size or reconfigure the kernel with larger SHMMAX.; To reduce the request size (currently 14385152 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.

If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter,
in which case raising the request size or reconfiguring SHMMIN is called for.

The PostgreSQL documentation contains more information about shared memory configuration.

เดจเดฟเตผเดตเดšเดจเด™เตเด™เดณเดฟเดฒเต† เดตเตเดฏเดคเตเดฏเดพเดธเด™เตเด™เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต

SHMMAX/SHMALL เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเดจเตเดจเดคเต Linux, MacOS X เดŽเดจเตเดจเดฟเดตเดฏเดฟเตฝ เด…เดฒเตเดชเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฃเต:

  • เดฒเดฟเดจเด•เตเดธเต: kernel.shmmax, kernel.shmall
  • MacOS X: kern.sysv.shmmax, kern.sysv.shmall

เดŸเต€เด‚ sysctl เดฎเต‚เดฒเตเดฏเด‚ เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด•เดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚. เดธเตเดฅเดฟเดฐเดฎเดพเดฏ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดธเดœเตเดœเดฎเดพเด•เตเด•เดพเตป, เด‡เดคเดฟเดฒเต‡เด•เตเด•เต เด’เดฐเต เดŽเตปเดŸเตเดฐเดฟ เดšเต‡เตผเด•เตเด•เตเด• /etc/sysctl.conf. เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เดคเดพเดดเต†.

MacOS X-เตฝ เด•เต‡เตผเดฃเตฝ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต

# Get the value of SHMMAX
sudo sysctl kern.sysv.shmmax
kern.sysv.shmmax: 4096

# Get the value of SHMALL
sudo sysctl kern.sysv.shmall 
kern.sysv.shmall: 4096

# Set the value of SHMMAX
sudo sysctl -w kern.sysv.shmmax=16777216
kern.sysv.shmmax: 4096 -> 16777216

# Set the value of SHMALL 
sudo sysctl -w kern.sysv.shmall=16777216
kern.sysv.shmall: 4096 -> 16777216

เดฒเดฟเดจเด•เตเดธเดฟเตฝ เด•เต‡เตผเดฃเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต

# Get the value of SHMMAX
sudo sysctl kernel.shmmax
kernel.shmmax: 4096

# Get the value of SHMALL
sudo sysctl kernel.shmall
kernel.shmall: 4096

# Set the value of SHMMAX
sudo sysctl -w kernel.shmmax=16777216
kernel.shmmax: 4096 -> 16777216

# Set the value of SHMALL 
sudo sysctl -w kernel.shmall=16777216
kernel.shmall: 4096 -> 16777216

เดฎเดฑเด•เตเด•เดฐเตเดคเต: เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดถเดพเดถเตเดตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดˆ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ /etc/sysctl.conf เดŽเดจเตเดจเดคเดฟเดฒเต‡เด•เตเด•เต เดšเต‡เตผเด•เตเด•เตเด•

เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ

เดฒเดฟเดจเด•เตเดธเต เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ 4 KB เดฎเต†เดฎเตเดฎเดฑเดฟ เดชเต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, BSD XNUMX KB เดฎเต†เดฎเตเดฎเดฑเดฟ เดชเต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดธเต‚เดชเตเดชเตผ เดชเต‡เดœเตเด•เตพ, เด’เดชเตเดชเด‚ เดตเดฟเตปเดกเต‹เดธเดฟเตฝ - เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ. เด’เดฐเต เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเด•เตเด•เดพเดฏเดฟ เดจเต€เด•เตเด•เดฟเดตเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดฑเดพเดฎเดฟเดจเตเดฑเต† เด’เดฐเต เดญเดพเด—เดฎเดพเดฃเต เดชเต‡เดœเต. เดฎเต†เดฎเตเดฎเดฑเดฟ เด†เดตเดถเตเดฏเด•เดคเด•เตพ เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เด’เดฐเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเดจเต เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดชเต‡เดœเตเด•เตพ เด‰เดฃเตเดŸเดพเด•เดพเด‚. เด’เดฐเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเดจเต เด•เต‚เดŸเตเดคเตฝ เดฎเต†เดฎเตเดฎเดฑเดฟ เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดคเดฟเดจเต เด•เต‚เดŸเตเดคเตฝ เดชเต‡เดœเตเด•เตพ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚. เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพเด•เตเด•เดพเดฏเดฟ OS เด’เดฐเต เดชเต‡เดœเต เด…เดฒเต‹เด•เตเด•เต‡เดทเตป เดŸเต‡เดฌเดฟเตพ เดชเดฐเดฟเดชเดพเดฒเดฟเด•เตเด•เตเดจเตเดจเต. เดชเต‡เดœเต เดตเดฒเตเดชเตเดชเด‚ เดšเต†เดฑเตเดคเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดชเดŸเตเดŸเดฟเด• เดตเดฒเตเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เด† เดชเต‡เดœเต เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เด’เดฐเต เดชเต‡เดœเต เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เด•เต‚เดŸเตเดคเตฝ เดธเดฎเดฏเดฎเต†เดŸเตเด•เตเด•เตเด‚. เด…เดคเดฟเดจเดพเตฝ เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เด“เดตเตผเดนเต†เดกเต เด•เตเดฑเดšเตเดšเดคเดฟเดจเตŠเดชเตเดชเด‚ เดตเดฒเดฟเดฏ เด…เดณเดตเดฟเดฒเตเดณเตเดณ เดฎเต†เดฎเตเดฎเดฑเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต; เด•เตเดฑเดšเตเดšเต เดชเต‡เดœเต เด•เดพเดดเตโ€Œเดšเด•เตพ, เด•เตเดฑเดšเตเดšเต เดชเต‡เดœเต เดคเด•เดฐเดพเดฑเตเด•เตพ, เดตเดฒเดฟเดฏ เดฌเดซเดฑเตเด•เดณเดฟเตฝ เดตเต‡เด—เดคเตเดคเดฟเดฒเตเดณเตเดณ เดตเดพเดฏเดจ/เดŽเดดเตเดคเตเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ. เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดŸ เดชเตเดฐเด•เดŸเดจเดฎเดพเดฃเต เดซเดฒเด‚.

PostgreSQL เดฒเดฟเดจเด•เตเดธเดฟเตฝ เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเต† เดฎเดพเดคเตเดฐเดฎเต‡ เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เต‚. เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, Linux 4 KB เดฎเต†เดฎเตเดฎเดฑเดฟ เดชเต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดฎเต†เดฎเตเดฎเดฑเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เด‰เดณเตเดณ เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ, เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. 2 MB, 1 GB เดตเดฐเต†เดฏเตเดณเตเดณ เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดชเตเดฐเด•เดŸเดจ เดจเต‡เดŸเตเดŸเด™เตเด™เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต. เดฌเต‚เดŸเตเดŸเต เดธเดฎเดฏเดคเตเดคเต เดตเดฒเดฟเดฏ เดชเต‡เดœเต เดตเดฒเตเดชเตเดชเด‚ เดธเดœเตเดœเดฎเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚. เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† Linux เดฎเต†เดทเต€เดจเดฟเดฒเต† เดตเดฒเดฟเดฏ เดชเต‡เดœเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เดณเตเด‚ เด…เดตเดฏเตเดŸเต† เด‰เดชเดฏเต‹เด—เดตเตเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเด‚ cat /proc/meminfo | grep -เดžเดพเตป เดตเดณเดฐเต† เดตเดฒเตเดคเดพเดฃเต.

เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดจเต‡เดŸเตเดจเตเดจเต (เดฒเดฟเดจเด•เตเดธเต เดฎเดพเดคเตเดฐเด‚)

Note: This is only for Linux, for other OS this operation is ignored$ cat /proc/meminfo | grep -i huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

เดˆ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดตเดฒเดฟเดฏ เดชเต‡เดœเต เดตเดฒเตเดชเตเดชเด‚ 2048 (2 MB) เด†เดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เด™เตเด•เดฟเดฒเตเด‚, เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเตเดŸเต† เด†เด•เต† เดŽเดฃเตเดฃเด‚ 0 เด†เดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดพเดฃเต เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚.

เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต

เดˆ เดฒเดณเดฟเดคเดฎเดพเดฏ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดจเตฝเด•เตเดจเตเดจเต. PostgreSQL เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† Linux เดธเต†เตผเดตเดฑเดฟเตฝ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด•. เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเดฟเดจเต เดตเต‡เดฃเตเดŸเดฟเดฏเดพเดฃเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด• $PGDATA PostgreSQL เดกเดพเดฑเตเดฑ เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด†เดตเดถเตเดฏเดฎเดพเดฏ เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต

#!/bin/bash
pid=`head -1 $PGDATA/postmaster.pid`
echo "Pid:            $pid"
peak=`grep ^VmPeak /proc/$pid/status | awk '{ print $2 }'`
echo "VmPeak:            $peak kB"
hps=`grep ^Hugepagesize /proc/meminfo | awk '{ print $2 }'`
echo "Hugepagesize:   $hps kB"
hp=$((peak/hps))
echo Set Huge Pages:     $hp

เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเต:

เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต

Pid:            12737
VmPeak:         180932 kB
Hugepagesize:   2048 kB
Set Huge Pages: 88

เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพเด•เตเด•เต เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดฎเต‚เดฒเตเดฏเด‚ 88 เด†เดฃเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เด‡เดคเต 88 เด†เดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เดฃเด‚.

เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเต

sysctl -w vm.nr_hugepages=88

เด‡เดชเตเดชเต‹เตพ เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•, เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด‚ (HugePages_Free = HugePages_Total).

เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เดตเต€เดฃเตเดŸเตเด‚ เดธเดจเตเดฆเตผเดถเดฟเดšเตเดšเต (เดฒเดฟเดจเด•เตเดธเต เดฎเดพเดคเตเดฐเด‚)

$ cat /proc/meminfo | grep -i huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
HugePages_Total:      88
HugePages_Free:       88
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB

เด‡เดชเตเดชเต‹เตพ $PGDATA/postgresql.conf-เตฝ big_pages เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ "on" เด†เดฏเดฟ เดธเดœเตเดœเดฎเดพเด•เตเด•เดฟ เดธเต†เตผเดตเตผ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•.

เด’เดฐเดฟเด•เตเด•เตฝ เด•เต‚เดŸเดฟ, เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ (เดฒเดฟเดจเด•เตเดธเต เดฎเดพเดคเตเดฐเด‚)

$ cat /proc/meminfo | grep -i huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
HugePages_Total:      88
HugePages_Free:       81
HugePages_Rsvd:       64
HugePages_Surp:        0
Hugepagesize:       2048 kB

เด‡เดชเตเดชเต‹เตพ เดตเดณเดฐเต† เด•เตเดฑเดšเตเดšเต เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเตเดณเตเดณเต‚ เดŽเดจเตเดจเต เด•เดพเดฃเดพเด‚. เด‡เดชเตเดชเต‹เตพ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต เด•เตเดฑเดšเตเดšเต เดกเดพเดฑเตเดฑ เดšเต‡เตผเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚.

เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เดฑเต€เดธเตˆเด•เตเด•เดฟเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดšเดฟเดฒ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ

postgres=# CREATE TABLE foo(a INTEGER);
CREATE TABLE
postgres=# INSERT INTO foo VALUES(generate_Series(1,10000000));
INSERT 0 10000000

เดจเดฎเตเดฎเตพ เด‡เดชเตเดชเต‹เตพ เดชเดดเดฏเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚.

เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เดณเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดตเดฐเด™เตเด™เตพ (เดฒเดฟเดจเด•เตเดธเต เดฎเดพเดคเตเดฐเด‚)

$ cat /proc/meminfo | grep -i huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
HugePages_Total:      88
HugePages_Free:       18
HugePages_Rsvd:        1
HugePages_Surp:        0
Hugepagesize:       2048 kB

เด‡เดชเตเดชเต‹เตพ เดตเดฒเดฟเดฏ เดชเต‡เดœเตเด•เตพ เดฎเดฟเด•เตเด•เดคเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฏเดฟ เด•เดพเดฃเดพเด‚.

เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•: เด‡เดตเดฟเดŸเต† เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ HugePages-เดจเตเดฑเต† เด•เดฃเด•เตเด•เดพเด•เตเด•เดฟเดฏ เดฎเต‚เดฒเตเดฏเด‚ เดตเดณเดฐเต† เด•เตเดฑเดตเดพเดฃเต, เด‡เดคเต เด’เดฐเต เด‰เตฝเดชเตเดชเดจเตเดจ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดฎเต†เดทเต€เดจเตเดฑเต† เดธเดพเดงเดพเดฐเดฃ เดฎเต‚เดฒเตเดฏเดฎเดฒเตเดฒ. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เดชเต‡เดœเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เตเด•เดฏเตเด‚ เดฒเต‹เดกเตเด‚ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเด‚ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เด…เดตเดฏเต† เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•.

vm.swappiness

vm.swappiness เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดชเตเดฐเด•เดŸเดจเดคเตเดคเต† เดฌเดพเดงเดฟเด•เตเด•เตเดจเตเดจ เดฎเดฑเตเดฑเตŠเดฐเต เด•เต‡เตผเดฃเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดพเดฃเต. เดฒเดฟเดจเด•เตเดธเดฟเตฝ เดธเตเดตเดพเดชเตเดชเดฟเดจเดธเต (เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเตเด‚ เดชเตเดฑเดคเตเดคเตเด‚ เดชเต‡เดœเตเด•เตพ เดธเตเดตเดพเดชเตเดชเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต) เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเตป เดˆ เด“เดชเตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดฎเต‚เดฒเตเดฏเด‚ 0 เดฎเตเดคเตฝ 100 โ€‹โ€‹เดตเดฐเต†เดฏเดพเดฃเต. เดŽเดคเตเดฐ เดฎเต†เดฎเตเดฎเดฑเดฟ เดชเต‡เดœเต เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเต‡เดœเต เด”เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดฎเต†เดจเตเดจเต เด‡เดคเต เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเต. เดชเต‚เดœเตเดฏเด‚ เดŽเดจเตเดจเดพเตฝ เดตเดฟเดจเดฟเดฎเดฏเดฎเดฟเดฒเตเดฒ, 100 เดŽเดจเตเดจเดพเตฝ เด†เด•เตเดฐเดฎเดฃเดพเดคเตเดฎเด• เดตเดฟเดจเดฟเดฎเดฏเด‚.

เด•เตเดฑเดžเตเดž เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดฟเด•เดšเตเดš เดชเตเดฐเด•เดŸเดจเด‚ เดจเต‡เดŸเดพเดจเดพเด•เตเด‚.

เดชเตเดคเดฟเดฏ เด•เต‡เตผเดฃเดฒเตเด•เดณเดฟเตฝ เด‡เดคเต 0 เด†เดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต OOM เด•เดฟเดฒเตเดฒเตผ (เดฒเดฟเดจเด•เตเดธเดฟเดจเตเดฑเต† เดฎเต†เดฎเตเดฎเดฑเดฟ เด•เตเดฒเต€เดจเดฟเด‚เด—เต เดชเตเดฐเต‹เดธเดธเต) เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเต† เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเตป เด•เดพเดฐเดฃเดฎเดพเดฏเต‡เด•เตเด•เดพเด‚. เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดตเดพเดชเตเดชเดฟเด‚เด—เต เด•เตเดฑเดฏเตเด•เตเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ เด…เดคเต 1 เด†เดฏเดฟ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดพเดฃเต. เดฒเดฟเดจเด•เตเดธเดฟเดฒเต† เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดฎเต‚เดฒเตเดฏเด‚ 60 เด†เดฃเต. เด‰เดฏเตผเดจเตเดจ เดฎเต‚เดฒเตเดฏเด‚ MMU (เดฎเต†เดฎเตเดฎเดฑเดฟ เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต เดฏเต‚เดฃเดฟเดฑเตเดฑเต) เดฑเดพเดฎเดฟเดจเต‡เด•เตเด•เดพเตพ เด•เต‚เดŸเตเดคเตฝ เดธเตเดตเดพเดชเตเดชเต เดธเตเดชเต‡เดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด•เดพเดฐเดฃเดฎเดพเด•เตเดจเตเดจเต, เด…เดคเต‡เดธเดฎเดฏเด‚ เด•เตเดฑเดžเตเดž เดฎเต‚เดฒเตเดฏเด‚ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดกเดพเดฑเตเดฑ/เด•เต‹เดกเต เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเตเดจเตเดจเต.

PostgreSQL-เดฒเต† เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดŸ เดชเตเดฐเด•เดŸเดจเดคเตเดคเดฟเดจเต เด•เตเดฑเดžเตเดž เดฎเต‚เดฒเตเดฏเด‚ เด’เดฐเต เดจเดฒเตเดฒ เดชเดจเตเดคเดฏเดฎเดพเดฃเต.

vm.overcommit_memory / vm.overcommit_ratio

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดฎเต†เดฎเตเดฎเดฑเดฟ เดจเต‡เดŸเตเด•เดฏเตเด‚ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดชเตเดชเต‹เตพ เด…เดคเต เดชเตเดฑเดคเตเดคเตเดตเดฟเดŸเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดšเดฟเดฒ เดธเดจเตเดฆเตผเดญเด™เตเด™เดณเดฟเตฝ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต เดตเดณเดฐเต†เดฏเดงเดฟเด•เด‚ เดฎเต†เดฎเตเดฎเดฑเดฟ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดฑเดฟเดฒเต€เดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒ. เด‡เดคเต เด’เดฐเต OOM เด•เตŠเดฒเดฏเดพเดณเดฟเด•เตเด•เต เด•เดพเดฐเดฃเดฎเดพเดฏเต‡เด•เตเด•เดพเด‚. เดธเดพเดงเตเดฏเดฎเดพเดฏ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด‡เดคเดพ vm.overcommit_memory เด“เดฐเต‹เดจเตเดจเดฟเดจเตเด‚ เด’เดฐเต เดตเดฟเดตเดฐเดฃเด‚ เดธเดนเดฟเดคเด‚:

  1. เดนเตเดฏเต‚เดฑเดฟเดธเตเดฑเตเดฑเดฟเด•เต เด“เดตเตผเด•เดฎเตเดฎเดฟเดฑเตเดฑเต (เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ); เด•เต‡เตผเดฃเตฝ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณ เดนเตเดฏเต‚เดฑเดฟเดธเตเดฑเตเดฑเดฟเด•เต
  2. เดเดคเดพเดฏเดพเดฒเตเด‚ เด…เดฎเดฟเดคเดพเดงเดฟเด•เดพเดฐเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด•
  3. เด…เดคเต เด…เดฎเดฟเดคเดฎเดพเด•เตเด•เดฐเตเดคเต, เด“เดตเตผเด•เดฎเตเดฎเดฟเดฑเตเดฑเต เด…เดจเตเดชเดพเดคเด‚ เด•เดตเดฟเดฏเดฐเตเดคเต.

เดฑเดซเดฑเตปเดธเต: https://www.kernel.org/doc/Documentation/vm/overcommit-accounting

vm.overcommit_ratio โ€” เด“เดตเตผเดฒเต‹เดกเดฟเดจเต เดฒเดญเตเดฏเดฎเดพเดฏ เดฑเดพเดฎเดฟเดจเตเดฑเต† เดถเดคเดฎเดพเดจเด‚. 50 GB RAM เด‰เดณเตเดณ เด’เดฐเต เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ 2% เดฎเต‚เดฒเตเดฏเดคเตเดคเดฟเดจเต 3 GB เดตเดฐเต† เดฑเดพเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เดพเด‚.

vm.overcommit_memory เดŽเดจเตเดจเดคเดฟเดจเดพเดฏเตเดณเตเดณ 2 เดฎเต‚เดฒเตเดฏเด‚ PostgreSQL-เดจเต เดฎเดฟเด•เดšเตเดš เดชเตเดฐเด•เดŸเดจเด‚ เดจเตฝเด•เตเดจเตเดจเต. เดˆ เดฎเต‚เดฒเตเดฏเด‚ OOM เด•เดฟเดฒเตเดฒเตผ เดชเตเดฐเต‹เดธเดธเตเดธเต เดตเดดเดฟ เดจเดถเดฟเดชเตเดชเดฟเด•เตเด•เดชเตเดชเต†เดŸเดพเดจเตเดณเตเดณ เด•เดพเดฐเตเดฏเดฎเดพเดฏ เด…เดชเด•เดŸเดธเดพเดงเตเดฏเดคเดฏเดฟเดฒเตเดฒเดพเดคเต† เดธเต†เตผเดตเตผ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเดจเตเดฑเต† เดฑเดพเด‚ เด‰เดชเดฏเต‹เด—เด‚ เดชเดฐเดฎเดพเดตเดงเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเต. เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต เดฑเต€เดฒเต‹เดกเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚, เดŽเดจเตเดจเดพเตฝ เด“เดตเตผเดฑเตบ เดชเดฐเดฟเดงเดฟเด•เตเด•เตเดณเตเดณเดฟเตฝ เดฎเดพเดคเตเดฐเด‚, เด‡เดคเต เด’เดฐเต OOM เด•เตŠเดฒเดฏเดพเดณเดฟ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเต† เดจเดถเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ, 2 เดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเด‚ 0 เดฏเตเดŸเต† เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดฎเต‚เดฒเตเดฏเดคเตเดคเต‡เด•เตเด•เดพเตพ เดฎเดฟเด•เดšเตเดš เดชเตเดฐเด•เดŸเดจเด‚ เดจเตฝเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดชเดฐเดฟเดงเดฟเด•เตเด•เต เดชเตเดฑเดคเตเดคเตเดณเตเดณ เดฎเต†เดฎเตเดฎเดฑเดฟ เด“เดตเตผเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดฒเตเดฒเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต† เดตเดฟเดถเตเดตเดพเดธเตเดฏเดค เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเด‚. เด‡เดคเต เด’เดฐเต OOM เด•เตŠเดฒเดฏเดพเดณเดฟเดฏเดพเตฝ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเต† เด•เตŠเดฒเตเดฒเดชเตเดชเต†เดŸเดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเต.

เดธเตเดตเดพเดชเตเดชเต เดšเต†เดฏเตเดฏเดพเดคเตเดค เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเดฟเตฝ, vm.overcommit_memory 2 เดจเต เดคเตเดฒเตเดฏเดฎเดพเดฏ เด’เดฐเต เดชเตเดฐเดถเตเดจเด‚ เด‰เดฃเตเดŸเดพเด•เดพเด‚.

https://www.postgresql.org/docs/current/static/kernel-resources.html#LINUX-MEMORY-OVERCOMMIT

vm.dirty_background_ratio / vm.dirty_background_bytes

vm.dirty_background_ratio เดกเดฟเดธเตเด•เดฟเตฝ เดŽเดดเตเดคเต‡เดฃเตเดŸ เดตเตƒเดคเตเดคเดฟเด•เต†เดŸเตเดŸ เดชเต‡เดœเตเด•เตพ เดจเดฟเดฑเดžเตเดž เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเตเดŸเต† เดถเดคเดฎเดพเดจเดฎเดพเดฃเต. เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เดกเดฟเดธเตเด•เดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดซเตเดฒเดทเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดชเดฐเดพเดฎเต€เดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เดฎเต‚เดฒเตเดฏเด‚ 0 เดฎเตเดคเตฝ 100 โ€‹โ€‹เดตเดฐเต†เดฏเดพเดฃเต; เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, 5-เดจเต เดคเดพเดดเต†เดฏเตเดณเตเดณ เด’เดฐเต เดฎเต‚เดฒเตเดฏเด‚ เดซเดฒเดชเตเดฐเดฆเดฎเดฒเตเดฒเดพเดฏเดฟเดฐเดฟเด•เตเด•เดพเด‚, เดšเดฟเดฒ เด•เต‡เตผเดฃเดฒเตเด•เตพ เด…เดคเดฟเดจเต† เดชเดฟเดจเตเดคเตเดฃเดฏเตเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เดฎเดฟเด•เตเด• เดฒเดฟเดจเด•เตเดธเต เดธเดฟเดธเตเดฑเตเดฑเด™เตเด™เดณเดฟเดฒเตเด‚ 10 เด†เดฃเต เดกเดฟเดซเต‹เตพเดŸเตเดŸเต. เด’เดฐเต เดšเต†เดฑเดฟเดฏ เด˜เดŸเด•เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดดเตเดคเตเดคเต-เดคเต€เดตเตเดฐเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเด•เดŸเดจเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเด‚, เด…เดคเดพเดฏเดคเต เดชเดถเตเดšเดพเดคเตเดคเดฒเดคเตเดคเดฟเตฝ เดตเตƒเดคเตเดคเดฟเด•เต†เดŸเตเดŸ เดชเต‡เดœเตเด•เตพ Linux เดซเตเดฒเดทเต เดšเต†เดฏเตเดฏเตเด‚.

เดจเดฟเด™เตเด™เตพ เดฎเต‚เดฒเตเดฏเด‚ เดธเดœเตเดœเดฎเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต vm.dirty_background_bytes เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเตเดฐเตˆเดตเดฟเดจเตเดฑเต† เดตเต‡เด—เดคเดฏเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดˆ เดฐเดฃเตเดŸเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพเด•เตเด•เตเด‚ "เดจเดฒเตเดฒ" เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตŠเดจเตเดจเตเดฎเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เด‡เดต เดฐเดฃเตเดŸเตเด‚ เดนเดพเตผเดกเตโ€Œเดตเต†เดฏเตผ เด†เดถเตเดฐเดฟเดคเดฎเดพเดฃเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, vm.dirty_background_ratio 5 เด†เดฏเตเด‚ vm.dirty_background_bytes เดกเดฟเดธเตเด•เต เดตเต‡เด—เดคเดฏเตเดŸเต† 25% เด†เดฏเตเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเดฟเด•เตเด• เด•เต‡เดธเตเด•เดณเดฟเดฒเตเด‚ เดชเตเดฐเด•เดŸเดจเด‚ ~25% เด†เดฏเดฟ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต.

vm.dirty_ratio/dirty_bytes

เด…เดคเต เดชเต‹เดฒเต† เดคเดจเตเดจเต† vm.dirty_background_ratio/dirty_background_bytes, เด’เดฐเต เดตเตผเด•เตเด•เตผ เดธเต†เดทเดจเดฟเตฝ เดฑเต€เดธเต†เดฑเตเดฑเต เดจเดŸเดคเตเดคเตเดจเตเดจเต เดŽเดจเตเดจเดคเตŠเดดเดฟเดšเตเดšเดพเตฝ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดคเดŸเดฏเตเดจเตเดจเต. เด…เดคเดฟเดจเดพเตฝ vm.dirty_ratio เดŽเดจเตเดจเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เด‰เดฏเตผเดจเตเดจเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเด‚ vm.dirty_background_ratio. เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต† เดชเดฐเดฎเดพเดตเดงเดฟ เดคเดŸเดฏเตเดจเตเดจเดคเต เด’เดดเดฟเดตเดพเด•เตเด•เดพเตป เดชเดถเตเดšเดพเดคเตเดคเดฒ เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ เดจเต‡เดฐเดคเตเดคเต† เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เด‡เดคเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเต. เดกเดฟเดธเตเด•เต I/O เดฒเต‹เดกเต เด…เดจเตเดธเดฐเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดˆ เดฐเดฃเตเดŸเต เด…เดจเตเดชเดพเดคเด™เตเด™เตพ เดคเดฎเตเดฎเดฟเดฒเตเดณเตเดณ เดตเตเดฏเดคเตเดฏเดพเดธเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เดพเด‚.

เดซเดฒเด‚

เดชเตเดฐเด•เดŸเดจเด‚ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดฑเตเดฑเต เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเดพเดตเตเดจเตเดจเดคเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเตเดคเตเดคเดฒเตเด•เตพ เดตเดณเดฐเต† เด•เตเดฑเดตเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดชเตเดฐเดฏเต‹เดœเดจเด‚ เดฒเดญเดฟเด•เตเด•เดฟเดฒเตเดฒ. เดŽเดฒเตเดฒเดพ เด“เดชเตเดทเดจเตเด•เดณเตเด‚ เดŽเดฒเตเดฒเดพเดคเตเดคเดฐเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เตเด‚ เดฌเดพเดงเด•เดฎเดฒเตเดฒเต†เดจเตเดจเต เดจเดพเด‚ เด“เตผเด•เตเด•เดฃเด‚. เดžเด™เตเด™เตพ เดšเดฟเดฒ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดšเดฟเดฒ เด†เดชเตเดชเตเด•เตพ เดจเดจเตเดจเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดšเดฟเดฒเดคเต เด…เด™เตเด™เดจเต†เดฏเดฒเตเดฒ. เดจเดฟเด™เตเด™เตพ เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจ เดœเต‹เดฒเดฟเดญเดพเดฐเดคเตเดคเดฟเดจเตเด‚ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดคเดฐเดคเตเดคเดฟเดจเตเดฎเดพเดฏเดฟ เดˆ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดถเดฐเดฟเดฏเดพเดฏ เดฌเดพเดฒเตปเดธเต เดจเดฟเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เดŸเตเดฏเต‚เตบ เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ OS เดธเตเดตเดญเดพเดตเดตเตเด‚ เดจเดฟเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดฃเด‚. เด•เต‡เตผเดฃเตฝ เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเดฑเตเด•เตพ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‹เดฒเต† เดŽเดณเตเดชเตเดชเดฎเดฒเตเดฒ; เดถเตเดชเดพเตผเดถเด•เตพ เดจเตฝเด•เตเดจเตเดจเดคเต เด•เต‚เดŸเตเดคเตฝ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเดพเดฃเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•