Pag-analisar sa epekto sa pasundayag sa gigikanan sa oras nga gipili sa sistema

Si Brendan Gregg, usa sa mga nag-develop sa DTrace, nga karon nag-develop sa BPF-based performance analysis tools sa Linux kernel, nagsumaryo sa kasinatian nga nakuha gikan sa pag-analisar sa mga problema sa performance nga nasugatan sa Netflix sa dihang mibalhin sa Cassandra DBMS gikan sa CentOS ngadto sa Ubuntu. ang Amazon EC2 cloud base sa Xen. Human sa paglalin, ang CPU load misaka sa 30% ug ang mga paglangay atol sa pagsulat nga mga operasyon misaka sa halos parehas nga kantidad. Ingon sa nahibal-an, ang paghimo sa mga aplikasyon nga kusog nga nangayo sa kasayuran sa oras nagdepende kaayo sa eksakto nga gigikanan sa oras nga gipili sa sistema.

Sa sinugdan, ang hinungdan sa pagkunhod sa performance dili klaro ug ang diagnosis nagsugod sa pag-monitor sa posibleng epekto sa kanunay nga pagdagan o matag karon ug unya nga paglansad sa mga proseso sa sistema nga kusog sa kapanguhaan gamit ang mga top ug execsnoop utilities. Apan ang tanan nagpakita nga ang konsumo sa kahinguhaan miuswag ilabina sa Cassandra DBMS, nga gisulat sa Java. Ang pagtandi sa mga sukatan sa profiling sa duha ka proseso sa Cassandra nga nagdagan nga managsama sa CentOS ug Ubuntu, nga nagproseso sa parehas nga mga pangutana, nagpakita nga mga 32% sa kinatibuk-ang oras nga gigugol sa pagtawag os::javaTimeMillis (), nga gigamit aron makakuha kasayuran bahin sa karon nga oras. .

Pagkahuman niini, gihimo ang usa ka eksperimento diin gisulat ang usa ka yano nga aplikasyon sa Java nga gitawag nga System.currentTimeMillis() nga pamaagi usa ka gatos ka milyon nga beses sa usa ka loop. Ang pagpadagan sa aplikasyon nagpakita nga gikinahanglan ang 13 segundos aron makompleto sa CentOS, ug mga 68 segundos sa Ubuntu, i.e. 5 ka beses nga hinay. Ang usa ka susama nga programa gisulat sa C nga gitawag nga gettimeofday() function usa ka gatos ka milyon ka beses, apan kung gipatuman, parehas nga mga resulta ang nakuha.

Tungod kay kini nahimong tin-aw nga ang tinubdan sa problema mao ang function sa pagbalik sa kasamtangan nga panahon, pagtagad ngadto sa kausaban sa indicators sa diha nga ang pagpili sa lain-laing mga tinubdan sa tukma nga panahon sa sistema. Paghukom sa mga sulod sa "/ sys/devices/system/clocksource/clocksource0/current_clocksource", ang "xen" timer gigamit sa default sa dihang nagpadagan sa Linux sa guest system. Human mausab ang tinubdan sa oras ngadto sa "tsc", ang oras sa pagpatuman sa aplikasyon sa pagsulay sa Ubuntu mikunhod gikan sa 68 ngadto sa 3.3 segundos, i.e. nahimong 20 ka beses nga mas paspas. Dugang pa, gihimo ang usa ka pagsulay sa pasundayag sa gigikanan sa oras sa kvm-clock, nga nagpakita sa pagtaas sa mga paglangan sa 20% kumpara sa 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 tinuod nga 1m8.300s user 0m38.337s $s. echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ time java TimeBench tinuod nga 29.875m0s user 0m3.370s sys 0m3.353s

Aron makuha ang oras kung nagpili usa ka gigikanan sa TSC, gigamit ang panudlo sa processor sa RDTSC, ang pagpatuman niini wala magkinahanglan usa ka tawag sa sistema (ang panudlo wala magkinahanglan ug taas nga mga pribilehiyo ug nagpatunghag usa ka kantidad gikan sa counter sa oras nga gitukod sa CPU). Sa kasagaran, ang TSC wala ma-activate tungod kay sa karaan nga mga adlaw kini nga tinubdan wala iapil ang anam-anam nga pag-anod sa oras, nga sa ubang mga processor gi-adjust sa software aron makab-ot ang mas tukma nga mga pagbasa. Sumala sa usa ka inhenyero nga nag-espesyalisar sa pag-uswag sa processor, ang mga kahadlok bahin sa pagbag-o sa oras kung ang paggamit sa TSC dugay na nga dili tinuod ug sa mga modernong processor kini nga gigikanan makahimo og lig-on nga pagbasa sa daghang mga tuig.

Ang pagbalhin sa mga server sa produksiyon sa Netflix ngadto sa tinubdan sa TSC miresulta sa 43% nga pagkunhod sa write latency ug nakab-ot ang mga resulta gamit ang Ubuntu nga 4 ka beses nga mas paspas kay sa mga configuration nga nagpadagan sa CentOS nga adunay "xen" nga tinubdan sa oras. Ang mga resulta sa pagtuon gibalhin ngadto sa Amazon, nga opisyal nga girekomendar gamit ang default TSC time source sa AWS EC2 environment base sa Xen hypervisor (kvm-clock nagpabilin nga girekomenda sa mga environment base sa Nitro hypervisor).

Source: opennet.ru

Idugang sa usa ka comment