рдЗрддреНрд░ рдФрд░ рд▓реМ



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

рдЙрджрд╛рд╣рд░рдг 1. рдкрд░реАрдХреНрд╖рдг


рдХреБрдЫ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛


рд╣рдорд╛рд░реЗ рд╡рд┐рднрд╛рдЧ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЙрддреНрдкрд╛рдж рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рд╕рд┐рдВрдереЗрдЯрд┐рдХреНрд╕ рд╣реИ, рдФрд░ рдмрд╛рдж рдореЗрдВ - рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкрд░реАрдХреНрд╖рдгред рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП Intel Optane рдбреНрд░рд╛рдЗрд╡ рдорд┐рд▓реАред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЕрдкрдиреЗ рдмреНрд▓реЙрдЧ рдореЗрдВ Optane рдбреНрд░рд╛рдЗрд╡ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред

рдбрд┐рд╕реНрдХ рдХреЛ рдПрдХ рдорд╛рдирдХ рд╕рд░реНрд╡рд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдПрдХ рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рддрд╣рдд рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдбрд┐рд╕реНрдХ рдиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛: рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдкреНрд░рддрд┐ 1 рд╕реНрдЯреНрд░реАрдо 1 рдЕрдиреБрд░реЛрдз рдХреА рдЧрд╣рд░рд╛рдИ рдХреЗ рд╕рд╛рде, 4Kbytes рдХреЗ рдмреНрд▓реЙрдХ рдореЗрдВ ~ 70Kiops рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕рдордп рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ: рдкреНрд░рддрд┐ рдЕрдиреБрд░реЛрдз рд▓рдЧрднрдЧ 13 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб!

рдпрд╣ рдЕрдЬреАрдм рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ "рд╡рд┐рд▓рдВрдмрддрд╛ - 10 ┬╡ рдкрдврд╝реЗрдВ" рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ 30% рдЕрдзрд┐рдХ рдорд┐рд▓рд╛, рдЕрдВрддрд░ рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдбрд┐рд╕реНрдХ рдХреЛ рджреВрд╕рд░реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рдПрдХ рдФрд░ "рддрд╛рдЬрд╝рд╛" рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдпрд╣ рдХрд╛рдо рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ?


рдпрд╣ рдордЬрд╝реЗрджрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдирдП рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдЙрд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реБрдИ, рд╡рд┐рд▓рдВрдмрддрд╛ рдХрдо рд╣реЛ рдЧрдИ, рд╕реАрдкреАрдпреВ рдкреНрд░рддрд┐ рд╢реЗрд▓реНрдл, 1 рд╕реНрдЯреНрд░реАрдо рдкреНрд░рддрд┐ рдЕрдиреБрд░реЛрдз, 4K рдмрд╛рдЗрдЯреНрд╕ рдмреНрд▓реЙрдХ, ~ рдЕрдиреБрд░реЛрдз рдкрд░ ~ 9 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдкрд░ 106Kiopsред

рдФрд░ рдлрд┐рд░ рдпрд╣ рд╡рд┐рд╕реНрддреГрдд рдкреИрд░реЛрдВ рд╕реЗ рдкрд░рд┐рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдЖрдЦрд┐рд░ рд╣рдореЗрдВ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ? рдкреВрд░реНрдг рдХреЗ рд╕рд╛рде , рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛рдЙрдВрдЯрд░ рд░реАрдбрд┐рдВрдЧ рд▓реЗрдВ: рдирд┐рд░реНрджреЗрд╢ рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛, рдХреИрд╢ рдорд┐рд╕, рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреА рдЧрдИ рд╢рд╛рдЦрд╛рдПрдВ рдЖрджрд┐ред (рдкреАрдПрдордпреВ рдЗрд╡реЗрдВрдЯреНрд╕)
  • рд╕реНрдерд┐рд░ рдЯреНрд░реЗрдбрд┐рдВрдЧ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдХрд╛рд▓реЗрдВ, рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
  • рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрд░реЗрдЦрдг рдЖрдЪрд░рдг

рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рд╕реАрдкреАрдпреВ рдирдореВрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред

рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рдкреВрд░реНрдг рдПрдХ рдЪрд▓ рд░рд╣реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкреВрд░реЗ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рд╕рдВрдХрд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рд░рдирд┐рдВрдЧ рдкрд░рдлреЗрдХреНрдЯ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рджреЗрд░реА рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдзреНрд╡рдЬ -F # рд╣реИ , рдЬрд╣рд╛рдВ # рдирдореВрдирд╛рдХрд░рдг рдЖрд╡реГрддреНрддрд┐ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рд░реНрдЯреНрдЬ рдореЗрдВ рдорд╛рдкрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдирдореВрдирд╛ рдЖрд╡реГрддреНрддрд┐ рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИ, рдЙрддрдиреА рд╣реА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрдзрд┐рдХ рдмреНрд░реЗрдХ рд▓рд╛рддрд╛ рд╣реИред рдХрдо рдЖрд╡реГрддреНрддрд┐, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдореМрдХрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕реНрдЯреИрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред

рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдФрд░ рдПрдХ рдЪрд╛рд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ - рдПрдХ рднреА рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рди рдЖрдПрдВ рдЬрдм рдЗрд╕ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рдХрд╛рдо рдирдореВрдиреЛрдВ рдореЗрдВ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдПрдХ рдЕрдиреНрдп рдмрд┐рдВрджреБ рдЬреЛ рд╢реБрд░реВ рдореЗрдВ рднреНрд░рд╛рдордХ рд╣реИ - рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЛ рдзреНрд╡рдЬ -fno-omit-рдлреНрд░реЗрдо-рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рдпрд╣, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд╕рдВрднрд╡ рд╣реИред рдЕрдиреНрдпрдерд╛, рдлрд╝рдВрдХреНрд╢рди рдирд╛рдореЛрдВ рдХреЗ рдмрдЬрд╛рдп рдЯреНрд░реЗрд╕ рдореЗрдВ, рд╣рдо рдареЛрд╕ рдЕрдЬреНрдЮрд╛рдд рдорд╛рди рджреЗрдЦреЗрдВрдЧреЗред рдХреБрдЫ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП, рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рддреАрдХ рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, someutil-dbg ред рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреВрд░реНрдг рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред

рд╣рдордиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреАрдВ:

  • Git рд╕реЗ fio рд▓рд┐рдпрд╛: //git.kernel.dk/fio.git, рдЯреИрдЧ fio-3.9
  • Makefile рдореЗрдВ CPPFLAGS рдХреЗ рд▓рд┐рдП -fno -omit-рдлрд╝реНрд░реЗрдо-рдкреЙрдЗрдВрдЯрд░ рд╡рд┐рдХрд▓реНрдк
  • рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ -j8

perf record -g ~/fio/fio --name=test --rw=randread --bs=4k --ioengine=pvsync2 --filename=/dev/nvme0n1 --direct=1 --hipri --filesize=1G 

рдирд┐рд╢рд╛рди рдХреЗ рдвреЗрд░ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП -g рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЖрдк рдЖрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 perf report -g fractal 

-G рднрдЧреНрди рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рддрд┐рд╢рдд рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдирдореВрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдФрд░ рдкреВрд░реНрдг рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдП рдЧрдП рдХреЙрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ 100% рдХреЗ рд░реВрдк рдореЗрдВ рд▓реА рдЧрдИ рд╣реИред

"рддрд╛рдЬрд╛ рдмрд┐рд▓реНрдб" рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд▓рдВрдмреА рдлрд┐рдпреЛ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рдЕрдВрдд рдХреА рдУрд░, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ:



рдФрд░ "рдкреБрд░рд╛рдиреЗ рдмрд┐рд▓реНрдб" рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░:



рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕реБрдВрджрд░ рд▓реМ рдЪрд╛рд╣рд┐рдПред

рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдлреНрд▓реЗрдордЧреНрд░рд╛рдо


