рд╕рд╛рд░ : рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдбрд┐рд╕реНрдХ рджреНрд╡рд╛рд░рд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП cgroups рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдЧреАрдд
рджрд┐рдП рдЧрдП:
1 рдкреАрд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░,
5200 рдЖрд░рдкреАрдПрдо рд▓реИрдкрдЯреЙрдк рдбрд┐рд╕реНрдХ рдХреЗ рд╕рд╛рде рд▓реИрдкрдЯреЙрдк - 1 рдкреАрд╕реА редред
рд╣рд╛рд╕реНрдХреЗрд▓ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ 300 рдкреАрд╕реА
рдХреЙрдлреА-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╛рдЗрд▓реЗрдВ (рднрд╡рд┐рд╖реНрдп рдХреЗ рдЬреЗрдПрд╕) - 300 рдкреАрд╕реА
рд╕рдВрдХрд▓рди рдХрд╛ рд╕рдордп - 40 рдорд┐рдирдЯред
рдЙрджреНрджреЗрд╢реНрдп: "рдирд░рдХ рдФрд░ рдореГрддреНрдпреБ" рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдбрд╛рд▓реЗ рдмрд┐рдирд╛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╕рдВрдХрд▓рди рдХрд░рдирд╛ред рдЖрдк 50-60 рдорд┐рдирдЯ рддрдХ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдордп рдмрдврд╝рд╛рдиреЗ рдХреА рд▓рд╛рдЧрдд рдкрд░ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдорд╛рдзрд╛рди?
cgroups
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд▓реИрдкрдЯреЙрдк рдореЗрдВ рд▓рдЧрднрдЧ (рдЖрдИ) рдбрд┐рд╕реНрдХ рдбрд┐рд╕реНрдХ рдкреНрд░рджрд░реНрд╢рди рд╣реИ - рдЗрд╕рдХреЗ рдЪрд░рдо рдкрд░ рд▓рдЧрднрдЧ 80 IOPSред рд╣рдо рд╕рдВрдХрд▓рди рдХреЗ рд▓рд┐рдП 40 IOPS рдФрд░ 300% CPU (рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд╛ 75%) рджреЗрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред
рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ:
sudo -s mkdir -p ~/cg/io mkdir -p ~/cg/cpu mount -t cgroup -oblkio none ~/cg/io mount -t cgroup -ocpu none ~/cg/cpu mkdir ~/cg/cpu/g1 ( ) stat /dev/sda
(рд╣рдореЗрдВ рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдХреЗрд╡рд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ:
8.0 , рдмреЛрд▓реНрдб рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ - рд╡рд╛рдВрдЫрд┐рдд рдПрдХ)
рд╣рдо рдЕрдЧрд▓реЗ рд╢реЗрд▓ рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╕рдВрдХрд▓рди рд╣реЛрдЧрд╛ред рд╣рдо рдЗрд╕рдХреЗ PID рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:
echo $$
(рд╣рдореЗрдВ рдирдВрдмрд░ рдорд┐рд▓рддрд╛ рд╣реИ)
рд╣рдо рдкрд╣рд▓реЗ рд╢реЗрд▓ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
echo (PID ) >~/cg/g1/cpu/tasks echo (PID ) >~/cg/io/tasks
(рд╣рдордиреЗ рдпрд╣ рдХрд╣рд╛, рд╣рдо рдХрд┐рд╕ рд╡рдВрд╢ рдФрд░ рдЙрдирдХреЗ рд╡рдВрд╢рдЬ рдХреЛ рдХрд╛рдЯреЗрдВрдЧреЗ, рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╡рд╣рд╛рдВ рд▓рд┐рдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рди рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдмрд╕ рд╢реЗрд▓рд┐рдВрдЧ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ)
рдЖрдЧреЗ рд╣рдордиреЗ рд╕реАрдорд╛рдПрдБ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА:
IO :
echo "8:0 20" > ~/cg/io/blkio.throttle.read_iops_device echo "8:0 20" > ~/cg/io/blkio.throttle.write_iops_device
8: 0 рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП (рдЗрд╕реЗ рдХреИрд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ рдХреЗ рд▓рд┐рдП рдКрдкрд░ рджреЗрдЦреЗрдВ), рд╡реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 20 рд░рд┐рдХреЙрд░реНрдб рдФрд░ 20 рд░реАрдбрд┐рдВрдЧ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
CPU :
echo 300000 > ~/cg/cpu/g1/cpu.cfs_quota_us
рд╣рдордиреЗ 300,000 ofs (100,000 of рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЯрд┐рдХ рдХреЗ рд▓рд┐рдП) рдХрд╛ рдХреЛрдЯрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд 300% CPUред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд╢реЗрд▓ (рдЬрд┐рд╕рдХрд╛ рдкреАрдЖрдИрдбреА тАЛтАЛрд╣рдордиреЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛) рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ рдпрд╣ рдЕрдм рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдирд╣реАрдВ рдЦрд╛рдПрдЧрд╛, рдзреАрдорд╛ рдФрд░ рдмреАрдк рдХрд░реЗрдЧрд╛ред
рдореВрд▓реНрдпреЛрдВ, рд╡реИрд╕реЗ, рдЬрд╛рдиреЗ рдкрд░ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред