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

Brendan Gregg, një nga zhvilluesit e DTrace, tani po zhvillon mjete të analizës së performancës të bazuara në BPF në bërthamë. Linux, përmblodhi përvojën e fituar gjatë analizës së problemeve të performancës që Netflix hasi gjatë migrimit të DBMS Cassandra nga CentOS mbi Ubuntu në mjedise që funksionojnë në cloud-in Amazon EC2 duke përdorur Xen. Pas migrimit, ngarkesa e CPU-së u rrit me 30% dhe vonesa e shkrimit u rrit me një sasi të ngjashme. Rezulton se performanca e aplikacioneve që kërkojnë shumë informacion mbi kohën varet shumë nga burimi i kohës i zgjedhur nga sistemi.

Fillimisht, shkaku i rënies së performancës ishte i paqartë dhe diagnostikimi filloi me gjurmimin e ndikimit të mundshëm të proceseve të sistemit që ekzekutohen vazhdimisht ose që ekzekutohen periodikisht dhe kërkojnë shumë burime duke përdorur shërbimet top dhe execsnoop. Por gjithçka tregonte për rritjen e konsumit të burimeve, konkretisht në DBMS Cassandra, të shkruar në Java. Një krahasim i metrikave të profilizimit për dy procese Cassandra që funksionojnë paralelisht në CentOS О Ubuntu dhe përpunimi i të njëjtave kërkesa tregoi se rreth 32% e kohës totale shpenzohet duke thirrur os::javaTimeMillis(), i cili përdoret për të marrë informacion në lidhje me kohën aktuale.

Pas kĂ«saj, u krye njĂ« eksperiment nĂ« tĂ« cilin u shkrua njĂ« aplikacion i thjeshtĂ« Java qĂ« e thirri metodĂ«n System.currentTimeMillis() nĂ« njĂ« cikĂ«l njĂ«qind milion herĂ«. Ekzekutimi i aplikacionit tregoi se CentOS U deshĂ«n 13 sekonda pĂ«r ta pĂ«rfunduar, dhe nĂ« Ubuntu — rreth 68 sekonda, d.m.th., 5 herĂ« mĂ« ngadalĂ«. NjĂ« program i ngjashĂ«m u shkrua nĂ« C, duke e thirrur funksionin gettimeofday() 100 milion herĂ«, por prodhoi rezultate tĂ« ngjashme.

Meqenëse u bë e qartë se burimi i problemit ishte funksioni i kthimit të kohës aktuale, vëmendja u zhvendos në ndryshimin e vlerave gjatë zgjedhjes së burimeve të ndryshme të kohës në sistem. Duke gjykuar nga përmbajtja e "/sys/devices/system/clocksource/clocksource0/current_clocksource", vlera e parazgjedhur në fillim Linux Sistemi mysafir përdori kohëmatësin "xen". Pas ndryshimit të burimit të kohës në "tsc", koha e ekzekutimit të aplikacionit të testimit në Ubuntu u ul nga 68 në 3.3 sekonda, d.m.th. u bë 20 herë më i shpejtë. Përveç kësaj, u krye një test i performancës së burimit të kohës kvm-clock, i cili tregoi një rritje prej 20% të vonesave krahasuar 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 kur zgjidhet burimi TSC, përdoret instruksioni i procesorit RDTSC. Ekzekutimi i tij nuk kërkon një thirrje sistemi (instruksioni nuk kërkon privilegje të larta dhe kthen vlerën nga numëruesi i kohës i integruar i CPU-së). TSC nuk aktivizohet si parazgjedhje, pasi në të kaluarën, ky burim nuk eliminonte zhvendosjen graduale të kohës, e cila korrigjohet në mënyrë programore në procesorë të tjerë për të arritur lexime më të sakta. Sipas një inxhinieri të specializuar në zhvillimin e procesorëve, shqetësimet në lidhje me zhvendosjet e kohës gjatë përdorimit të TSC kanë qenë prej kohësh të pabazuara, dhe në procesorë modernë Ky burim mund të ofrojë lexime të qëndrueshme për vite me radhë.

Transferimi i punëtorëve serverat Në Netflix, burimi TSC rezultoi në një ulje prej 43% të vonesës së regjistrimit dhe arriti një ulje prej 100% të vonesës së regjistrimit kur përdorej Ubuntu rezultate 4 herë më të larta se konfigurimet me CentOS me burimin e kohës "xen". Rezultatet e studimit u ndanë me Amazon, i cili zyrtarisht rekomandoi përdorimin e burimit të kohës TSC si parazgjedhje në mjediset AWS EC2 bazuar në hipervizorin Xen (në mjediset e bazuara në hipervizorin Nitro, kvm-clock mbetet i rekomanduar).

Burimi: opennet.ru

Bleni njĂ« host tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, serverĂ« VPS VDS đŸ”„ Bleni hosting tĂ« besueshĂ«m tĂ« faqeve tĂ« internetit me mbrojtje DDoS, servera VPS VDS | ProHoster