PostgreSQL рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИ

PostgreSQL рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджреИ рдЗрд╖реНрдЯрддрдо PostgreSQL рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╕рд╣реА рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред рдЦрд░рд╛рдм рд░реВрдкрдорд╛ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ OS рдХрд░реНрдиреЗрд▓ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрд▓реЗ рдЦрд░рд╛рдм рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рд░реНрднрд░ рдкреНрд░рджрд░реНрд╢рдирдХреЛ рдкрд░рд┐рдгрд╛рдо рд╣реБрди рд╕рдХреНрдЫред рддреНрдпрд╕рдХрд╛рд░рдг, рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдпреА рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рд░реНрднрд░ рд░ рдпрд╕рдХреЛ рдХрд╛рд░реНрдпрднрд╛рд░ рдЕрдиреБрд╕рд╛рд░ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрд╕ рдкреЛрд╖реНрдЯрдорд╛, рд╣рд╛рдореА рдХреЗрд╣рд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЫрд▓рдлрд▓ рдЧрд░реНрдиреЗрдЫреМрдВ рдЬрд╕рд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕ рд╕рд░реНрднрд░ рдкреНрд░рджрд░реНрд╢рдирд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрди рд╕рдХреНрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдХрд╕рд░реА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗред

SHMMAX / SHMALL

SHMMAX рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреЗ рдПрдХрд▓ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдЦрдгреНрдбрдХреЛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗ рдХрд░реНрдиреЗрд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╣реЛред рд╕рдВрд╕реНрдХрд░рдг 9.2 рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, PostgreSQL рд▓реЗ System V (SysV) рдХреЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНтАНрдпреЛ, рдЬрд╕рд▓рд╛рдИ SHMMAX рд╕реЗрдЯрд┐рдЩ рдЪрд╛рд╣рд┐рдиреНрдЫред 9.2 рдкрдЫрд┐, PostgreSQL рд▓реЗ POSIX рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реАрдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрдпреЛред рддреНрдпрд╕реИрд▓реЗ рдЕрдм рд╕рд┐рд╕реНрдЯрдо V рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реАрдХреЛ рдХрдо рдмрд╛рдЗрдЯрд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдЫред

рд╕рдВрд╕реНрдХрд░рдг 9.3 рдЕрдШрд┐, SHMMAX рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХрд░реНрдиреЗрд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдерд┐рдпреЛред SHMMAX рдорд╛рди рдмрд╛рдЗрдЯрд╣рд░реВрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫред

рддреНрдпрд╕реНрддреИ SHMALL рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреЗ рдЕрд░реНрдХреЛ рдХрд░реНрдиреЗрд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╣реЛ
рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдкреГрд╖реНрдард╣рд░реВрдХреЛ рдкреНрд░рдгрд╛рд▓реА-рд╡реНрдпрд╛рдкреА рдорд╛рддреНрд░рд╛ред рд╣рд╛рд▓рдХреЛ SHMMAX, SHMALL, рд╡рд╛ SHMMIN рдорд╛рдирд╣рд░реВ рд╣реЗрд░реНрди, рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН ipcs.

SHM* рд╡рд┐рд╡рд░рдг - рд▓рд┐рдирдХреНрд╕

$ 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 рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ рдкреНрд░рдгрд╛рд▓реА V рдЖрдИрдкреАрд╕реА рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрдиред рдпреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╕рдмреИрднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдХрд░реНрдиреЗрд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рд╣реЛред рдЬрдм рддрдкрд╛рдЗрдБ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ, рдпрд╕рдХреЛ рдорддрд▓рдм рддрдкрд╛рдЗрдБрд╕рдБрдЧ 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.

рдкрд░рд┐рднрд╛рд╖рд╛рд╣рд░реВрдорд╛ рднрд┐рдиреНрдирддрд╛рд╣рд░реВ рдмреБрдЭреНрджреИ

