PostgreSQL рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Linux рдХрд░реНрдиреЗрд▓ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЯреНрдпреВрди рдХрд░рдирд╛

PostgreSQL рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Linux рдХрд░реНрдиреЗрд▓ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЯреНрдпреВрди рдХрд░рдирд╛ рдЗрд╖реНрдЯрддрдо PostgreSQL рдкреНрд░рджрд░реНрд╢рди рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдУрдПрд╕ рдХрд░реНрдиреЗрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдзреАрдореЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЬрд░реВрд░реА рд╣реИ рдХрд┐ рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдФрд░ рдЙрд╕рдХреЗ рд╡рд░реНрдХрд▓реЛрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рдо рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЬрд╛рдПред

SHMMAX/SHMMAL

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

рд╕рдВрд╕реНрдХрд░рдг 9.3 рд╕реЗ рдкрд╣рд▓реЗ, SHMMAX рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд░реНрдиреЗрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдерд╛ред SHMMAX рдорд╛рди рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

рдПрд╕рдПрдЪрдПрдо* рд╡рд┐рд╡рд░рдг - рд▓рд┐рдирдХреНрд╕

$ 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

рдПрд╕рдПрдЪрдПрдо* рд╡рд┐рд╡рд░рдг - рдореИрдХрдУрдПрд╕ рдПрдХреНрд╕

$ 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 рдкрд░ рдереЛрдбрд╝реА рднрд┐рдиреНрди рд╣реИ:

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

PostgreSQL рдХреЗрд╡рд▓ Linux рдкрд░ рдмрдбрд╝реЗ рдкреЗрдЬреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд▓рд┐рдирдХреНрд╕ 4 рдХреЗрдмреА рдореЗрдореЛрд░реА рдкреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдСрдкрд░реЗрд╢рди рд╣реИрдВ, рдмрдбрд╝реЗ рдкреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред 2 рдПрдордмреА рдФрд░ 1 рдЬреАрдмреА рддрдХ рдХреЗ рдмрдбрд╝реЗ рдкреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИред рд▓реЛрдб рд╕рдордп рдкрд░ рдмрдбрд╝реЗ рдкреЗрдЬ рдХрд╛ рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд▓рд┐рдирдХреНрд╕ рдорд╢реАрди рдкрд░ рдмрдбрд╝реЗ рдкреЗрдЬ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдФрд░ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬрд╛рдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдмрд┐рд▓реНрд▓реА /proc/meminfo | рдЧреНрд░реЗрдк-рдореИрдВ рд╡рд┐рд╢рд╛рд▓.

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

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 рдПрдордмреА) рдкрд░ рд╕реЗрдЯ рд╣реИ, рдмрдбрд╝реЗ рдкреГрд╖реНрдареЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ 0 рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдмрдбрд╝реЗ рдкреГрд╖реНрда рдЕрдХреНрд╖рдо рд╣реИрдВред

рдмрдбрд╝реЗ рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдпрд╣ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрдбрд╝реЗ рдкреЗрдЬ рд▓реМрдЯрд╛рддреА рд╣реИред рдЬрдм PostgreSQL рдЪрд▓ рд░рд╣рд╛ рд╣реЛ рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдкрдиреЗ Linux рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рд╛рдПрдБред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкрд░ рд╕реЗрдЯ рд╣реИ $рдкреАрдЬреАрдбреЗрдЯрд╛ 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 рд╡рд┐рдХрд▓реНрдк рдХреЛ "рдЪрд╛рд▓реВ" рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВред

рдмрдбрд╝реЗ рдкреГрд╖реНрда рдХреА рдЬрд╛рдирдХрд╛рд░реА рдлрд┐рд░ рд╕реЗ (рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ рдкрд░)

$ 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

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрдм рд╣рдо рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрдбрд╝реЗ рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдмрдбрд╝реЗ рдкреЗрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА (рдХреЗрд╡рд▓ Linux)

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

рд╡реА.рдПрдо.рд╕реНрд╡реИрдкреАрдиреЗрд╕

