Ongororo yemaitiro ekuita kwenzvimbo yakasarudzwa muhurongwa

Brendan Gregg, mumwe wevagadziri veDTrace, iye zvino ari kugadzira BPF-based performance analysis maturusi muLinux kernel, akapfupikisa chiitiko chakawanikwa kubva pakuongorora matambudziko ekuita ayo Netflix akasangana nawo paakatama Cassandra DBMS kubva kuCentOS kuenda kuUbuntu. iyo Amazon EC2 gore rakavakirwa paXen. Mushure mekutama, mutoro weCPU wakawedzera ne30% uye kunonoka panguva yekunyora mabasa kwakawedzera neinenge yakaenzana. Sezvazvinoitika, kuita kwezvikumbiro zvinokumbira zvakanyanya ruzivo rwenguva zvakanyanya zvinoenderana nenguva chaiyo yakasarudzwa muhurongwa.

Pakutanga, chikonzero chekudzikira kwekuita chaive chisiri pachena uye kuongororwa kwakatanga nekutarisa zvingangoitika zvekugara uchimhanya kana nguva nenguva kutangwa zviwanikwa-inokura sisitimu maitiro uchishandisa yepamusoro uye execsnoop utilities. Asi zvese zvakaratidza kuti kushandiswa kwezviwanikwa kwakawedzera zvakanyanya muCassandra DBMS, yakanyorwa muJava. Tichienzanisa mametric eprofiling maviri eCassandra maitiro anomhanya akafanana paCentOS neUbuntu, achigadzirisa mibvunzo yakafanana, yakaratidza kuti inenge 32% yenguva yese yakashandiswa kufona os::javaTimeMillis(), iyo inoshandiswa kuwana ruzivo nezvenguva iripo. .

Mushure meizvi, chiedzo chakaitwa umo Java application yakanyorwa iyo inodaidzwa kuti System.currentTimeMillis () nzira zana remamiriyoni nguva muchiuno. Kumhanyisa application kwakaratidza kuti zvakatora masekonzi gumi nematatu kupedzisa paCentOS, uye anenge 13 seconds paUbuntu, i.e. 68 nguva zvishoma nezvishoma. Chirongwa chakafanana chakanyorwa muC icho chaidaidza kuti gettimeofday () shanda kane zana remamiriyoni, asi payakaitwa, mibairo yakafanana yakawanikwa.

Sezvo zvakava pachena kuti bviro yedambudziko raive basa rekudzorera nguva yazvino, kutarisisa kwakatendeukira kukuchinja kwezviratidzo pakusarudza kwakasiyana mabviro enguva chaiyo muhurongwa. Tichitarisa nezviri mukati me "/sys/devices/system/clocksource/clocksource0/current_clocksource", iyo "xen" timer yakashandiswa nekusarudzika pakumhanyisa Linux musystem yevaenzi. Mushure mekushandura nguva sosi ku "tsc", nguva yekuuraya yekuedzwa application muUbuntu yakadzikira kubva pa68 kusvika 3.3 seconds, i.e. yakava nekukurumidza kakapetwa ka20. Pamusoro pezvo, bvunzo dzekuita kwekvm-wachi nguva sosi yakaitwa, iyo yakaratidza kuwedzera kwekunonoka ne20% zvichienzaniswa neTSC. $ katsi /sys/devices/system/clocksource/clocksource0/available_clocksource xen tsc hpet acpi_pm $ katsi /sys/devices/system/clocksource/clocksource0/current_clocksource xen $ nguva java TimeBench chaiyo 1m8.300s mushandisi 0m38.337s 0s 29.875 $s 0. echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ nguva java TimeBench chaiyo 3.370m0s mushandisi 3.353m0s sys 0.026mXNUMXs

Kuti uwane nguva yekusarudza TSC sosi, iyo RDTSC processor yekuraira inoshandiswa, iyo kuuraya iyo isingade kufona system (iyo murayiridzo haudi maropafadzo akakwirira uye unoburitsa kukosha kubva pakaunda yenguva yakavakirwa muCPU). Nekumisikidza, TSC haina kuvhurwa nekuti mumazuva ekare iyi sosi haina kusarura zvishoma nezvishoma nguva yekudhiraivha, iyo mune mamwe processor inogadziriswa nesoftware kuti iwane kuverenga kwakaringana. Sekureva kwainjiniya anoshanda mukuvandudza processor, kutya nezvekuchinja kwenguva kana uchishandisa TSC kwagara kusiri kwechokwadi uye muma processors emazuva ano sosi iyi inogona kuburitsa kuverenga kwakagadzikana kwemakore.

Kuchinja maseva ekugadzira paNetflix kuenda kuTSC sosi kwakakonzera kudzikiswa kwe43% mukunyora latency uye yakawana mhinduro uchishandisa Ubuntu iyo yaive yakapetwa kana 4 kupfuura zvigadziriso zvinomhanya CentOS ine "xen" nguva sosi. Mhedzisiro yechidzidzo ichi yakaendeswa kuAmazon, iyo yakakurudzira zviri pamutemo kushandisa default TSC nguva sosi munzvimbo dzeAWS EC2 zvichienderana neXen hypervisor (kvm-wachi inoramba ichikurudzirwa munzvimbo dzakabva paNitro hypervisor).

Source: opennet.ru

Voeg