рд▓рд┐рдирдХреНрд╕ рд░ MacOS X рдорд╛ SHMMAX/SHMALL рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреБ рдЕрд▓рд┐ рдлрд░рдХ рдЫ:

  • рд▓рд┐рдирдХреНрд╕: 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 рдореЗрдореЛрд░реА рдкреГрд╖реНрдард╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рд╕реБрдкрд░ рдкреГрд╖реНрдард╣рд░реБ, рд░ Windows рдорд╛ - рдареВрд▓рд╛ рдкреГрд╖реНрдард╣рд░реВред рдкреГрд╖реНрда рднрдиреЗрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдЫреБрдЯреНрдпрд╛рдЗрдПрдХреЛ RAM рдХреЛ рдЯреБрдХреНрд░рд╛ рд╣реЛред рдореЗрдореЛрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВрдХреЛ рдЖрдзрд╛рд░рдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдзреЗрд░реИ рдкреГрд╖реНрдард╣рд░реВ рд╣реБрди рд╕рдХреНрдЫрдиреНред рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдЬрддрд┐ рдзреЗрд░реИ рдореЗрдореЛрд░реА рдЪрд╛рд╣рд┐рдиреНрдЫ, рддреНрдпрддрд┐ рдзреЗрд░реИ рдкреГрд╖реНрдард╣рд░реВ рдЖрд╡рдВрдЯрд┐рдд рд╣реБрдиреНрдЫрдиреНред OS рд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреГрд╖реНрда рдЖрд╡рдВрдЯрди рддрд╛рд▓рд┐рдХрд╛ рд░рд╛рдЦреНрдЫред рдкреГрд╖реНрдардХреЛ рдЖрдХрд╛рд░ рдЬрддрд┐ рд╕рд╛рдиреЛ рд╣реБрдиреНрдЫ, рддрд╛рд▓рд┐рдХрд╛ рдЬрддрд┐ рдареВрд▓реЛ рд╣реБрдиреНрдЫ, рддреНрдпреЛ рдкреГрд╖реНрда рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдкреГрд╖реНрда рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рддреНрдпрддрд┐ рдиреИ рд▓рд╛рдореЛ рд╕рдордп рд▓рд╛рдЧреНрдЫред рдареВрд▓рд╛ рдкреГрд╖реНрдард╣рд░реВрд▓реЗ рдХрдо рдУрднрд░рд╣реЗрдбрдХреЛ рд╕рд╛рде рдареВрд▓реЛ рдорд╛рддреНрд░рд╛рдорд╛ рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ; рдХрдо рдкреГрд╖реНрда рджреГрд╢реНрдпрд╣рд░реВ, рдХрдо рдкреГрд╖реНрда рддреНрд░реБрдЯрд┐рд╣рд░реВ, рдареВрд▓рд╛ рдмрдлрд░рд╣рд░реВрдорд╛ рдЫрд┐рдЯреЛ рдкрдвреНрдиреЗ/рд▓реЗрдЦреНрдиреЗ рдХрд╛рд░реНрдпрд╣рд░реВред рдкрд░рд┐рдгрд╛рдо рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рдкреНрд░рджрд░реНрд╢рди рд╣реЛред

PostgreSQL рд▓реЗ рд▓рд┐рдирдХреНрд╕рдорд╛ рдареВрд▓рд╛ рдкреГрд╖реНрдард╣рд░реВрд▓рд╛рдИ рдорд╛рддреНрд░ рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рд▓рд┐рдирдХреНрд╕рд▓реЗ 4 KB рдореЗрдореЛрд░реА рдкреГрд╖реНрдард╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рддреНрдпрд╕реИрд▓реЗ рдзреЗрд░реИ рдореЗрдореЛрд░реА рд╕рдЮреНрдЪрд╛рд▓рдирд╣рд░реВ рднрдПрдХрд╛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдареВрд▓рд╛ рдкреГрд╖реНрдард╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред 2 MB рд░ 1 GB рд╕рдореНрдо рдареВрд▓рд╛ рдкреГрд╖реНрдард╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рднрд╣рд░реВ рдЕрд╡рд▓реЛрдХрди рдЧрд░рд┐рдиреНрдЫред рдареВрд▓реЛ рдкреГрд╖реНрда рдЖрдХрд╛рд░ рдмреБрдЯ рд╕рдордпрдорд╛ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рддрдкрд╛рдИрдВ рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рдареВрд▓рд╛ рдкреГрд╖реНрда рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд░ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкреНрд░рдпреЛрдЧ рддрдкрд╛рдИрдВрдХреЛ рд▓рд┐рдирдХреНрд╕ рдореЗрд╕рд┐рдирдорд╛ рдЖрджреЗрд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ cat /proc/meminfo | grep - i рд╡рд┐рд╢рд╛рд▓.

