Tlhahlobo ea phello ea ts'ebetso ea mohloli oa nako o khethiloeng tsamaisong

Brendan Gregg, e mong oa bahlahisi ba DTrace, eo hajoale a ntseng a nts'etsapele lisebelisoa tsa tlhahlobo ea ts'ebetso e thehiloeng ho BPF ho Linux kernel, o akaretsa boiphihlelo bo fumanoeng ka ho sekaseka mathata a ts'ebetso ao Netflix a kopaneng le ona ha a falla Cassandra DBMS ho tloha CentOS ho ea Ubuntu. leru la Amazon EC2 le thehiloeng ho Xen. Kamora ho falla, mojaro oa CPU o ile oa eketseha ka 30% mme tieho nakong ea ts'ebetso ea ho ngola e ile ea eketseha ka chelete e lekanang. Joalo ka ha ho bonahala, ts'ebetso ea lits'ebetso tse kopang tlhaiso-leseling ea nako haholo e ipapisitse le mohloli o nepahetseng oa nako o khethiloeng tsamaisong.

Qalong, lebaka la ho fokotseha ha ts'ebetso le ne le sa totobala, 'me tlhahlobo e qalile ka ho lekola tšusumetso e ka bang teng ea ho sebetsa khafetsa kapa nako le nako ho qala lits'ebetso tsa sistimi e sebelisang lisebelisoa tse holimo le tsa execsnoop. Empa ntho e 'ngoe le e' ngoe e bontšitse hore tšebeliso ea lisebelisoa e eketsehile ka ho khetheha ho Cassandra DBMS, e ngotsoeng Java. Ha ho bapisoa metrics ea profil ea lits'ebetso tse peli tsa Cassandra tse tsamaisanang ho CentOS le Ubuntu, ho sebetsana le lipotso tse tšoanang, ho bonts'itse hore hoo e ka bang 32% ea nako eohle e sebelisitsoeng ho letsetsa os::javaTimeMillis(), e sebelisetsoang ho fumana leseli mabapi le nako ea hajoale. .

Ka mor'a sena, ho ile ha etsoa teko eo ho eona ho ileng ha ngoloa kopo e bonolo ea Java e bitsoang System.currentTimeMillis() mokhoa oa makhetlo a limilione tse lekholo ka loop. Ho tsamaisa kopo ho bontšitse hore ho nkile metsotsoana ea 13 ho phethela ho CentOS, le metsotsoana e ka bang 68 ho Ubuntu, ke hore. 5 makhetlo a butle. Lenaneo le tšoanang le ile la ngoloa ka C le neng le bitsa gettimeofday() tshebetso ka makhetlo a limilione tse lekholo, empa ha le etsoa, ​​​​liphetho tse tšoanang li ile tsa fumanoa.

Kaha ho ile ha hlaka hore mohloli oa bothata e ne e le mosebetsi oa ho khutlisa nako ea hona joale, tlhokomelo e ile ea fetoha liphetoho ho matšoao ha ho khethoa mehloli e fapaneng ea nako e nepahetseng tsamaisong. Ho latela likahare tsa "/sys/devices/system/clocksource/clocksource0/current_clocksource", "xen" sebala nako se ne se sebelisoa ka ho sa feleng ha ho tsamaisa Linux tsamaisong ea baeti. Ka mor'a ho fetola mohloli oa nako ho "tsc", nako ea ts'ebetso ea kopo ea teko ho Ubuntu e fokotsehile ho tloha 68 ho ea ho metsotsoana ea 3.3, i.e. e ile ea e-ba lebelo ka makhetlo a 20. Ho feta moo, tlhahlobo ea ts'ebetso ea mohloli oa nako ea kvm-clock e ile ea etsoa, ​​​​e bonts'ang keketseho ea tieho ka 20% ha e bapisoa le TSC. $ katse /sys/devices/system/clocksource/clocksource0/available_clocksource xen tsc hpet acpi_pm $ katse /sys/devices/system/clocksource/clocksource0/current_clocksource xen $ time java TimeBench sebele 1m8.300s mosebedisi 0m38.337s 0s 29.875 $s 0. echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ nako java TimeBench real 3.370m0s user 3.353m0s sys 0.026mXNUMXs

Ho fumana nako ea ho khetha mohloli oa TSC, ho sebelisoa taelo ea processor ea RDTSC, eo ts'ebetso ea eona e sa hlokeng mohala oa sistimi (taelo ha e hloke litokelo tse phahameng mme e hlahisa boleng ho tsoa k'haontareng ea nako e hahiloeng ho CPU). Ka nako e sa lekanyetsoang, TSC ha e sebetse hobane mehleng ea khale mohloli ona o ne o sa kenyelle nako ea butle-butle, eo ho li-processor tse ling e lokisoang ke software ho finyella 'malo o nepahetseng haholoanyane. Ho ea ka moenjiniere ea sebetsanang le nts'etsopele ea processor, tšabo ea ho fetoha ha nako ha o sebelisa TSC esale e se 'nete mme ho li-processor tsa morao-rao mohloli ona o ka hlahisa lipalo tse tsitsitseng ka lilemo.

Ho fetola li-server tsa tlhahiso ho Netflix ho mohloli oa TSC ho felletse ka phokotso ea 43% ea latency ea ho ngola le sephetho se fihletsoeng ho sebelisa Ubuntu e neng e le makhetlo a 4 ka potlako ho feta litlhophiso tse tsamaisang CentOS ka mohloli oa nako ea "xen". Liphetho tsa thuto li ile tsa fetisetsoa ho Amazon, e khothalelitsoeng ka molao ho sebelisa mohloli oa nako oa TSC oa kamehla libakeng tsa AWS EC2 tse ipapisitseng le Xen hypervisor (kvm-clock e ntse e khothaletsoa libakeng tse thehiloeng ho Nitro hypervisor).

Source: opennet.ru

Eketsa ka tlhaloso