Analiza e ndikimit në performancën e burimit të kohës të zgjedhur në sistem

Brendan Gregg, një nga zhvilluesit e DTrace, tani po zhvillon mjete për analizën e performancës në bazë të BPF në bërthamën Linux, përmbledh përvojën e fituar gjatë hetimeve mbi problemet e performancës me të cilat u ballafaqua kompania Netflix gjatë kalimit të bazës së të dhënave Cassandra nga CentOS në Ubuntu në mjediset që funksiononin në cloud Amazon EC2 të bazuara në Xen. Pas migrimit, ngarkesa në CPU u rrit me 30% dhe afërsisht në të njëjtën masë u rritën vonesat në kryerjen e operacioneve të shkrimit. Siç doli të jetë, performanca e aplikacioneve që kërkonin intensively informacionin e kohës, varet shumë nga burimi i saktë i kohës të zgjedhur në sistem.

Fillimisht, shkaku i uljes së performancës nuk ishte i qartë dhe diagnostikimi filloi duke ndjekur ndikimin e mundshëm të proceseve sistemore që konsumonin burime, duke shfrytëzuar mjetet top dhe execsnoop. Por gjithçka tregonte se konsumi i burimeve kishte shpërthyer veçanërisht në bazën e të dhënave Cassandra, e shkruar në gjuhën Java. Krahasimi i treguesve të profilizimit të dy proceseve Cassandra, të cilat ishin nisur paralelisht në CentOS dhe Ubuntu dhe po shqyrtonin të njëjtat kërkesa, tregoi se rreth 32% e të gjithë kohës po shpenzohej në thirrjen e os::javaTimeMillis(), e cila përdorej për të marrë informacionin mbi kohën aktuale.

Pas kĂ«saj, njĂ« eksperiment u krye, ku u krijua njĂ« aplikacion i thjeshtĂ« nĂ« gjuhĂ«n Java, i cili thĂ«rriste njĂ«qind milion herĂ« metodĂ«n System.currentTimeMillis(). Ekzekutimi i aplikacionit tregoi se nĂ« CentOS ishin nevojitur 13 sekonda pĂ«r ta pĂ«rfunduar, ndĂ«rsa nĂ« Ubuntu — rreth 68 sekonda, pra 5 herĂ« mĂ« ngadalĂ«. NĂ« gjuhĂ«n C u shkrua njĂ« program i ngjashĂ«m, i cili thĂ«rriste njĂ«qind milion herĂ« funksionin gettimeofday(), por gjatĂ« ekzekutimit tĂ« tij u arritĂ«n rezultate tĂ« ngjashme.

Duke u bërë e qartë se burimi i problemit ishte funksioni për kthimin e kohës aktuale, vëmendja u përqendrua në ndryshimin e treguesve duke zgjedhur burime të ndryshme të saktë të kohës në sistem. Sipas përmbajtjes së "/sys/devices/system/clocksource/clocksource0/current_clocksource" në mënyrë default kur nis Linux në një sistem të ri, përdorej ndaluesi "xen". Pas ndryshimit të burimit të kohës në "tsc", koha e ekzekutimit të aplikacionit testues në Ubuntu u ul nga 68 në 3.3 sekonda, duke u bërë më e shpejtë 20 herë. Për më tepër, u krye një test i performancës së burimit të kohës kvm-clock, i cili tregoi se vonesat ishin rritur me 20%, në krahasim me TSC. $ 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 user 0m38.337s sys 0m29.875s $ echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ time java TimeBench real 0m3.370s user 0m3.353s sys 0m0.026s

Për të marrë kohën duke zgjedhur burimin TSC përdoret instruksioni rrjedhshëm i procesorit RDTSC, ekzekutimi i të cilit nuk kërkon thirrje sistemore (instruksioni nuk kërkon privilegje të larta dhe kthen një vlerë nga një regjistrues koha i integruar në CPU). Në mënyrë që të përfitohet nga ajo, TSC nuk aktivizohej sepse në kohët e kaluara, ky burim nuk përjashtonte kalimin gradual të kohës, i cili në shkëmbim të tjerë korrigjohej në përpunim për të arritur lexime më të sakta. Sipas mendimit të inxhinierit që specializohet në zhvillimin e procesorëve, frika nga ndjeshmëria e kohës gjatë përdorimit të TSC, prej kohësh nuk është e vërtetë dhe ky burim mund të ofrojë tregues stabël për vite me radhë. procesorët modernë Shkalla e saj është që ky burim mund të japë tregues të qëndrueshëm gjatë viteve.

Përkthimi i ecurisë servera në Netflix në burimin TSC çoi në uljen e vonesave gjatë shkrimit me 43% dhe në arritjen e rezultateve në Ubuntu që ishin 4 herë më të mira se konfigurimi me CentOS me burimin e kohës "xen. Rezultatet e këtij studimi i u ofruan kompanisë Amazon, e cila zyrtarisht rekomandoi në mjediset AWS EC2 të bazuara në hipervizorin Xen të përdoret si burim default koha TSC (në mjediset mbi hipervizorin Nitro mbetet i rekomanduar kvm-clock).

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster