рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдирд┐рд╡рдбрд▓реЗрд▓реНрдпрд╛ рд╡реЗрд│реЗрдЪреНрдпрд╛ рд╕реНрддреНрд░реЛрддрд╛рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡рд╛рдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг

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

рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛, рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдд рдШрдЯ рд╣реЛрдгреНрдпрд╛рдЪреЗ рдХрд╛рд░рдг рд╕реНрдкрд╖реНрдЯ рдирд╡реНрд╣рддреЗ рдЖрдгрд┐ рдирд┐рджрд╛рди рд╕реБрд░реВ рдЭрд╛рд▓реЗ рдХреА рд╕рддрдд рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХрд┐рдВрд╡рд╛ рд╡реЗрд│реЛрд╡реЗрд│реА рд╕реБрд░реВ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕рдВрд╕рд╛рдзрди-рдХреЗрдВрджреНрд░рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреНрдпрд╛ рд╕рдВрднрд╛рд╡реНрдп рдкреНрд░рднрд╛рд╡рд╛рдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░реВрди рдЯреЙрдк рдЖрдгрд┐ рдПрдХреНрдЭреЗрд╕реНрдиреВрдк рдпреБрдЯрд┐рд▓рд┐рдЯреАрдЬ рд╡рд╛рдкрд░реВрди рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА. рдкрд░рдВрддреБ рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рдХреА рдЬрд╛рд╡рд╛рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реНрдпрд╛ рдХреЕрд╕реЕрдВрдбреНрд░рд╛ рдбреАрдмреАрдПрдордПрд╕рдордзреНрдпреЗ рд╕рдВрд╕рд╛рдзрдирд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рд╡рд┐рд╢реЗрд╖рддрдГ рд╡рд╛рдврд▓рд╛ рдЖрд╣реЗ. CentOS рдЖрдгрд┐ Ubuntu рд╡рд░ рд╕рдорд╛рдВрддрд░ рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рджреЛрди Cassandra рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдЪреНрдпрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓рд┐рдВрдЧ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдЪреА рддреБрд▓рдирд╛ рдХрд░реВрди, рд╕рдорд╛рди рдХреНрд╡реЗрд░реАрдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реВрди, рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдПрдХреВрдг рд╡реЗрд│реЗрдкреИрдХреА рд╕реБрдорд╛рд░реЗ 32% рд╡реЗрд│ os::javaTimeMillis(), рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рд╕рдзреНрдпрд╛рдЪреНрдпрд╛ рд╡реЗрд│реЗрдмрджреНрджрд▓ рдорд╛рд╣рд┐рддреА рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ. .

рдпрд╛рдирдВрддрд░, рдПрдХ рдкреНрд░рдпреЛрдЧ рдЖрдпреЛрдЬрд┐рдд рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЬреНрдпрд╛рдордзреНрдпреЗ рдПрдХ рд╕рд╛рдзрд╛ Java рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рд╣рд┐рд▓рд╛ рдЧреЗрд▓рд╛ рдЬреНрдпрд╛рд▓рд╛ System.currentTimeMillis() рдкрджреНрдзрддреА рдореНрд╣рдгрддрд╛рдд рд▓реВрдкрдордзреНрдпреЗ рд╢рдВрднрд░ рджрд╢рд▓рдХреНрд╖ рд╡реЗрд│рд╛. рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд╛рд▓рд╡рддрд╛рдирд╛ рджрд┐рд╕рд▓реЗ рдХреА CentOS рд╡рд░ рдкреВрд░реНрдг рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА 13 рд╕реЗрдХрдВрдж рдЖрдгрд┐ рдЙрдмрдВрдЯреВрд╡рд░ рд╕реБрдорд╛рд░реЗ 68 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрд▓реЗ, рдореНрд╣рдгрдЬреЗ. 5 рдкрдЯ рд╣рд│реВ. рдПрдХ рд╕рдорд╛рди рдкреНрд░реЛрдЧреНрд░рд╛рдо C рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рд╣реЛрддрд╛ рдЬреНрдпрд╛рд▓рд╛ gettimeofday() рдлрдВрдХреНрд╢рди рд╢рдВрднрд░ рджрд╢рд▓рдХреНрд╖ рд╡реЗрд│рд╛ рд╕рдВрдмреЛрдзрд▓реЗ рдЬрд╛рддреЗ, рдкрд░рдВрддреБ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реНрдпрд╛рд╡рд░, рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ.

рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реЗ рдХреА рд╕рдорд╕реНрдпреЗрдЪреЗ рд╕реНрддреНрд░реЛрдд рд╡рд░реНрддрдорд╛рди рд╡реЗрд│ рдкрд░рдд рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рд░реНрдп рд╣реЛрддреЗ, рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдЕрдЪреВрдХ рд╡реЗрд│реЗрдЪреЗ рднрд┐рдиреНрди рд╕реНрддреНрд░реЛрдд рдирд┐рд╡рдбрддрд╛рдирд╛ рдирд┐рд░реНрджреЗрд╢рдХрд╛рдВрдордзреАрд▓ рдмрджрд▓рд╛рдВрдХрдбреЗ рд▓рдХреНрд╖ рд╡реЗрдзрд▓реЗ рдЧреЗрд▓реЗ. тАЬ/sys/devices/system/clocksource/clocksource0/current_clocksourceтАЭ рдЪреНрдпрд╛ рд╕рд╛рдордЧреНрд░реАрдиреБрд╕рд╛рд░, рдЕрддрд┐рдереА рдкреНрд░рдгрд╛рд▓реАрдордзреНрдпреЗ Linux рдЪрд╛рд▓рд╡рддрд╛рдирд╛ тАЬxenтАЭ рдЯрд╛рдпрдорд░ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. рд╡реЗрд│ рд╕реНрддреНрд░реЛрдд "tsc" рдордзреНрдпреЗ рдмрджрд▓рд▓реНрдпрд╛рдирдВрддрд░, рдЙрдмрдВрдЯреВрдордзреАрд▓ рдЪрд╛рдЪрдгреА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╡реЗрд│ 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 $ time java TimeBench real 1m8.300s рд╡рд╛рдкрд░рдХрд░реНрддрд╛ 0m38.337. echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ time java TimeBench рд╡рд╛рд╕реНрддрд╡рд┐рдХ 29.875m0s рд╡рд╛рдкрд░рдХрд░реНрддрд╛ 0m3.370s sys 0m3.353s

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

рдиреЗрдЯрдлреНрд▓рд┐рдХреНрд╕рдордзреАрд▓ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ TSC рд╕реНрддреНрд░реЛрддрд╛рд╡рд░ рд╕реНрд╡рд┐рдЪ рдХреЗрд▓реНрдпрд╛рдиреЗ рд▓реЗрдЦрди рд╡рд┐рд▓рдВрдмрд╛рдордзреНрдпреЗ 43% рдШрдЯ рдЭрд╛рд▓реА рдЖрдгрд┐ рдЙрдмрдВрдЯреВ рд╡рд╛рдкрд░реВрди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ рдЬреЗ рд╕реЗрдВрдЯреЛрд╕ рдЪрд╛рд▓рд╡рдгрд╛рд▒реНрдпрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдкреЗрдХреНрд╖рд╛ 4 рдкрдЯ рдЕрдзрд┐рдХ рд╡реЗрдЧрд╡рд╛рди рд╣реЛрддреЗ. рдЕрднреНрдпрд╛рд╕рд╛рдЪреЗ рдкрд░рд┐рдгрд╛рдо Amazon рд╡рд░ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ, рдЬреНрдпрд╛рдиреЗ рдЕрдзрд┐рдХреГрддрдкрдгреЗ Xen рд╣рд╛рдпрдкрд░рд╡рд╛рдЗрдЬрд░рд╡рд░ рдЖрдзрд╛рд░рд┐рдд AWS EC2 рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдбреАрдлреЙрд▓реНрдЯ TSC рд╡реЗрд│ рд╕реНрд░реЛрдд рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реА (рдХреЗрд╡реНрд╣реАрдПрдо-рдШрдбреНрдпрд╛рд│рд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдирд╛рдпрдЯреНрд░реЛ рд╣рд╛рдпрдкрд░рд╡рд╛рдЗрдЬрд░рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдгрд╛рдд рдХреЗрд▓реА рдЬрд╛рддреЗ).

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