Nyocha nke mmetụta arụmọrụ nke isi mmalite oge a họọrọ na usoro

Brendan Gregg, otu n'ime ndị mmepe nke DTrace, bụ onye na-emepụta ugbu a ngwaọrụ nyocha arụmọrụ dabeere na BPF na Linux kernel, chịkọtara ahụmahụ enwetara site na nyochaa nsogbu arụmọrụ Netflix zutere mgbe ọ na-akwaga Cassandra DBMS site na CentOS gaa na Ubuntu. igwe ojii Amazon EC2 dabere na Xen. Mgbe ọpụpụ gasịrị, ibu CPU mụbara site na 30% na igbu oge n'oge arụ ọrụ ederede mụbara ihe dịka otu ego. Dị ka ọ na-apụta, arụmọrụ nke ngwa ndị na-achọsi ike ozi oge na-adabere n'ụdị oge a họọrọ na sistemụ.

Na mbụ, ihe kpatara mbelata arụmọrụ abụghị ihe doro anya na nchoputa ahụ malitere site na nyochaa mmetụta nwere ike ime mgbe niile na-agba ọsọ ma ọ bụ na-emepụta usoro ihe onwunwe na-arụ ọrụ oge niile site na iji ihe ndị dị elu na execsnoop. Mana ihe niile gosiri na oriri akụrụngwa abawanyela kpọmkwem na Cassandra DBMS, nke edere na Java. N'ịtụle metrik profaịlụ nke usoro Cassandra abụọ na-agba ọsọ na CentOS na Ubuntu, na-ahazi otu ajụjụ ahụ, gosipụtara na ihe dị ka 32% nke ngụkọta oge ejiri na-akpọ os :: javaTimeMillis (), nke a na-eji nweta ozi gbasara oge dị ugbu a. .

Mgbe nke a gasịrị, e mere nnwale nke edere ngwa Java dị mfe nke a na-akpọ usoro System.currentTimeMillis () otu narị nde ugboro na loop. Ịgba ngwa ahụ gosipụtara na ọ were 13 sekọnd iji wuchaa na CentOS, na ihe dịka 68 sekọnd na Ubuntu, i.e. 5 ugboro nwayọọ nwayọọ. Edere mmemme yiri nke ahụ na C nke a na-akpọ gettimeofday() na-arụ ọrụ otu narị ugboro, ma mgbe e gburu ya, a nwetara nsonaazụ yiri ya.

Ebe ọ bụ na ọ bịara doo anya na isi iyi nke nsogbu ahụ bụ ọrụ nke iweghachi oge dị ugbu a, nlebara anya tụgharịrị na mgbanwe ndị na-egosi mgbe ị na-ahọrọ isi mmalite dị iche iche nke oge kpọmkwem na usoro. Na-ekpe ikpe site na ọdịnaya nke "/ sys / ngwaọrụ / sistemu / clocksource / clocksource0/current_clocksource", a na-eji oge "xen" na ndabara mgbe ọ na-agba ọsọ Linux na sistemụ ndị ọbịa. Mgbe ịgbanwere isi mmalite oge gaa na "tsc", oge mmebe nke ngwa ule na Ubuntu belatara site na 68 ruo 3.3 sekọnd, i.e. ọ ghọrọ 20 ugboro ngwa ngwa. Na mgbakwunye, a na-eme nnwale arụmọrụ nke isi mmalite oge kvm, nke gosipụtara mmụba nke igbu oge site na 20% ma e jiri ya tụnyere TSC. $ cat /sys/ngwaọrụ/system/clocksource/clocksource0/available_clocksource xen tsc hpet acpi_pm $ cat /sys/ngwaọrụ/system/clocksource/clocksource0/current_clocksource xen $ oge java TimeBench ezigbo 1m8.300s onye ọrụ 0m38.337s $sys. echo tsc > /sys/ngwaọrụ/sistemu/clocksource/clocksource0/current_clocksource $ oge java TimeBench ezigbo 29.875m0s onye ọrụ 0m3.370s sys 0m3.353s

Iji nweta oge mgbe ị na-ahọrọ isi iyi TSC, a na-eji ntuziaka nhazi RDTSC, nke mmezu ya anaghị achọ oku usoro (ntụziaka ahụ anaghị achọ ohere dị elu ma na-emepụta uru site na ọnụ ọgụgụ oge arụnyere na CPU). Site na ndabara, TSC adịghị arụ ọrụ n'ihi na n'oge ochie, isi iyi a ewepụghị oge ịkwọ ụgbọ mmiri nke nta nke nta, nke a na-edozi n'ime usoro nhazi ndị ọzọ site na ngwanrọ iji nweta ọgụgụ ziri ezi karị. Dị ka onye injinia ọkachamara na mmepe nhazi si kwuo, egwu gbasara oge mgbanwe mgbe ị na-eji TSC adịlarị adịgboroja na na ndị na-emepụta oge a, isi iyi a nwere ike ịmepụta ịgụ akwụkwọ kwụsiri ike ruo ọtụtụ afọ.

Ịgbanwe sava mmepụta na Netflix gaa na isi iyi TSC mere ka mbelata 43% na nkwụsị ederede wee nweta nsonaazụ site na iji Ubuntu nke dị ugboro 4 ngwa ngwa karịa nhazi na-agba ọsọ CentOS na oge "xen". A na-ebufe nsonaazụ ọmụmụ ahụ na Amazon, bụ nke kwadoro iji isi oge TSC ndabara na gburugburu AWS EC2 dabere na Xen hypervisor (kvm-clock ka akwadoro na gburugburu dabere na Nitro hypervisor).

isi: opennet.ru

Tinye a comment