Kev txheeb xyuas qhov cuam tshuam ntawm kev ua haujlwm ntawm lub sijhawm xaiv hauv qhov system

Brendan Gregg, yog ib tus tsim tawm ntawm DTrace, uas tam sim no tab tom tsim BPF-raws li cov cuab yeej tshuaj ntsuam xyuas kev ua tau zoo hauv Linux kernel, tau sau tseg cov kev paub tau los ntawm kev txheeb xyuas cov teeb meem kev ua tau zoo uas Netflix ntsib thaum migrating Cassandra DBMS los ntawm CentOS rau Ubuntu. Amazon EC2 huab raws li Xen. Tom qab tsiv teb tsaws, CPU load tau nce 30% thiab qeeb thaum sau ntawv ua haujlwm tau nce los ntawm tib tus nqi. Raws li nws hloov tawm, kev ua tau zoo ntawm cov ntawv thov uas thov cov ntaub ntawv sijhawm ntau heev nyob ntawm lub sijhawm lub sijhawm xaiv hauv qhov system.

Thaum xub thawj, yog vim li cas rau qhov kev ua tau zoo ntawm kev txo qis tsis pom tseeb thiab qhov kev kuaj mob tau pib nrog kev saib xyuas qhov cuam tshuam ntawm kev ua haujlwm tas li lossis ib ntus pib siv cov txheej txheem siv cov txheej txheem siv cov khoom siv sab saum toj thiab execsnoop. Tab sis txhua yam qhia tau hais tias kev siv peev txheej tau nce tshwj xeeb hauv Cassandra DBMS, sau hauv Java. Sib piv cov kev ntsuas profile ntawm ob lub Cassandra cov txheej txheem ua haujlwm sib luag ntawm CentOS thiab Ubuntu, ua cov lus nug tib yam, pom tias kwv yees li 32% ntawm tag nrho lub sijhawm tau siv hu rau os::javaTimeMillis(), uas yog siv kom tau txais cov ntaub ntawv hais txog lub sijhawm tam sim no. .

Tom qab no, ib qho kev sim tau ua nyob rau hauv uas ib qho yooj yim Java daim ntawv thov raug sau uas hu ua System.currentTimeMillis() txoj kev ib puas lab lub sij hawm nyob rau hauv ib lub voj. Khiav daim ntawv thov pom tias nws siv 13 vib nas this los ua kom tiav ntawm CentOS, thiab txog 68 vib nas this ntawm Ubuntu, piv txwv li. 5 lub sij hawm qeeb. Ib txoj haujlwm zoo sib xws tau sau rau hauv C uas hu ua gettimeofday() ua haujlwm ib puas lab lub sijhawm, tab sis thaum ua tiav, cov txiaj ntsig zoo sib xws tau txais.

Txij li thaum nws tau pom tseeb tias lub hauv paus ntawm qhov teeb meem yog lub luag haujlwm ntawm kev rov qab mus rau lub sijhawm tam sim no, kev saib xyuas tig mus rau cov kev hloov pauv hauv cov ntsuas thaum xaiv cov khoom sib txawv ntawm lub sijhawm tiag tiag hauv qhov system. Kev txiav txim los ntawm cov ntsiab lus ntawm "/sys/devices/system/clocksource/clocksource0/current_clocksource", "xen" timer tau siv los ntawm lub neej ntawd thaum khiav Linux hauv cov qhua. Tom qab hloov lub sijhawm rau "tsc", lub sijhawm ua tiav ntawm daim ntawv thov xeem hauv Ubuntu poob ntawm 68 mus rau 3.3 vib nas this, i.e. nws tau ua 20 lub sij hawm sai dua. Tsis tas li ntawd, kev ntsuas kev ua tau zoo ntawm kvm-clock lub sijhawm tau ua tiav, uas pom tau tias qhov kev ncua sij hawm nce ntxiv los ntawm 20% piv rau 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 tiag 1m8.300s neeg siv 0m38.337s $ sys.0m echo tsc > /sys/devices/system/clocksource/clocksource29.875/current_clocksource $time java TimeBench tiag 0m0s neeg siv 3.370m0s sys 3.353m0s

Txhawm rau kom tau txais lub sijhawm thaum xaiv TSC qhov chaw, RDTSC cov lus qhia processor yog siv, qhov kev ua tiav uas tsis xav tau kev hu xov tooj (qhia tsis tas yuav tsum muaj cai nce siab thiab ua rau muaj txiaj ntsig los ntawm lub sijhawm suav ua rau hauv CPU). Los ntawm lub neej ntawd, TSC tsis tau qhib vim hais tias nyob rau hauv lub qub hnub qhov chaw no tsis cais gradual lub sij hawm drift, uas nyob rau hauv lwm yam processors yog kho los ntawm software kom ua tau zoo dua nyeem ntawv. Raws li tus kws tshaj lij tshwj xeeb hauv kev tsim cov txheej txheem, kev ntshai txog lub sijhawm hloov pauv thaum siv TSC tau ntev lawm tsis muaj tseeb thiab hauv cov txheej txheem niaj hnub no tuaj yeem tsim kev nyeem ntawv ruaj khov rau xyoo.

Hloov cov servers ntau lawm ntawm Netflix mus rau TSC qhov tau ua rau 43% txo qis hauv kev sau latency thiab ua tiav cov txiaj ntsig siv Ubuntu uas yog 4 npaug sai dua li kev teeb tsa khiav CentOS nrog "xen" lub sijhawm. Cov txiaj ntsig ntawm txoj kev tshawb fawb tau pauv mus rau Amazon, uas tau pom zoo siv lub sijhawm TSC lub sijhawm nyob hauv AWS EC2 ib puag ncig raws li Xen hypervisor (kvm-clock tseem pom zoo nyob rau hauv ib puag ncig raws li Nitro hypervisor).

Tau qhov twg los: opennet.ru

Ntxiv ib saib