рд╕реБрдВрджрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рджреЛ рдЙрдкрдХрд░рдг рд╣реИрдВ:

  • рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рд▓реМ
  • рдлреНрд▓реЗрдорд╕реНрдХреЛрдк , рдЬреЛ рдПрдХрддреНрд░рд┐рдд рдирдореВрдиреЛрдВ рд╕реЗ рд╕рдордп рдХреА рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЕрд╡рдзрд┐ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЦреЛрдЬ рдХреЛрдб рд╕реАрдкреАрдпреВ рдХреЛ рдХрдо рдлрдЯрдиреЗ рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред

рдпреЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рд╕рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ> рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдкрд░рд┐рдгрд╛рдо рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ svg рдореЗрдВ рдкрд╛рдЗрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬреЗрдВ:

 FlameGraph/stackcollapse-perf.pl ./result | FlameGraph/flamegraph.pl > ./result.svg 

рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЪрд┐рддреНрд░ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред

рдЖрдк рджреВрд╕рд░реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдкрд░рд┐рдгрд╛рдо рдХреЛ рдлреНрд▓реЗрдорд╕реНрдХреЛрдк / рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ /
  2. рдЕрдЬрдЧрд░ рдХреЛ рдЪрд▓рд╛рдПрдБ ред/run.py
  3. рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдиреАрдп рд╣реЛрд╕реНрдЯ рдХреЗ 5000 рдкреЛрд░реНрдЯ рддрдХ рдЬрд╛рддреЗ рд╣реИрдВ

рд╣рдо рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ?


рдПрдХ рдЕрдЪреНрдЫрд╛ рдлрд┐рдпреЛ рдорддрджрд╛рди рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реИ:


рдПрдХ рдмреБрд░рд╛ рдлрд┐рдпреЛ рдХрд╣реАрдВ рднреА рд╕рдордп рдмрд┐рддрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдорддрджрд╛рди рдореЗрдВ рдирд╣реАрдВ:


рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдорддрджрд╛рди рдкреБрд░рд╛рдиреЗ рд╣реЛрд╕реНрдЯ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд░ рдЬрдЧрд╣ 4.15 рдХрд░реНрдиреЗрд▓ рдПрдХ рд╣реА рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдПрдирд╡реАрдПрдо рдбрд┐рд╕реНрдХ рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдорддрджрд╛рди рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдорддрджрд╛рди sysfs рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдпрд╛ рдирд╣реАрдВ:

 # cat /sys/class/block/nvme0n1/queue/io_poll 1 

рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рджреМрд░рд╛рди, RWF_HIPRI рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде preadv2 рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдорддрджрд╛рди рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддред рдФрд░, рдпрджрд┐ рдЖрдк рд▓реМ рдЧреНрд░рд╛рдл (рдпрд╛ рдкреВрд░реНрдг рд░рд┐рдкреЛрд░реНрдЯ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдкрд┐рдЫрд▓реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ) рдХрд╛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред

рджреВрд╕рд░реА рдЪреАрдЬрд╝ рдЬреЛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ рд╡рд╣ рд╣реИ submit_bio () рдлрд╝рдВрдХреНрд╢рди рдФрд░ io_schedule () рдХреЙрд▓ рдХреА рдХрдореА рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреЙрд▓ рд╕реНрдЯреИрдХред рдЪрд▓рд┐рдП submit_bio () рдХреЗ рдЕрдВрддрд░ рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред

рдзреАрдорд╛ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо "рдкреБрд░рд╛рдирд╛ рдмрд┐рд▓реНрдб":


рдлрд╛рд╕реНрдЯ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо "рддрд╛рдЬрд╝рд╛":


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдзреАрдореЗ рдордВрдЪ рдкрд░, рдЕрдиреБрд░реЛрдз рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реА рд╕рдордп рдХрд┐рдпрдмрд░ рд╢реЗрдбреНрдпреВрд▓рд░ рдореЗрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ ред рдЖрдк рд╣рдорд╛рд░реЗ рд▓реЗрдЦ рдореЗрдВ I / O рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдПрдХ рдмрд╛рд░ рдХрд┐рдмрд░ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЙрд╕реА fio рдкрд░реАрдХреНрд╖рдг рдиреЗ рд▓рдЧрднрдЧ 10 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдХреА рдФрд╕рдд рд╡рд┐рд▓рдВрдмрддрд╛ рджрд┐рдЦрд╛рдИ, рдЬреИрд╕рд╛ рдХрд┐ рдХрд▓реНрдкрдирд╛ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!

рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ рдЕрдВрддрд░ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддрд╛ рд╣реИ?

рдФрд░ рдЕрдЧрд░ рдереЛрдбрд╝рд╛ рдЧрд╣рд░рд╛ рд╣реЛ?


рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, perf рдЖрдкрдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛рдЙрдВрдЯрд░ рд╕реЗ рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рдкреНрд░рддрд┐ рдЪрдХреНрд░ рдХреИрд╢ рдорд┐рд╕ рдФрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:

 perf stat -e cycles,instructions,cache-references,cache-misses,bus-cycles /root/fio/fio --clocksource=cpu --name=test --bs=4k --filename=/dev/nvme0n1p4 --direct=1 --ioengine=pvsync2 --hipri --rw=randread --filesize=4G --loops=10 





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

рдЙрджрд╛рд╣рд░рдг 2. рдХрд┐рд░рд╛рдиреЗ


рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ


рдПрдХ рд╡рд┐рддрд░рд┐рдд рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдХрд╛рдо рдореЗрдВ, рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рдореЗрдЬрдмрд╛рди рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╕реАрдкреАрдпреВ рдкрд░ рд▓реЛрдб рдореЗрдВ рд╡реГрджреНрдзрд┐ рджреЗрдЦреА рдЧрдИред рдореЗрдЬрдмрд╛рди рд╕рд╣рдХрд░реНрдореА, рд╕рд╣рдХрд░реНрдореА рд╣реИрдВ, рдФрд░ рд╕рдорд╛рди рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╣реИрдВред

рд╕реАрдкреАрдпреВ рд▓реЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:

 ~# pidstat -p 1441734 1 Linux 3.13.0-96-generic (lol) 10/10/2018 _x86_64_ (24 CPU) 09:23:30 PM UID PID %usr %system %guest %CPU CPU Command 09:23:44 PM 0 1441734 23.00 1.00 0.00 24.00 4 ceph-osd 09:23:45 PM 0 1441734 85.00 34.00 0.00 119.00 4 ceph-osd 09:23:46 PM 0 1441734 0.00 130.00 0.00 130.00 4 ceph-osd 09:23:47 PM 0 1441734 121.00 0.00 0.00 121.00 4 ceph-osd 09:23:48 PM 0 1441734 28.00 82.00 0.00 110.00 4 ceph-osd 09:23:49 PM 0 1441734 4.00 13.00 0.00 17.00 4 ceph-osd 09:23:50 PM 0 1441734 1.00 6.00 0.00 7.00 4 ceph-osd 

рдпрд╣ рд╕рдорд╕реНрдпрд╛ 09:23:46 рдкрд░ рдЙрдареА рдФрд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реНрдиреЗрд▓ рд╕реНрдкреЗрд╕ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреВрд░реЗ рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рдерд╛ред

рдЗрддрдирд╛ рдзреАрдорд╛ рдХреНрдпреЛрдВ?


рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдордиреЗ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдирдореВрдиреЗ рд▓рд┐рдП:

 perf record -a -g -- sleep 22 perf script > perf.results 

рд╕рднреА CPU рд╕реЗ рдирд┐рд╢рд╛рди рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП perf рдХреЗ рд▓рд┐рдП The -a рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдмрдврд╝реЗ рд╣реБрдП CPU рд▓реЛрдб рдХреЗ рдХреНрд╖рдг рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП flamescope рдХреЗ рд╕рд╛рде perf.results рдЦреЛрд▓реЗрдВред

рд╣реАрдЯрдореИрдк


рд╣рдорд╕реЗ рдкрд╣рд▓реЗ рдПрдХ "рд╣реАрдЯ рдореИрдк" рд╣реИ, рджреЛрдиреЛрдВ рдЕрдХреНрд╖ (рдПрдХреНрд╕ рдФрд░ рд╡рд╛рдИ) рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рдордп рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред

рдПрдХреНрд╕ рдЕрдХреНрд╖ рдкрд░, рдЕрдВрддрд░рд┐рдХреНрд╖ рд╕реЗрдХрдВрдб рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ, рдФрд░ рд╡рд╛рдИ рдЕрдХреНрд╖ рдкрд░, рдПрдХреНрд╕ рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ 20 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдЦрдВрдбреЛрдВ рдореЗрдВред рд╕рдордп рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рдФрд░ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рдЪрд▓рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЪрдордХреАрд▓реЗ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдирдореВрдиреЛрдВ рдХреА рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЗрд╕ рд╕рдордп рд╕реАрдкреАрдпреВ рдиреЗ рд╕рдмрд╕реЗ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред

рджрд░рдЕрд╕рд▓, рд╣рдо рдмреАрдЪ рдореЗрдВ рд░реЗрдб рд╕реНрдкреЙрдЯ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдорд╛рдЙрд╕ рд╕реЗ рдЪреБрдиреЗрдВ, рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдЫреБрдкрд╛рддрд╛ рд╣реИ:


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдЗрд╕рдореЗрдВ tcp_recvmsg рдФрд░ skb_copy_datagram_iovec рдзреАрдорд╛ рд╕рдВрдЪрд╛рд▓рди рд╣реИред

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдЕрдиреНрдп рд╣реЛрд╕реНрдЯ рдХреЗ рдирдореВрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ, рдЬрд┐рд╕ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ:


рдЗрд╕ рддрдереНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреА рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ рд╣реИ, рд╕рдорд╛рди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдЬреЛ рдмрд┐рдирд╛ рд░реБрдХреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛рдПрдБ рд▓реЛрд╣реЗ рдХреА рддрд░рдл рдкреИрджрд╛ рд╣реБрдИ рд╣реИрдВред Skb_copy_datagram_iovec рдлрд╝рдВрдХреНрд╢рди рдХрд░реНрдиреЗрд▓ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдерд╛рди рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ рд╣реЛрд╕реНрдЯ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред рдЗрд╕реА рд╕рдордп, рд▓реЙрдЧ рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИред

рд╣рдо рдордВрдЪ рдХреЛ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВред BIOS рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдПрдХ рдЯреВрдЯреА рд╣реБрдИ рдореЗрдореЛрд░реА рдмрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рджреЗрдЦрддреЗ рд╣реИрдВред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди, рдореЗрдЬрдмрд╛рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╕реАрдкреАрдпреВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдЕрдм рдкреБрди: рдкреЗрд╢ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред

рдЙрдкрд╕рдВрд╣рд╛рд░


рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг


рдЖрдо рддреМрд░ рдкрд░, рдПрдХ рд╡реНрдпрд╕реНрдд рдкреНрд░рдгрд╛рд▓реА рдкрд░, рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ perf рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рджреЗрд░реА рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗ рд╕рдХрддрд╛ рд╣реИред рдЗрди рджреЗрд░реА рдХрд╛ рдЖрдХрд╛рд░ рд╕рд░реНрд╡рд░ рдкрд░ рд▓реЛрдб рдкрд░ рднреА рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдЖрдЗрдП рдЗрд╕ рджреЗрд░реА рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:

 ~# /root/fio/fio --clocksource=cpu --name=test --bs=4k --filename=/dev/nvme0n1p4 --direct=1 --ioengine=pvsync2 --hipri --rw=randread --filesize=4G --loops=1 test: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=pvsync2, iodepth=1 fio-3.9-dirty Starting 1 process Jobs: 1 (f=1): [r(1)][100.0%][r=413MiB/s][r=106k IOPS][eta 00m:00s] test: (groupid=0, jobs=1): err= 0: pid=109786: Wed Dec 12 17:25:56 2018 read: IOPS=106k, BW=414MiB/s (434MB/s)(4096MiB/9903msec) clat (nsec): min=8161, max=84768, avg=9092.68, stdev=1866.73 lat (nsec): min=8195, max=92651, avg=9127.03, stdev=1867.13 тАж ~# perf record /root/fio/fio --clocksource=cpu --name=test --bs=4k --filename=/dev/nvme0n1p4 --direct=1 --ioengine=pvsync2 --hipri --rw=randread --filesize=4G --loops=1 test: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=pvsync2, iodepth=1 fio-3.9-dirty Starting 1 process Jobs: 1 (f=1): [r(1)][100.0%][r=413MiB/s][r=106k IOPS][eta 00m:00s] test: (groupid=0, jobs=1): err= 0: pid=109839: Wed Dec 12 17:27:50 2018 read: IOPS=106k, BW=413MiB/s (433MB/s)(4096MiB/9916msec) clat (nsec): min=8259, max=55066, avg=9102.88, stdev=1903.37 lat (nsec): min=8293, max=55096, avg=9135.43, stdev=1904.01 

