Analîza bandora performansê ya çavkaniya demê ya ku di pergalê de hatî hilbijartin

Brendan Gregg, yek ji pêşdebirên DTrace, ku niha di kernel Linux de amûrên analîzkirina performansa BPF-based pêşve dixe, kurte ezmûna ku ji analîzkirina pirsgirêkên performansê yên ku Netflix dema ku DBMS-ya Cassandra ji CentOS-ê berbi Ubuntu veguhezand bi dest xist, kurt kir. ewr Amazon EC2 li ser bingeha Xen. Piştî koçberiyê, barkirina CPU% 30 zêde bû û dereng di dema operasyonên nivîsandinê de bi qasî heman hejmarê zêde bûn. Wekî ku diqewime, performansa serîlêdanên ku bi tundî agahdariya demê daxwaz dikin pir bi çavkaniya dema rastîn a ku di pergalê de hatî hilbijartin ve girêdayî ye.

Di destpêkê de, sedema kêmbûna performansê ne diyar bû û teşhîs bi şopandina bandora muhtemel a pêvajoyên pergala zexm-çavkaniyê bi domdarî têne xebitandin an bi domdarî têne destpêkirin bi karanîna karûbarên jorîn û execsnoop dest pê kir. Lê her tişt destnîşan kir ku xerckirina çavkaniyê bi taybetî di Cassandra DBMS de, ku bi Java-yê hatî nivîsandin, zêde bûye. Berawirdkirina metrîkên profîlê yên du pêvajoyên Cassandra yên ku li ser CentOS û Ubuntu paralel dimeşin, hilberandina heman pirsan, destnîşan kir ku ji sedî 32% ji tevahiya wextê gazîkirina os::javaTimeMillis(), ku ji bo bidestxistina agahdariya di derbarê dema niha de tê bikar anîn, derbas bûye. .

Piştî vê yekê, ceribandinek hate kirin ku tê de serîlêdanek Java-ya hêsan hate nivîsandin ku jê re rêbaza System.currentTimeMillis() sed mîlyon carî di nav deverekê de tê gotin. Xebata serîlêdanê nîşan da ku temamkirina li ser CentOS 13 saniye, û li ser Ubuntu jî 68 saniye girt, yanî. 5 caran hêdîtir. Bernameyek bi vî rengî di C-yê de hate nivîsandin ku sed mîlyon carî jê re fonksiyona gettimeofday() jê re digotin, lê dema ku hate darve kirin, encamên wekhev hatin bidestxistin.

Ji ber ku eşkere bû ku çavkaniya pirsgirêkê fonksiyona vegerandina dema niha ye, dema ku çavkaniyên cihêreng ên dema rastîn di pergalê de hilbijêrin bal kişand ser guhertinên nîşanan. Li gorî naveroka "/sys/devices/pergal/clocksource/clocksource0/current_clocksource", dema ku Linux-ê di pergala mêvan de dixebitîne demjimêra "xen" ji hêla xwerû ve hatî bikar anîn. Piştî guherandina çavkaniya demê bo "tsc", dema pêkanîna sepana testê ya li Ubuntuyê ji 68an daket 3.3 saniyeyan, ango. 20 qat leztir bû. Wekî din, ceribandinek performansê ya çavkaniya demjimêra kvm-ê hate kirin, ku li gorî TSC% 20 zêdebûnek dereng nîşan da. $ cat /sys/devices/pergal/clocksource/clocksource0/available_clocksource xen tsc hpet acpi_pm $ cat /sys/devices/system/clocksource/clocksource0/current_clocksource xen $ time java TimeBench real 1m8.300s user 0ms38.337. echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ time java TimeBench real 29.875m0s user 0m3.370s sys 0m3.353s

Ji bo bidestxistina wextê dema hilbijartina çavkaniyek TSC-ê, rêwerza pêvajoyek RDTSC tê bikar anîn, ku ji bo pêkanîna wê bangek pergalê hewce nake (telîmat ne hewceyê îmtiyazên bilindkirî ne û nirxek ji jimareya demê ya ku di CPU-yê de hatî çêkirin çêdike). Ji hêla xwerû, TSC nayê aktîf kirin ji ber ku di rojên berê de vê çavkaniyê guheztina demê ya hêdî-hêdî ji holê ranekir, ku di pêvajoyên din de ji hêla nermalavê ve tê rêve kirin da ku bigihîje xwendinên rasttir. Li gorî endezyarek pisporê pêşkeftina pêvajoyê, tirsa li ser guheztina demê dema ku TSC bikar tîne ji mêj ve nerast e û di pêvajoyên nûjen de ev çavkanî dikare bi salan xwendinên domdar çêbike.

Veguheztina serverên hilberînê yên li Netflix ji çavkaniyek TSC re bû sedema kêmbûna% 43 di derengiya nivîsandinê de û bi karanîna Ubuntu re encamên ku 4 carî zûtir ji konfigurasyonên ku CentOS-ê bi çavkaniyek demjimêra "xen" dixebitin bi dest xistin. Encamên lêkolînê ji Amazonê re hatin veguheztin, ku bi fermî pêşniyar kir ku çavkaniya demjimêra xwerû ya TSC-ê li hawîrdorên AWS EC2 li ser bingeha hîpervisorê Xen-ê bikar bîne (kvm-saet li hawîrdorên ku li ser hîpervisorê Nitro têne pêşniyar kirin dimîne).

Source: opennet.ru

Add a comment