рд╕реБрдкрд░рд▓рд╛рдЗрдЯ рд╡реЗрдЧ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ: рд╕рд┐рджреНрдзрд╛рдВрдд рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ред рднрд╛рдЧ 1

рдирдорд╕реНрддреЗ! рд╢реАрд░реНрд╖рдХ рд╕реЗ, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭ рдЧрдП рдереЗ рдХрд┐ рдореИрдВ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рдмрд╣реБрдд рдХрдЯреНрдЯрд░ рд╣реЛрдЧрд╛:
рд╣рдо рдЬрд╛рд╡рд╛, рд╕реА, рд╕реА ++, рдЕрд╕реЗрдВрдмрд▓рд░, рд▓рд┐рдирдХреНрд╕ рдХреЗ рдПрдХ рдмрд┐рдЯ, рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдХрд░реНрдиреЗрд▓ рдХреЗ рдПрдХ рдмрд┐рдЯ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗред рд╣рдо рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдорд╛рдорд▓реЗ рдХрд╛ рднреА рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд▓реЗрдЦ рддреАрди рдмрдбрд╝реЗ рднрд╛рдЧреЛрдВ (рдХрд╛рдлреА рдорд╛рддреНрд░рд╛ рдореЗрдВ) рдореЗрдВ рд╣реЛрдЧрд╛ред



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

рд╕рд╛рдордЧреНрд░реА



рд╕рдордп рдФрд░ рд╕рдордЭ рдХрд╛ рд╕рд╛рдзрди - рдкреНрд░реЛрдлрд╛рдЗрд▓рд░


рдкреНрд░рддрд┐рджрд┐рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, 1 рд╕реЗрдХрдВрдб рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ 1 рд╕реЗрдХрдВрдб рдкреВрд░реЗ рдПрдХ рдЕрд░рдм рдиреИрдиреЛрд╕реЗрдХрдВрдб рд╣реИред рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ 1 рдиреИрдиреЛрд╕реЗрдХрдВрдб рдореЗрдВ рд▓рдЧрднрдЧ 4 рдкреНрд░реЛрд╕реЗрд╕рд░ рдЪрдХреНрд░ рд▓реЗрддреЗ рд╣реИрдВ, 1 рд╕реЗрдХрдВрдб рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рдо рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рдмреЗрд╣рддрд░ рдпрд╛ рдЦрд░рд╛рдм рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо рдПрдХ рдРрд╕рд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдФрд░ рдХреБрдЫ рдХреЛрдб рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпреЗ рдЯреБрдХрдбрд╝реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ, рд╕реИрдХрдбрд╝реЛрдВ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб - рдЬрд▓реНрджреА рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд, рд▓реЗрдХрд┐рди рд╡реЗ [ рдХреЛрдб рдХреЗ рдЕрдиреБрднрд╛рдЧ ] рд╕реАрдзреЗ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреА рд╕рдлрд▓рддрд╛ рдФрд░ рдЕрд░реНрдЬрд┐рдд рдзрди рдпрд╛ рдЦреЛрдП рд╣реБрдП рд░рд╛рд╢рд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
рд╡рд┐рдирд┐рдордп рд▓реЗрдирджреЗрди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЖрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп, 100 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдирджреЗрди рдкрд░ 1 рдорд┐рд▓рд┐рдпрди рд░реВрдмрд▓ рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд▓рд╛рдЧрдд рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬреЛ рдПрдХ, рджреЛ рдирд╣реАрдВ, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╕реМ рд╕реЗ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

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

рдЖрдЗрдП рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ рдХрд┐ рд╣рдо рдпреЗ 100 ╬╝ рдХреИрд╕реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕рдордЭ рд╕рдХреЗрдВ рдХрд┐ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЛ рдЪреБрдирддреЗ рд╕рдордп рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ?

  1. рдХреЛрдб рдХреА рд╡рд╣ рдзрд╛рд░рд╛ рдЬреЛ рд╣рдореЗрдВ рд░реБрдЪрддреА рд╣реИ, рд╢рд╛рдпрдж рд╣реА рдХрднреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╛рдиреА 100 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдХреЛ рдПрдХ рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдмрд╛рд░ рдХрд╣реАрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдмреЗрдВрдЪ рдореЗрдВ рд╣реИ, рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рднреА рдХрдо рд╣реИред
  2. рдХреЛрдб рдХрд╛ рдпрд╣ рдЯреБрдХрдбрд╝рд╛ рдорд╛рдЗрдХреНрд░реЛрдмреЗрдирдорд╛рд░реНрдХ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рднреАред
  3. рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдореИрдВ рдкрд░рд┐рдгрд╛рдореА рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЙрддреНрдкрд╛рджрди-рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд╣реЛрдЧрд╛ред

рд╣рдо рдЗрди рд╕рднреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдмреНрдпрд╛рдЬ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рддреЗ рд╣реИрдВ?

рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ, рд╕рднреА рдкреНрд░реЛрдлрд╛рдЗрд▓рд░реЛрдВ рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░реНрд╕ рдЗрдВрд╕реНрдЯреНрд░реВрдореЗрдВрдЯрд┐рдВрдЧ рдпрд╛ рд╕реИрдВрдкрд▓рд┐рдВрдЧ рдХреЗ рджреЛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдкрд░ рдЕрд▓рдЧ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

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

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

рдирдореВрдирд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ?


рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдХ рдирдореВрдирд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ - SendToMoex рд╡рд┐рдзрд┐ рдХрдИ рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИред рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:

void sendToMoex() { a.qqq(); b.doo(); c.ccc() } void doo() { da(); db(); } 

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



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

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рджрд╛ рд╡рд┐рдзрд┐ рдХреЛ C.ccc рд╡рд┐рдзрд┐ рдЬрд┐рддрдирд╛ рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрд╣ Db рд╡рд┐рдзрд┐ рд╕реЗ 2 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдзрд╛рд░рдгрд╛ рдХрд┐ рдирдореВрдиреЛрдВ рдХрд╛ рд╡рд┐рддрд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдлрд┐рд░ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛ рдЕрдиреБрдорд╛рди рдЧрд▓рдд рд╣реЛрдЧрд╛ред

рд╣рдореЗрдВ рдХрд┐рддрдиреА рдмрд╛рд░ рдирдореВрдирд╛ рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдо 100 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ 1000 рдирдореВрдиреЗ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЕрдВрджрд░ рдХреНрдпрд╛ рдЦреЗрд▓рд╛ рдЧрдпрд╛ рдерд╛ред рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдкрд╛рдд рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рд╣рдореЗрдВ 100 ╬╝ рдореЗрдВ 1000 рдирдореВрдиреЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ 1 рд╕реЗрдХрдВрдб рдпрд╛ 10,000,000 рдирдореВрдиреЛрдВ / s рдореЗрдВ 10 рдорд┐рд▓рд┐рдпрди рдирдореВрдиреЗ рд╣реИрдВред



рдпрджрд┐ рд╣рдо рдЗрд╕ рдЧрддрд┐ рд╕реЗ рдирдореВрдирд╛ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдб рдХреЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рд╣рдо 1000 рдирдореВрдиреЗ рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдХрд┐ рдЬрд▓реНрджреА рдпрд╛ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рд╕рдордЭреЗрдВрдЧреЗред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдФрд░ рдХреЛрдб рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 10 рдорд┐рд▓рд┐рдпрди рдирдореВрдиреЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рдмрд╣реБрдд рдХреБрдЫ рд╣реИред рдФрд░ рдЕрдЧрд░ рд╣рдо рд╢реБрд░реВ рд╕реЗ рд╣реА рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреА рдРрд╕реА рд░рдлреНрддрд╛рд░ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдирд╛рдХрд╛рдо рд░рд╣реЗ рддреЛ? рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдордиреЗ 10 ╬╝ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 10 рдирдореВрдиреЗ рдПрдХрддреНрд░ рдХрд┐рдП, 1000 рдирд╣реАрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛрдб рдХреЗ рдЕрдЧрд▓реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ 1 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╣реЛрдЧрд╛ (рдЖрдЦрд┐рд░рдХрд╛рд░, рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛрдб рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП рд╣рдо 10 рдФрд░ рдирдореВрдиреЗ рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗред рдЪреВрдВрдХрд┐ рд╡реЗ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛрдб 1000/10 = 100 рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЖрд╡рд╢реНрдпрдХ 1000 рдирдореВрдиреЗ (рдкреНрд░рддреНрдпреЗрдХ 100 рдмрд╛рд░ 10 рдирдореВрдиреЗ) рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗред

рдПрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдЪреБрдиреЗрдВ


рдЗрд╕ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рдЬреНрдЮрд╛рди рдХреЗ рд╕рд╛рде, рдЪрд▓реЛ рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

Async-profiler рд▓реЗрдВ ред рдПрдХ рдорд╣рд╛рди рдЙрдкрдХрд░рдг (AsyncGetCallTrace рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ) рдЬреЛ рдЬрд╛рд╡рд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рдмрд╛рдЗрдЯ рдХреЛрдб рдХреЗ рдирд┐рд░реНрджреЗрд╢ рддрдХ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред рджреЗрд╢реА async- рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдирдореВрдирд╛ рджрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 1000 рдирдореВрдиреЗ рд╣реИ ред

рд╣рдо рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдкрд╛рдд рд╣рд▓ рдХрд░реЗрдВрдЧреЗ: 10,000,000 рдирдореВрдиреЗ / рд╕реЗрдХрдВрдб - 1 рд╕реЗрдХрдВрдб, 1000 рдирдореВрдиреЗ / рд╕реЗрдХрдВрдб - рдПрдХреНрд╕ рд╕реЗрдХрдВрдбред
рд╣рдореЗрдВ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ рдХрд┐ async-profiler рдХреЗ рдорд╛рдирдХ рдирдореВрдиреЗ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░, рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдореЗрдВ рд▓рдЧрднрдЧ 3 рдШрдВрдЯреЗ рд▓рдЧреЗрдВрдЧреЗред рдпрд╣ рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдореИрдВ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЬрд▓реНрджреА рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╕реБрдкрд░рдореВрд▓рд┐рдирд▓ рдЧрддрд┐ рд╕реЗ рд╣реА рд╕рд╣реАред

рдЖрдЗрдП Async-profiler рдХреЛ рдУрд╡рд░рдХреНрд▓реЙрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реАрдбрдореА рдореЗрдВ, рд╣рдореЗрдВ -i рдЭрдВрдбрд╛ рд▓рдЧрддрд╛ рд╣реИ, рдЬреЛ рдирдореВрдирд╛ рдЕрдВрддрд░рд╛рд▓ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП, -i1 рдзреНрд╡рдЬ (1 рдиреИрдиреЛрд╕реЗрдХрдВрдб), рдпрд╛ -i0 рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рддрд╛рдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдмрд┐рдирд╛ рд░реБрдХреЗ рдирдореВрдирд╛ рд▓реЗ рд╕рдХреЗред рдореБрдЭреЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓рдЧрднрдЧ 2.5 рд╣рдЬрд╛рд░ рдирдореВрдиреЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рдорд┐рд▓реАред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреА рдХреБрд▓ рдЕрд╡рдзрд┐ рд▓рдЧрднрдЧ 1 рдШрдВрдЯреЗ рд╣реЛрдЧреАред рдмреЗрд╢рдХ, 3 рдШрдВрдЯреЗ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рддреЗрдЬрд╝ рднреА рдирд╣реАрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХ рд░реВрдкрд░реЗрдЦрд╛ рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирдП рд╕реНрддрд░ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЙрдЪреНрдЪрддрд░ рдЖрд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ AsyncGetCallTrace рдХреЙрд▓ рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреВрд░реНрдг рд╡рд┐рддрд░рдг рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдкрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреВрд░реНрдг-рдХрд╛рд▓рд┐рдХ рд▓рд┐рдирдХреНрд╕ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, Java рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ perf рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ Java рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП perf рдХреЛ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдмреАрдЪ, рдЖрдЗрдП рдЗрд╕ рдбрд░рд╛рд╡рдиреЗ рддрд░реАрдХреЗ рд╕реЗ рдкрд░рдлреЗрдХреНрдЯ рдЪрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:

 $ perf record тАУF 10000 -p PID -g -- sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: .. 0.215 MB perf.data (4032 samples) ] 

рд╕рдВрдХреЗрддрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ
  • perf record рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдкреНрд░реЛрдлрд╛рдЗрд▓ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
  • -F рдЭрдВрдбрд╛ рдФрд░ рддрд░реНрдХ 10,000 рдирдореВрдирд╛ рджрд░ рд╣реИред
  • -p рдзреНрд╡рдЬ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреА рдЬрд╛рд╡рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХреЗрд╡рд▓ рд╡рд┐рд╢рд┐рд╖реНрдЯ PID рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
  • -g рдзреНрд╡рдЬ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдПрдХрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
  • рдЕрдВрдд рдореЗрдВ, рдиреАрдВрдж 1 рдХреЗ рд╕рд╛рде , рд╣рдо рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ 1 рд╕реЗрдХрдВрдб рддрдХ рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╣рдореЗрдВ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рд╣рдо рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рдм рдХреБрдЫ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рд╕реЗ рд╣рдо рдЙрд╕ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рд░реБрдЪрд┐ рджреЗрддрд╛ рд╣реИ (рдЧрдарди рдФрд░ рдЖрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡рд┐рдзрд┐)ред рд╡рд╣ рдорд╛рд░реНрдХрд░ рдЬреЛ рдПрдХрддреНрд░рд┐рдд рдирдореВрдирд╛ рдЙрд╕ рдбреЗрдЯрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, SendToMoex рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рд╕реНрдЯреИрдХ рдлреНрд░реЗрдо рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИред

рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдЬрд╛рдиреЗрдВред


рд╣рдо рдкрд░рдлреЗрдХреНрдЯ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ ... рдХрдорд╛рдВрдб, 1 рд╕реЗрдХрдВрдб рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рдлреЗрдХреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдФрд░ рд╣рдо рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗ:

 $ perf script java 8079 2008793.746571: 3745505 cycles:uppp: 7fa1e88b53f8 [unknown] (/tmp/perf-11038.map) java 8079 2008793.747565: 3728336 cycles:uppp: 7fa1e88b5372 [unknown] (/tmp/perf-11038.map) java 8079 2008793.748613: 3731147 cycles:uppp: 7fa1e88b53ef [unknown] (/tmp/perf-11038.map) 

рдпрд╣ рдкрддреЗ рд╕реЗ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрд╛рд╡рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдирд╣реАрдВ рд╣реИрдВред рддреЛ, рдЖрдкрдХреЛ рдЗрди рдкрддреЛрдВ рдХреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рд╕рд┐рдЦрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди JIT рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ - рдПрдХ рд╡рд┐рд╢реЗрд╖ perf-map рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрддреЛрдВ рдФрд░ рддрд░реАрдХреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЗ рдкрддреНрд░рд╛рдЪрд╛рд░ рдкрд░ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдХрд┐ рдкрдарди рдбреАрдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд▓рд╛рдЬ рдХрд░реЗрдЧрд╛ред рдпрд╣ perf-map рдлрд╝рд╛рдЗрд▓ tmp рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:
рд╡рд┐рдзрд┐ рдХреЛрдб рдкреНрд░рд╛рд░рдВрдн рдкрддрд╛рдХреЛрдб рдХреА рд▓рдВрдмрд╛рдИрд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо
7f99a911d600120java.util.AbstractCollectionред <init>
7f99a911d9c0180java.util.AbstractListред <init>
7f99a911de805c0java.util.Arrays.copyOf
7f99a911ed40140java.util.ArrayList $ Itr.hasNext
7f99a911f2003e0java.util.ArrayList $ Itr.next

рдкрд╣рд▓рд╛ рдХреЙрд▓рдо рд╡рд┐рдзрд┐ рдХреЛрдб рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдкрддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рд╣реИ, рддреАрд╕рд░рд╛ рдХреЙрд▓рдо рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ (рд╣рдореЗрдВ рдХреИрд╕реЗ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐ рдЬреЗрдЖрдИрдЯреА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛрдб рдХреЛ рдХрд┐рд╕ рдкрддреЗ рдкрд░ рд░рдЦреЗрдЧрд╛), рдЗрд╕рд▓рд┐рдП рд╣рдо perf-map-agent рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ create-java-perf-map.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕реЗ рд╣рдорд╛рд░реА рдЬрд╛рд╡рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ PID рдкрд╛рд╕ рдХрд░реЗрдВрдЧреЗред ред рдлрд╝рд╛рдЗрд▓ рддреИрдпрд╛рд░ рд╣реИ, рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рдкреВрд░реНрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдВред

 $ perf script java 8080 1895245.867498: cycles:uppp: 7fb2dd10f527 Loop3.doRecursiveCall (/tmp/perf-8079.map) java 8080 1895245.868176: 2127960 cycles:uppp: 7fb2dd10f57f Loop3.doRecursiveCall (/tmp/perf-8079.map) java 8080 1895245.868737: 1959990 cycles:uppp: 7fb2dd10f627 Loop3.doRecursiveCall (/tmp/perf-8079.map) 

рджреЗрдЦрд╛! рд╣рдо рдЬрд╛рд╡рд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рджреЗрдЦрддреЗ рд╣реИрдВ! рдмрд╕ рдХреНрдпрд╛ рд╣реБрдЖ: рд╣рдордиреЗ рдкрд░рдлрд╝реЗрдХреНрдЯ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдХреЛ рд╕рд┐рдЦрд╛рдпрд╛, рдЬреЛ рдЬрд╛рд╡рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рдПрдХ рдирд┐рдпрдорд┐рдд рдЬрд╛рд╡рд╛ рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдФрд░ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╣реЙрдЯ рдЬрд╛рд╡рд╛ рддрд░реАрдХреЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП!

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрд┐рд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╣рдо рдкреВрдЫрддрд╛рдЫ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рднреА рдПрдХрддреНрд░рд┐рдд рдирдореВрдиреЛрдВ рд╕реЗ рдмреНрдпрд╛рдЬ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХреЙрд▓-рд╕реНрдЯреИрдХ рдирд╣реАрдВ рд╣реИред

рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ?

рдЕрдм рдЖрдкрдХреЛ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд╕рд╛рде рдХреБрдЫ рдФрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдЗрдП рдПрдХ рдХрджрдо рд╡рд╛рдкрд╕ рд▓реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рд╕реНрдЯреИрдХ рдЖрдорддреМрд░ рдкрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддреАрди рдХрд╛рд░реНрдп f1, f2, f3 рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, f1 рдХреЙрд▓ f2, рдФрд░ f2 рдХреЙрд▓ f3ред

 void f1() { f2(); } void f2() { f3(); } void f3() { ... } 

рдЬрд┐рд╕ рд╕рдордп рдлрд╝рдВрдХреНрд╢рди f3 рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯреИрдХ рдХрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рд╣рдо rsp рд░рдЬрд┐рд╕реНрдЯрд░ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реНрдерд┐рдд рд╣реИред рд╣рдо рдпрд╣ рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдЯреИрдХ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╕реНрдЯреИрдХ рдлреНрд░реЗрдо рдХрд╛ рдкрддрд╛ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдореБрдЭреЗ рдХреЙрд▓-рд╕реНрдЯреИрдХ рдХреИрд╕реЗ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ?

рдпрджрд┐ рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕реНрдЯреИрдХ рдХреЛ рдмрд╕ рдПрдХ рдХрдиреЗрдХреНрдЯ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрди рдХреЙрд▓ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдирд┐рд╖реНрдкрд╛рджрди рдмрд┐рдВрджреБ рдкрд░ рд▓реЗ рдЖрдПред

рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП? рд╣рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрд░рдмреАрдкреА рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдкреАрд▓реЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЖрд░рдмреАрдкреА рд░рдЬрд┐рд╕реНрдЯрд░ рд╕рд╣реА рдХреЛ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрд╕ рдЕрдиреБрдХреНрд░рдо рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╣рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдмрд┐рдВрджреБ рдкрд░ рд▓рд╛рдпрд╛ред рдореИрдВ рд╕рд┐рд╕реНрдЯрдо рд╡реА рдПрдкреНрд▓реАрдХреЗрд╢рди рдмрд╛рдЗрдирд░реА рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдЗрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рддрд░реАрдХреЛрдВ рдХреЛ рдХреИрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред



рд╣рдо рд╕рдордЭ рдЧрдП рдХрд┐ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИред рд╕реНрдЯреИрдХ рдлреНрд░реЗрдо рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЗ рд░реВрдк рдореЗрдВ - рд╣рдореЗрдВ рдЕрдкрдиреЗ рдореВрд▓ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЖрд░рдмреАрдкреА рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗ JIT рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ rbp рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рдПрдХ рдлреНрд▓реИрдЧ рдкреНрд░рд┐рдЬрд░реНрд╡рдлрд╝реНрд░реЗрдордкреЙрдЗрдВрдЯрд░ рд╣реИред рдЬрдм рд╣рдо рдЗрд╕ рдЭрдВрдбреЗ рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╕реЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдЕрдкрдиреЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЖрд░рдмреАрдкреА рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧреАред рдФрд░ рдлрд┐рд░ рдкрд░рдлреЗрдХреНрдЯ рд╕реНрдЯреИрдХ рдХреЛ рд╕реНрдкрд┐рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рд╣рдореЗрдВ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдорд┐рд▓рддрд╛ рд╣реИред рдзреНрд╡рдЬ рдХреЛ рдХреБрдЦреНрдпрд╛рдд рдмреНрд░реЗрдВрдбрди рдЧреНрд░реЗрдЧ рдиреЗ рд╕рд┐рд░реНрдл JDK8u60 рдореЗрдВ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ рдерд╛ред

рд╣рдо рдПрдХ рдирдП рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред create-java-perf-map , рдЙрд╕рдХреЗ рдмрд╛рдж perf record рдФрд░ perf script рдЪрд▓рд╛рдПрдБред рдЕрдм рд╣рдо рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдЯреАрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 $ perf script java 18657 1901247.601878: 979583 cycles:uppp: 7fbfd1101edc Loop3.doRecursiveCall (...) 7fbfd1101edc Loop3.doRecursiveCall (...) 7fbfd1101edc Loop3.doRecursiveCall (...) 7fbfd1101edc Loop3.doRecursiveCall (...) 7f285d007b10 Interpreter (...) 7f285d0004e7 call_stub (...) 67d0db [unknown] (... libjvm.so) ... 708c start_thread (... libpthread-2.26.so) 

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

рдкреВрд░реНрдг рдирдореВрдирд╛ рджрд░ рдореЗрдВ рд╡реГрджреНрдзрд┐


рдЖрдЗрдП рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 10 рдорд┐рд▓рд┐рдпрди рдирдореВрдиреЛрдВ рддрдХ рдЗрддреНрд░ рдХреЛ рдУрд╡рд░рдХреНрд▓реЙрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд╛рдлреА рдХрдо рдЖрд╡реГрддреНрддрд┐ рд╣реИред

рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЕрднреА-рдЕрднреА рдХрд┐рдП рдЧрдП рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк perf-java-record-stack script рдХрд╛ рдЙрдкрдпреЛрдЧ perf-map-Agent рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрджреНрднреБрдд рдХрд▓рдо рд╣реИ - рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ perf_record-freq , рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдирдореВрдирд╛ рдЖрд╡реГрддреНрддрд┐ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 100 рд╣рдЬрд╛рд░ рдирдореВрдиреЗ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рднрдпрд╛рдирдХ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЕрдзрд┐рдХрддрдо рд╕реНрд╡реАрдХреГрдд рдирдореВрдирд╛ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдкрд╛рд░ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ:

 $ PERF_RECORD_FREQ=100000 ./bin/perf-java-record-stack PID ... Maximum frequency rate (30000) reached. Please use -F freq option with lower value or consider tweaking /proc/sys/kernel/perf_event_max_sample_rate. ... 

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реАрдорд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 30 рд╣рдЬрд╛рд░ рдирдореВрдиреЗ рдереЗред Perf рддреБрд░рдВрдд рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдХрд░реНрдиреЗрд▓ рддрд░реНрдХ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдпрд╛ рддреЛ рдЧреВрдВрдЬ рд╕реБрдбреЛ рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рдВрдЫрд┐рдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдпрд╛ рд╕реАрдзреЗ sysctl рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП:

 $ echo '1000000' | sudo tee /proc/sys/kernel/perf_event_max_sample_rate 

рдпрд╛ рддреЛ:

 $ sudo sysctl kernel.perf_event_max_sample_rate=1000000 

рдЕрдм рд╣рдо рдХрд░реНрдиреЗрд▓ рдХреЛ рдмрддрд╛ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЖрд╡реГрддреНрддрд┐ рдХреА рдКрдкрд░реА рд╕реАрдорд╛ рдЕрдм рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 1 рдорд┐рд▓рд┐рдпрди рдирдореВрдиреЗ рд╣реИред рд╣рдо рдлрд┐рд░ рд╕реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 200 рд╣рдЬрд╛рд░ рдирдореВрдиреЛрдВ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ 15 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рд╣рдореЗрдВ 1 рдорд┐рд▓рд┐рдпрди рдирдореВрдиреЗ рджреЗрдЧрд╛ред рд╕рдм рдХреБрдЫ рдареАрдХ рд▓рдЧрдиреЗ рд▓рдЧрд╛ рд╣реИред рдХрдо рд╕реЗ рдХрдо рдХреЛрдИ рджреБрд░реНрдЬреЗрдп рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЖрд╡реГрддреНрддрд┐ рдорд┐рд▓реА? рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХреЗрд╡рд▓ 70 рд╣рдЬрд╛рд░ рдирдореВрдиреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖ?

рдЖрдЗрдП рджреЗрдЦрддреЗ рд╣реИрдВ dmesg рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ:

 [84430.412898] perf: interrupt took too long (1783 > 200), lowering kernel.perf_event_max_sample_rate to 89700 ... [84431.618452] perf: interrupt took too long (2229 > 2228), lowering kernel.perf_event_max_sample_rate to 71700 

рдпрд╣ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИред рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдо рдмрд╣реБрдд рдмрд╛рд░ рдирдореВрдирд╛ рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд░реНрдиреЗрд▓ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрдХ рдФрд░ рд╣реИрдВрдбрд▓ рдХреЛ kernel.perf_cpu_time_max_percent рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЗрд╕реЗ рдХрд░реНрдиреЗрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред kernel.perf_cpu_time_max_percent рдФрд░ рдХрд░реНрдиреЗрд▓ kernel.perf_cpu_time_max_percent рд╕реЗ рдЗрдВрдЯрд░рдкреНрдЯ рдкрд░ рдЦрд░реНрдЪ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рдордп рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╣рдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 200 рд╣рдЬрд╛рд░ рдирдореВрдиреЛрдВ рдХреА рдПрдХ рдирдореВрдирд╛ рдЖрд╡реГрддреНрддрд┐ рдХрд╛ рдЖрджреЗрд╢ рджреЗрдВрдЧреЗред рдФрд░ 15 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ 3 рдорд┐рд▓рд┐рдпрди рдирдореВрдиреЗ рдорд┐рд▓рддреЗ рд╣реИрдВ - рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 200 рд╣рдЬрд╛рд░ рдирдореВрдиреЗред

 $ PERF_RECORD_FREQ=200000 ./bin/perf-java-record-stack PID Recording events for 15 seconds ... ... [ perf record: Captured ... (2.961.252 samples) ] 

рдЕрдм рдкреНрд░реЛрдлрд╛рдЗрд▓ рджреЗрдЦрддреЗ рд╣реИрдВред рдкреВрд░реНрдг perf script рдЪрд▓рд╛рдПрдБ:

 $ perf script ... java ... native_write_msr (/.../vmlinux) java ... Loop2.main (/tmp/perf-29621.map) java ... native_write_msr (/.../vmlinux) ... 

рд╣рдо рдЕрдЬреАрдм рдХрд╛рд░реНрдпреЛрдВ рдФрд░ vmlinux рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ - рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░рд╛ рдХреЛрдб рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рд╣реБрдЖ рдерд╛? рдЖрд╡реГрддреНрддрд┐ рдЗрддрдиреА рдЕрдзрд┐рдХ рд╣реЛ рдЧрдИ рдХрд┐ рдХрд░реНрдиреЗрд▓ рдХреЛрдб рдирдореВрдиреЛрдВ рдореЗрдВ рдЧрд┐рд░рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ред рдпрд╣реА рд╣реИ, рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд╣рдо рдЖрд╡реГрддреНрддрд┐ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рдЙрддрдиреЗ рд╣реА рдирдореВрдиреЗ рд╣реЛрдВрдЧреЗ рдЬреЛ рд╣рдорд╛рд░реЗ рдХреЛрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред

рдореГрдд рдЕрдВрддред

рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкреАрдПрдордпреВ / рдкреАрдИрдмреАрдПрд╕ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ


рддрдм рдореИрдВрдиреЗ PMU / PEBS рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рддрдХрдиреАрдХ - рдкреНрд░рджрд░реНрд╢рди рдирд┐рдЧрд░рд╛рдиреА рдЗрдХрд╛рдИ, рд╕рдЯреАрдХ рдШрдЯрдирд╛ рдЖрдзрд╛рд░рд┐рдд рдирдореВрдирд╛рдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдпрд╣ рдЖрдкрдХреЛ рд╕реВрдЪрдирд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдШрдЯрдирд╛ рдХрдИ рдмрд╛рд░ рджреА рдЧрдИ рд╣реИред рдЗрд╕реЗ "рдЕрд╡рдзрд┐" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╣рд░ 20 рд╡реЗрдВ рдЕрдиреБрджреЗрд╢ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рдЕрдм xor рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ PMU рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдорд╛рди 18 рдкреНрд░рд╛рдкреНрдд рд╣реЛ; рдлрд┐рд░ рдирд┐рд░реНрджреЗрд╢ рдЖрддрд╛ рд╣реИ - рдХрд╛рдЙрдВрдЯрд░ 19 рд╣реИ; рдФрд░ рдЕрдЧрд▓рд╛ рдирд┐рд░реНрджреЗрд╢, % r14,% r13 рдЬреЛрдбрд╝реЗрдВ , PMU "рд╣реЙрдЯ" рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

рдлрд┐рд░ рдПрдХ рдирдпрд╛ рдЪрдХреНрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ: inc рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - PMU 1 рдкрд░ рд░реАрд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдЪрдХреНрд░ рдХреЗ рдХреБрдЫ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рд╣рдо mov рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдкрд░ рд░реБрдХ рдЬрд╛рддреЗ рд╣реИрдВ, рдкреАрдПрдордпреВ 19 рдХреЛ рд╕реНрдиреИрдк рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛ рдРрдб рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ, рдФрд░ рдлрд┐рд░ рд╣рдо рдЗрд╕реЗ рд╣реЙрдЯ рдорд╛рд░реНрдХ рдХрд░рддреЗ рд╣реИрдВред рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рджреЗрдЦреЗрдВ:

 mov aaa, bbbb xor %rdx, %rdx L_START: mov $0x0(%rbx, %rdx),%r14 add %r14, %r13 ; (PMU       "") cmp %rdx,100000000 jne L_START 

рд╡рд┐рд╖рдорддрд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рд╣реИ? рдкрд╛рдВрдЪ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рдЪрдХреНрд░, рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░ рд╣рдо рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЧрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИ: рд╕рднреА рдирд┐рд░реНрджреЗрд╢ "рдЧрд░реНрдо" рд╣реИрдВред рд╡реЗ рднреА рд╕рдордп рдмрд┐рддрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЕрд╡рдзрд┐ рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдмреАрдЪ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдХ 4 рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рд░ рдЪреМрдереЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣рдо рдЙрд╕реА рдирд┐рд░реНрджреЗрд╢ рдХреЛ "рдЧрд░реНрдо" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕ рдЕрд╡рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд▓реВрдк рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рднрд╛рдЬрдХ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╕реЗ рдХрдо рд╣реЛред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдЕрд╡рдзрд┐ рдПрдХ рдкреНрд░рдзрд╛рди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рддреНред рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЖрдк рдкрд░ рдФрд░ рдпреВрдирд┐рдЯ рдкрд░ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдЖрдкрдХреЛ 23 рдХреЗ рдмрд░рд╛рдмрд░ рдХреА рдЕрд╡рдзрд┐ рдЪреБрдирдиреА рдЪрд╛рд╣рд┐рдПред рдлрд┐рд░ рд╣рдо рдЗрд╕ рдЪрдХреНрд░ рдХреЗ рд╕рднреА рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ "рд╣реЙрдЯ" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВрдЧреЗред

PMU / PEBS рддрдХрдиреАрдХ рдХреЛ рдХрдо рд╕реЗ рдХрдо 2009 рдХреЗ рдмрд╛рдж рд╕реЗ рдЗрд╕рдХреЗ рдЖрдзреБрдирд┐рдХ рд░реВрдк рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо perf-java-record-stack script рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВред -F рдзреНрд╡рдЬ рдХреЛ -e рдмрджрд▓реЗрдВ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ PMU / PEBS рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред

 ... sudo perf record -F $PERF_RECORD_FREQ ... ... 

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрджрд▓рдирд╛:

 ... sudo perf record -e cycles тАУc 10007 ... ... 

рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЕрд╡рдзрд┐ рдореЗрдВ рдХреНрдпрд╛ рдЧреБрдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП - рд╣рдореЗрдВ рдПрдХ рдкреНрд░рдореБрдЦ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ 10007 рдХреА рдЕрд╡рдзрд┐ рд╣реЛрдЧреАред

рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдВрд╢реЛрдзрд┐рдд perf-java-record-stack-script рд▓реЙрдиреНрдЪ рдХреА рдФрд░ 15 рд╕реЗрдХрдВрдб рдореЗрдВ 4.5 рдорд┐рд▓рд┐рдпрди рдирдореВрдиреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП - рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд▓рдЧрднрдЧ 300 рд╣рдЬрд╛рд░ рдирдореВрдиреЗ, рдкреНрд░рддреНрдпреЗрдХ 3 рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдХрд╛ рдПрдХ рдирдореВрдирд╛ред рдпрд╣реА рд╣реИ, рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛрдб рдХреЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП, 100 ╬╝s рдХреЗ рд▓рд┐рдП рд╣рдо 33 рдирдореВрдиреЗ рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдЖрд╡реГрддреНрддрд┐ рдкрд░, рдХреБрд▓ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рд╕рдордп рдХреЗрд╡рд▓ 30 рд╕реЗрдХрдВрдб рд╣реИред рдПрдХ рдХрдк рдХреЙрдлреА рднреА рди рдкрд┐рдПрдВ! рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИред рдЕрдЧрд░ рд╣рдорд╛рд░рд╛ рдХреЛрдб рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдПрдХ рдмрд╛рд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╣рд░ 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдП рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдлрд┐рд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдХреА рдЕрд╡рдзрд┐ 2.5 рдорд┐рдирдЯ рддрдХ рдмрдврд╝реЗрдЧреА, рдЬреЛ рдХрд╛рдлреА рд╕рднреНрдп рдкрд░рд┐рдгрд╛рдо рднреА рд╣реИред

рдЗрд╕рд▓рд┐рдП, 30 рд╕реЗрдХрдВрдб рдореЗрдВ рдЖрдк рдПрдХ рдРрд╕реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рднреА рдЕрдиреБрд╕рдВрдзрд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд░рддреА рд╣реИред рдЬреАрддрдирд╛?

рд▓реЗрдХрд┐рди рдХреБрдЫ рдЧрдВрджреА рдЪрд╛рд▓ рдХреА рднрд╛рд╡рдирд╛ рдиреЗ рдореБрдЭреЗ рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ред рдЖрдЗрдП рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░рд╛ рдХреЛрдб рд╣рд░ 5 рд╕реЗрдХрдВрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдлрд┐рд░ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдореЗрдВ 150 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдЗрд╕ рджреМрд░рд╛рди рд╣рдо рд▓рдЧрднрдЧ 45 рдорд┐рд▓рд┐рдпрди рдирдореВрдиреЗ рдПрдХрддреНрд░ рдХрд░реЗрдВрдЧреЗред рдЗрдирдореЗрдВ рд╕реЗ рд╣рдореЗрдВ рдХреЗрд╡рд▓ 1000 рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдпрд╛рдиреА 0.002% рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдХрдЪрд░рд╛ рд╣реИ, рдЬреЛ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдУрд╡рд░рд╣реЗрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╣рд╛рдВ, рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рдереЗ, рдЧрдВрджреЗ, рдХреБрдВрдж рдмрд▓ рдореЗрдВ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИред

рдФрд░ рдЙрд╕ рд╢рд╛рдо, рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдкреВрд░реНрдг рдХреА рдорджрдж рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХреА, рддреЛ рдореЗрд░рд╛ рдПрдХ рд╕рдкрдирд╛ рдерд╛ред рдореИрдВ рдХрд╛рдо рдФрд░ рд╕реЛрдЪ рд╕реЗ рдШрд░ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд▓реЛрд╣рд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЛ рдЦреБрдж рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реНрдЯреНрд░рдХреНрдЪрд░ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдХреА рд╕рдЯреАрдХрддрд╛ рдХреЗ рд▓рд┐рдП, рдФрд░ рд╣рдо рдХреЗрд╡рд▓ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдХреНрдпрд╛ рдореЗрд░рд╛ рд╕рдкрдирд╛ рд╕рдЪ рд╣реЛрдЧрд╛? рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ?

рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢:


  • Perf рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Java рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ perf-map-agent рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
  • рди рдХреЗрд╡рд▓ рдХреЛрдб рдХреЗ рдЧрд░реНрдо рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рдвреЗрд░ рднреА, рдЖрдкрдХреЛ -XX рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: + PreserveFramePointer рдЭрдВрдбрд╛
  • рдпрджрд┐ рдЖрдк рд╕реИрдВрдкрд▓рд┐рдВрдЧ рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА рдХреЛ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ sysctl'i рдФрд░ kernel.perf_cpu_time_max_percent рдФрд░ kernel.perf_event_max_sample_rate рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдпрджрд┐ рдХрд░реНрдиреЗрд▓ рдХреЗ рдирдореВрдиреЗ рдЬреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкреАрдПрдордпреВ / рдкреАрдИрдмреАрдПрд╕ рдЕрд╡рдзрд┐ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рд▓реЗрдЦ (рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдХреЗ рд╣рд┐рд╕реНрд╕реЗ) рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрдХреВрд▓рд┐рдд рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдПрдХ рдкреНрд░рддрд┐рд▓реЗрдЦ рд╣реИред рдпрджрд┐ рдЖрдк рди рдХреЗрд╡рд▓ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ, рдкреНрд░рд╕реНрддреБрддрд┐ рдХрд╛ рдПрдХ рд╕рдВрджрд░реНрдн рднреА рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВред

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


All Articles