рд╡реА.рдПрдо.рд╕реНрд╡реИрдкреАрдиреЗрд╕ рдПрдХ рдЕрдиреНрдп рдХрд░реНрдиреЗрд▓ рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╕реНрд╡реИрдкреАрдиреЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ (рдореЗрдореЛрд░реА рдХреЗ рдЕрдВрджрд░ рдФрд░ рдмрд╛рд╣рд░ рдкреЗрдЬрд┐рдВрдЧ рдкреЗрдЬ) рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рди 0 рд╕реЗ 100 рддрдХ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреА рдореЗрдореЛрд░реА рдкреЗрдЬреЗрдб рдпрд╛ рдЕрдирд▓реЛрдб рдХреА рдЬрд╛рдПрдЧреАред рд╢реВрдиреНрдп рдХрд╛ рдЕрд░реНрде рд╣реИ рдХреЛрдИ рд╕рд╛рдЭрд╛рдХрд░рдг рдирд╣реАрдВ, рдФрд░ 100 рдХрд╛ рдЕрд░реНрде рд╣реИ рдЖрдХреНрд░рд╛рдордХ рд╕рд╛рдЭрд╛рдХрд░рдгред

рдЖрдк рдХрдо рдорд╛рди рд╕реЗрдЯ рдХрд░рдХреЗ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ.

рдирдП рдХрд░реНрдиреЗрд▓ рдкрд░ рдЗрд╕реЗ 0 рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ OOM рдХрд┐рд▓рд░ (рд▓рд┐рдирдХреНрд╕ рдХреА рдореЗрдореЛрд░реА рдХреНрд▓реАрдирдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛) рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЦрд╝рддреНрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдкреЗрдЬрд┐рдВрдЧ рдХреЛ рдиреНрдпреВрдирддрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдорд╛рди рдХреЛ 1 рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рд▓рд┐рдирдХреНрд╕ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 60 рд╣реИред рдЙрдЪреНрдЪ рдорд╛рди рдПрдордПрдордпреВ (рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рдпреВрдирд┐рдЯ) рдХреЛ рд░реИрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрд╡реИрдк рд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдХрдо рдорд╛рди рдореЗрдореЛрд░реА рдореЗрдВ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛/рдХреЛрдб рд░рдЦрддрд╛ рд╣реИред

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 рдЬреАрдмреА рд░реИрдо рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ 2% рдХрд╛ рдорд╛рди 3 рдЬреАрдмреА рд░реИрдо рддрдХ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдЖрдкрдХреЛ рдорд╛рди рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ vm.рдбрд░реНрдЯреА_рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб_рдмрд╛рдЗрдЯреНрд╕ рдЖрдкрдХреА рдбрд┐рд╕реНрдХ рдХреА рдЧрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░.

рдЗрди рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ "рдЕрдЪреНрдЫрд╛" рдорд╛рди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рджреЛрдиреЛрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, 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 рд▓реЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрди рджреЛрдиреЛрдВ рдЕрдиреБрдкрд╛рддреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрдкреВрд░реНрдг

рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЕрдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реБрдзрд╛рд░ рдиреНрдпреВрдирддрдо рд╣реЛрдВрдЧреЗ рдФрд░ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рд▓рд╛рдн рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред рд╣рдореЗрдВ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рднреА рд╡рд┐рдХрд▓реНрдк рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЬрдм рд╣рдо рдХреБрдЫ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреБрдЫ рдРрдкреНрд╕ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдирд╣реАрдВред рдЖрдкрдХреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпрднрд╛рд░ рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЗрди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдмреАрдЪ рд╕рд╣реА рд╕рдВрддреБрд▓рди рдвреВрдВрдврдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╕рдордп рдУрдПрд╕ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдХрд░реНрдиреЗрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЯреНрдпреВрди рдХрд░рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдЬрд┐рддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ: рдпрд╣рд╛рдВ рдЕрдиреБрд╢рдВрд╕рд╛рдПрдВ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