рдареВрд▓рд╛ рдкреГрд╖реНрдард╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджреИ (рд▓рд┐рдирдХреНрд╕ рдорд╛рддреНрд░)

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 рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдмреЗрд▓рд╛ рддрдкрд╛рдИрдВрдХреЛ рд▓рд┐рдирдХреНрд╕ рд╕рд░реНрднрд░рдорд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реНред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рд▓рд╛рдЧреА $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 рдорд╛ "рдСрди" рдорд╛ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╕рд░реНрднрд░ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдлреЗрд░рд┐, рдареВрд▓рд╛ рдкреГрд╖реНрдард╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА (рд▓рд┐рдирдХреНрд╕ рдорд╛рддреНрд░)

$ 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 рдЕрд░реНрдХреЛ рдХрд░реНрдиреЗрд▓ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рд╣реЛ рдЬрд╕рд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рдирд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрди рд╕рдХреНрдЫред рдпреЛ рд╡рд┐рдХрд▓реНрдк рд▓рд┐рдирдХреНрд╕рдорд╛ swappiness (рдореЗрдореЛрд░реА рднрд┐рддреНрд░ рд░ рдмрд╛рд╣рд┐рд░ рдкреГрд╖реНрдард╣рд░реВ рд╕реНрд╡реИрдкрд┐рдЩ) рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдорд╛рди 0 рджреЗрдЦрд┐ 100 рд╕рдореНрдордХреЛ рд╣реБрдиреНрдЫред рдпрд╕рд▓реЗ рдХрддрд┐ рдореЗрдореЛрд░реА рдкреГрд╖реНрда рд╡рд╛ рдкреГрд╖реНрда рдЖрдЙрдЯ рд╣реБрдиреЗрдЫ рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрджрдЫред рд╢реВрдиреНрдпрдХреЛ рдЕрд░реНрде рдХреБрдиреИ рд╡рд┐рдирд┐рдордп рд░ 100 рднрдиреЗрдХреЛ рдЖрдХреНрд░рд╛рдордХ рд╡рд┐рдирд┐рдордп рд╣реЛред

рддрдкрд╛рдИрдВ рдХрдо рдорд╛рдирд╣рд░реВ рд╕реЗрдЯ рдЧрд░реЗрд░ рд░рд╛рдореНрд░реЛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдирдпрд╛рдБ рдХрд░реНрдиреЗрд▓рд╣рд░реВрдорд╛ рдпрд╕рд▓рд╛рдИ реж рдорд╛ рд╕реЗрдЯ рдЧрд░реНрдирд╛рд▓реЗ OOM рдХрд┐рд▓рд░ (рд▓рд┐рдирдХреНрд╕рдХреЛ рдореЗрдореЛрд░реА рдХреНрд▓рд┐рдирд┐рдЩ рдкреНрд░рдХреНрд░рд┐рдпрд╛) рд▓рд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдЫред рддреНрдпрд╕реИрд▓реЗ рдпрд╕рд▓рд╛рдИ рез рдорд╛ рд╕реЗрдЯ рдЧрд░реНрди рд╕реБрд░рдХреНрд╖рд┐рдд рдЫ рдпрджрд┐ рддрдкрд╛рдИрдВ рд╕реНрд╡реИрдкрд┐рдЩ рдХрдо рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗред рд▓рд┐рдирдХреНрд╕рдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рди ремреж рд╣реЛред рдЙрдЪреНрдЪ рдорд╛рдирд▓реЗ MMU (рдореЗрдореЛрд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдЗрдХрд╛рдИ) рд▓рд╛рдИ RAM рднрдиреНрджрд╛ рдмрдвреА рд╕реНрд╡реИрдк рд╕реНрдкреЗрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рджрд┐рдиреНрдЫ, рдЬрдмрдХрд┐ рдХрдо рдорд╛рдирд▓реЗ рдореЗрдореЛрд░реАрдорд╛ рдердк рдбрд╛рдЯрд╛/рдХреЛрдб рд░рд╛рдЦреНрдЫред

PostgreSQL рдорд╛ рд╕реБрдзрд╛рд░рд┐рдПрдХреЛ рдкреНрд░рджрд░реНрд╢рдирдХреЛ рд▓рд╛рдЧрд┐ рдХрдо рдореВрд▓реНрдп рд░рд╛рдореНрд░реЛ рд╢рд░реНрдд рд╣реЛред

vm.overcommit_memory / vm.overcommit_ratio

рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд╣рд░реВрд▓реЗ рдореЗрдореЛрд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдЕрдм рдЖрд╡рд╢реНрдпрдХ рдирднрдПрдХреЛ рдмреЗрд▓рд╛ рдЬрд╛рд░реА рдЧрд░реНрджрдЫред рддрд░ рдХреЗрд╣рд┐ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдзреЗрд░реИ рдореЗрдореЛрд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ рд░ рдпрд╕рд▓рд╛рдИ рд░рд┐рд▓реАрдЬ рдЧрд░реНрджреИрдиред рдпрд╕рд▓реЗ OOM рд╣рддреНрдпрд╛рд░рд╛ рдирд┐рдореНрддреНрдпрд╛рдЙрди рд╕рдХреНрдЫред рдпрд╣рд╛рдБ рд╕рдореНрднрд╛рд╡рд┐рдд рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдорд╛рдирд╣рд░реВ рдЫрдиреН vm.overcommit_memory рдкреНрд░рддреНрдпреЗрдХрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╡рд░рдгрдХреЛ рд╕рд╛рде:

  1. Heuristic overcommit (рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд); рдХрд░реНрдиреЗрд▓ рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдорд╛рдирд┐рдд
  2. рдЬреЗ рднрдП рдкрдирд┐ overcommit рд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреБрд╣реЛрд╕реН
  3. рдпрд╕рд▓рд╛рдИ рдЕрдзрд┐рдХ рдирдЧрд░реНрдиреБрд╣реЛрд╕реН, рдУрднрд░рдХрдордорд┐рдЯ рдЕрдиреБрдкрд╛рдд рднрдиреНрджрд╛ рдмрдврд┐ рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред

рд╕рдиреНрджрд░реНрдн: https://www.kernel.org/doc/Documentation/vm/overcommit-accounting

vm.overcommit_ratio тАФ рдУрднрд░рд▓реЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрд▓рдмреНрдз RAM рдХреЛ рдкреНрд░рддрд┐рд╢рддред 50 GB RAM рднрдПрдХреЛ рдкреНрд░рдгрд╛рд▓реАрдорд╛ 2% рдХреЛ рдорд╛рдирд▓реЗ 3 GB рд╕рдореНрдо RAM рдЫреБрдЯреНрдпрд╛рдЙрди рд╕рдХреНрдЫред

vm.overcommit_memory рдХреЛ рд▓рд╛рдЧрд┐ 2 рдХреЛ рдорд╛рдирд▓реЗ PostgreSQL рдХреЛ рд▓рд╛рдЧрд┐ рд░рд╛рдореНрд░реЛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдпреЛ рдорд╛рдирд▓реЗ OOM рдХрд┐рд▓рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдмрд╛рдЯ рдорд╛рд░рд┐рдиреЗ рдХреБрдиреИ рдкрдирд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЬреЛрдЦрд┐рдо рдмрд┐рдирд╛ рд╕рд░реНрднрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ RAM рдЙрдкрдпреЛрдЧрд▓рд╛рдИ рдЕрдзрд┐рдХрддрдо рдмрдирд╛рдЙрдБрдЫред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреБрди: рд▓реЛрдб рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫ, рддрд░ рдХреЗрд╡рд▓ рдУрднрд░рд░рдирдХреЛ рд╕реАрдорд╛ рднрд┐рддреНрд░, рдЬрд╕рд▓реЗ OOM рдХрд┐рд▓рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдорд╛рд░реНрдиреЗ рдЬреЛрдЦрд┐рдо рдХрдо рдЧрд░реНрджрдЫред рддреНрдпрд╕рдХрд╛рд░рдг, реи рдХреЛ рдорд╛рдирд▓реЗ реж рдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рди рднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рдкреНрд░рджрд░реНрд╢рди рджрд┐рдиреНрдЫред рдпрджреНрдпрдкрд┐, рджрд╛рдпрд░рд╛рднрдиреНрджрд╛ рдмрд╛рд╣рд┐рд░рдХреЛ рдореЗрдореЛрд░реА рдУрднрд░рд▓реЛрдб рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реЗрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпрд╕рд▓реЗ 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 рдзреЗрд░реИ рд▓рд┐рдирдХреНрд╕ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛред рддрдкрд╛рдИрд▓реЗ рд╕рд╛рдиреЛ рдХрд╛рд░рдХрджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦрди-рдЧрд╣рди рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЬрд╕рдХреЛ рдорддрд▓рдм рд▓рд┐рдирдХреНрд╕рд▓реЗ рдкреГрд╖реНрдарднреВрдорд┐рдорд╛ рдлреЛрд╣реЛрд░ рдкреГрд╖реНрдард╣рд░реВ рдлреНрд▓рд╢ рдЧрд░реНрдиреЗрдЫред

рддрдкрд╛рдИрдВрд▓реЗ рдорд╛рди рд╕реЗрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди