рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рд╕рдордп рд╕реНрд░реЛрддрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡рдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

рдмреНрд░реЗрдиреНрдбрди рдЧреНрд░реЗрдЧ, DTrace рдХрд╛ рдПрдХ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛, рдЬрд╕рд▓реЗ рд╣рд╛рд▓ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓рдорд╛ BPF-рдЖрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЙрдкрдХрд░рдгрд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрджреИрдЫ, Cassandra DBMS CentOS рдмрд╛рдЯ Ubuntu рдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрджрд╛ Netflix рд▓реЗ рд╕рд╛рдордирд╛ рдЧрд░реЗрдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдмрд╛рдЯ рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрднрд╡рдХреЛ рд╕рд╛рд░рд╛рдВрд╢ рджрд┐рдПред Xen рдорд╛ рдЖрдзрд╛рд░рд┐рдд Amazon EC2 рдХреНрд▓рд╛рдЙрдбред рдорд╛рдЗрдЧреНрд░реЗрд╕рди рдкрдЫрд┐, CPU рд▓реЛрдб 30% рд▓реЗ рдмрдвреНрдпреЛ рд░ рд▓реЗрдЦрди рдХрд╛рд░реНрдпрдХреЛ рдХреНрд░рдордорд╛ рдврд┐рд▓рд╛рдЗ рд▓рдЧрднрдЧ рдЙрд╣реА рд░рдХрдорд▓реЗ рдмрдвреНрдпреЛред рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдЬреБрди рдЧрд╣рди рд░реВрдкрдорд╛ рд╕рдордп рдЬрд╛рдирдХрд╛рд░реА рдЕрдиреБрд░реЛрдз рдЧрд░реНрджрдЫ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рд╕рд╣реА рд╕рдордп рд╕реНрд░реЛрддрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред

рд╕реБрд░реБрдорд╛, рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирдорд╛ рдХрдореА рдЖрдЙрдиреБрдХреЛ рдХрд╛рд░рдг рд╕реНрдкрд╖реНрдЯ рдерд┐рдПрди рд░ рдирд┐рджрд╛рди рдирд┐рд░рдиреНрддрд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╡рд╛ рдЖрд╡рдзрд┐рдХ рд░реВрдкрдорд╛ рд╕реБрд░реБ рдЧрд░рд┐рдПрдХреЛ рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╢реАрд░реНрд╖ рд░ execsnoop рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдореНрднрд╛рд╡рд┐рдд рдкреНрд░рднрд╛рд╡рд╣рд░реВрдХреЛ рдирд┐рдЧрд░рд╛рдиреАрдХреЛ рд╕рд╛рде рд╕реБрд░реБ рднрдпреЛред рддрд░ рд╕рдмреИ рдХреБрд░рд╛рд▓реЗ рд╕рдВрдХреЗрдд рдЧрд░реНтАНрдпреЛ рдХрд┐ рд╕рдВрд╕рд╛рдзрди рдЦрдкрдд рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рдЬрд╛рднрд╛рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдбреАрдмреАрдПрдордПрд╕рдорд╛ рдмрдвреЗрдХреЛ рдЫред CentOS рд░ Ubuntu рдорд╛ рд╕рдорд╛рдирд╛рдиреНрддрд░ рд░реВрдкрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рджреБрдИ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдХреЛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдЩ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рддреБрд▓рдирд╛ рдЧрд░реНрджреИ, рдЙрд╣реА рдкреНрд░рд╢реНрдирд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджреИ, рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫ рдХрд┐ рдХреБрд▓ рд╕рдордпрдХреЛ рд▓рдЧрднрдЧ 32% os::javaTimeMillis(), рдЬреБрди рд╡рд░реНрддрдорд╛рди рд╕рдордпрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред ред

рдпрд╕ рдкрдЫрд┐, рдПрдЙрдЯрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рдЬрд╕рдорд╛ рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдЬрд╛рднрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд▓реЗрдЦрд┐рдПрдХреЛ рдерд┐рдпреЛ рдЬрд╕рд▓рд╛рдИ System.currentTimeMillis() рд╡рд┐рдзрд┐ рднрдирд┐рдиреНрдЫ рдПрдХ рд▓реВрдкрдорд╛ рдПрдХ рдХрд░реЛрдб рдкрдЯрдХред рдПрдкреНрд▓рд┐рдХреЗрд╕рди рдЪрд▓рд╛рдЙрдБрджрд╛ CentOS рдорд╛ рдкреВрд░рд╛ рдЧрд░реНрди 13 рд╕реЗрдХреЗрдиреНрдб рд░ Ubuntu рдорд╛ рд▓рдЧрднрдЧ 68 рд╕реЗрдХреЗрдиреНрдб рд▓рд╛рдЧреНрдпреЛ, рдЕрд░реНрдерд╛рддреНред 5 рдкрдЯрдХ рдврд┐рд▓реЛред рдПрдЙрдЯрд╛ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд░рдо C рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдерд┐рдпреЛ рдЬреБрди gettimeofday() рдкреНрд░рдХрд╛рд░реНрдпрд▓рд╛рдИ рд╕рдп рдорд┐рд▓рд┐рдпрди рдкрдЯрдХ рднрдирд┐рдиреНрдЫ, рддрд░ рдЬрдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдпреЛ, рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рдпреЛред

рдпреЛ рд╕рдорд╕реНрдпрд╛рдХреЛ рд╕реНрд░реЛрдд рд╡рд░реНрддрдорд╛рди рд╕рдордп рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдХрд╛рд░реНрдп рдерд┐рдпреЛ рднрдиреЗрд░ рд╕реНрдкрд╖реНрдЯ рднрдПрдХреЛрд▓реЗ, рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╕рд╣реА рд╕рдордпрдХреЛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддрд╣рд░реВ рдЫрдиреМрдЯ рдЧрд░реНрджрд╛ рдзреНрдпрд╛рди рд╕рдВрдХреЗрддрдХрд╣рд░реВрдорд╛ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВрдорд╛ рдлрд░реНрдХрд┐рдпреЛред "/sys/devices/system/clocksource/clocksource0/current_clocksource" рдХреЛ рд╕рд╛рдорд╛рдЧреНрд░реАрд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдиреНрдпрд╛рдп рдЧрд░реНрджреИ, "xen" рдЯрд╛рдЗрдорд░ рдЕрддрд┐рдерд┐ рдкреНрд░рдгрд╛рд▓реАрдорд╛ Linux рдЪрд▓рд╛рдЙрдБрджрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рд╕рдордп рд╕реНрд░реЛрддрд▓рд╛рдИ "tsc" рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реЗрдкрдЫрд┐, Ubuntu рдорд╛ рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп 68 рдмрд╛рдЯ 3.3 рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдШрдЯреНрдпреЛ, рдЕрд░реНрдерд╛рддреНред рдпреЛ 20 рдЧреБрдгрд╛ рдЫрд┐рдЯреЛ рднрдпреЛред рдердк рд░реВрдкрдорд╛, kvm-рдШрдбреА рд╕рдордп рд╕реНрд░реЛрддрдХреЛ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬрд╕рд▓реЗ TSC рдХреЛ рддреБрд▓рдирд╛рдорд╛ 20% рд▓реЗ рдврд┐рд▓рд╛рдЗрдорд╛ рд╡реГрджреНрдзрд┐ рджреЗрдЦрд╛рдПрдХреЛ рдерд┐рдпреЛред $ cat /sys/devices/system/clocksource/clocksource0/available_clocksource xen tsc hpet acpi_pm $ cat /sys/devices/system/clocksource/clocksource0/current_clocksource xen $ рд╕рдордп java TimeBench рд╡рд╛рд╕реНрддрд╡рд┐рдХ 1m8.300s рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ 0m38.337. echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ time java TimeBench рд╡рд╛рд╕реНрддрд╡рд┐рдХ 29.875m0s рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ 0m3.370s sys 0m3.353s

TSC рд╕реНрд░реЛрдд рдЪрдпрди рдЧрд░реНрджрд╛ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, RDTSC рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢рди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рдЬрд╕рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди (рдирд┐рд░реНрджреЗрд╢рдирд▓рд╛рдИ рдЙрдЪреНрдЪ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░рд╣рд░реВ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрджреИрди рд░ CPU рдорд╛ рдирд┐рд░реНрдорд┐рдд рдЯрд╛рдЗрдо рдХрд╛рдЙрдиреНрдЯрд░рдмрд╛рдЯ рдорд╛рди рдЙрддреНрдкрд╛рджрди рдЧрд░реНрджрдЫ)ред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, TSC рд╕рдХреНрд░рд┐рдп рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рдХрд┐рдирднрдиреЗ рдкреБрд░рд╛рдиреЛ рджрд┐рдирд╣рд░реВрдорд╛ рдпреЛ рд╕реНрд░реЛрддрд▓реЗ рдХреНрд░рдорд┐рдХ рд╕рдордп рдмрд╣рд╛рд╡рд▓рд╛рдИ рдмрд╣рд┐рд╖реНрдХрд╛рд░ рдЧрд░реНрджреИрди, рдЬреБрди рдЕрдиреНрдп рдкреНрд░реЛрд╕реЗрд╕рд░рд╣рд░реВрдорд╛ рдердк рд╕рдЯреАрдХ рдкрдардирд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдлреНрдЯрд╡реЗрдпрд░рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдпреЛрдЬрди рдЧрд░рд┐рдиреНрдЫред рдкреНрд░реЛрд╕реЗрд╕рд░ рд╡рд┐рдХрд╛рд╕рдорд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдЗрдиреНрдЬрд┐рдирд┐рдпрд░рдХрд╛ рдЕрдиреБрд╕рд╛рд░, TSC рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рд╕рдордп рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рдбрд░ рд▓рд╛рдореЛ рд╕рдордпрд╕рдореНрдо рдЕрд╕рддреНрдп рд░рд╣реЗрдХреЛ рдЫ рд░ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░рд╣рд░реВрдорд╛ рдпреЛ рд╕реНрд░реЛрддрд▓реЗ рд╡рд░реНрд╖реМрдВрд╕рдореНрдо рд╕реНрдерд┐рд░ рдкрдарди рдЙрддреНрдкрд╛рджрди рдЧрд░реНрди рд╕рдХреНрдЫред

рдиреЗрдЯрдлреНрд▓рд┐рдХреНрд╕рдорд╛ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрднрд░рд╣рд░реВ TSC рд╕реНрд░реЛрддрдорд╛ рд╕реНрд╡рд┐рдЪ рдЧрд░реНрджрд╛ рд▓рд┐рдЦрд┐рдд рд╡рд┐рд▓рдореНрдмрддрд╛рдорд╛ 43% рдХрдореА рдЖрдпреЛ рд░ Ubuntu рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рднрдпреЛ рдЬреБрди "xen" рд╕рдордп рд╕реНрд░реЛрддрдХреЛ рд╕рд╛рде CentOS рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ рднрдиреНрджрд╛ 4 рдЧреБрдгрд╛ рдЫрд┐рдЯреЛ рдерд┐рдпреЛред рдЕрдзреНрдпрдпрдирдХреЛ рдирддрд┐рдЬрд╛рд╣рд░реВ Amazon рдорд╛ рд╣рд╕реНрддрд╛рдиреНрддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬрд╕рд▓реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдкрдорд╛ Xen рд╣рд╛рдЗрдкрд░рднрд╛рдЗрдЬрд░рдорд╛ рдЖрдзрд╛рд░рд┐рдд AWS EC2 рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд TSC рд╕рдордп рд╕реНрд░реЛрдд рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реЗрдХреЛ рдерд┐рдпреЛ (kvm-рдШрдбреА рдирд╛рдЗрдЯреНрд░реЛ рд╣рд╛рдЗрдкрд░рд╡рд╛рдЗрдЬрд░рдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░рд┐рдПрдХреЛ рдЫ)ред

рд╕реНрд░реЛрдд: opennet.ru

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