рдЕрдВрддрд░ рдмрд╣реБрдд рд╣реА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ ~ 8 рдиреИрдиреЛрд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рд▓реЛрдб рдмрдврд╝рд╛рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ:

 ~# /root/fio/fio --clocksource=cpu --name=test --numjobs=4 --bs=4k --filename=/dev/nvme0n1p4 --direct=1 --ioengine=pvsync2 --hipri --rw=randread --filesize=4G --loops=1 test: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=pvsync2, iodepth=1 ... fio-3.9-dirty Starting 4 processes Jobs: 4 (f=4): [r(4)][100.0%][r=1608MiB/s][r=412k IOPS][eta 00m:00s] ~# perf record /root/fio/fio --clocksource=cpu --name=test --numjobs=4 --bs=4k --filename=/dev/nvme0n1p4 --direct=1 --ioengine=pvsync2 --hipri --rw=randread --filesize=4G --loops=1 test: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=pvsync2, iodepth=1 ... fio-3.9-dirty Starting 4 processes Jobs: 4 (f=4): [r(4)][100.0%][r=1584MiB/s][r=405k IOPS][eta 00m:00s] 

рдпрд╣рд╛рдВ рдЕрдВрддрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо 1% рд╕реЗ рдХрдо рдзреАрдорд╛ рд╣реЛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рднрд╛рд░реА рд▓реЛрдб рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд▓рдЧрднрдЧ 7Kiops рдЦреЛрдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╕рд┐рдВрдереЗрдЯрд┐рдХ рд╣реИ, рдлрд┐рд░ рднреА рдпрд╣ рдмрд╣реБрдд рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рддрд╛ рд╣реИред

рдЖрдЗрдП рдПрдХ рдФрд░ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдЬреЛ рдкреНрд░рдореБрдЦ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ - sysbench :

 ~# sysbench --max-time=10 --test=cpu run --num-threads=10 --cpu-max-prime=100000 ... Test execution summary: total time: 10.0140s total number of events: 3540 total time taken by event execution: 100.1248 per-request statistics: min: 28.26ms avg: 28.28ms max: 28.53ms approx. 95 percentile: 28.31ms Threads fairness: events (avg/stddev): 354.0000/0.00 execution time (avg/stddev): 10.0125/0.00 ~# perf record sysbench --max-time=10 --test=cpu run --num-threads=10 --cpu-max-prime=100000 тАж Test execution summary: total time: 10.0284s total number of events: 3498 total time taken by event execution: 100.2164 per-request statistics: min: 28.53ms avg: 28.65ms max: 28.89ms approx. 95 percentile: 28.67ms Threads fairness: events (avg/stddev): 349.8000/0.40 execution time (avg/stddev): 10.0216/0.01 

рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдиреНрдпреВрдирддрдо рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдореЗрдВ 270 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдХреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИред

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рджрд░реНрд╢рди рдФрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП perf рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдХреА рддрд░рд╣, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдирд┐рдХрдЯ рдкрд░реНрдпрд╡реЗрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдХреЛрдИ рднреА рд▓реЛрдб рд╕рд┐рд╕реНрдЯрдо рдмрджрддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХ:

Source: https://habr.com/ru/post/hi437808/


All Articles