Ukuhlaziywa komthelela wokusebenza womthombo wesikhathi okhethiwe kusistimu

UBrendan Gregg, omunye wabathuthukisi be-DTrace, okwamanje owenza amathuluzi okuhlaziya ukusebenza asekelwe ku-BPF ku-Linux kernel, ufingqe ulwazi oluzuzwe ngokuhlaziya izinkinga zokusebenza i-Netflix ehlangabezane nazo lapho ithutha i-Cassandra DBMS isuka ku-CentOS iya ku-Ubuntu. ifu le-Amazon EC2 elisekelwe ku-Xen. Ngemva kokufuduka, umthwalo we-CPU ukhuphuke ngo-30% futhi ukubambezeleka phakathi nemisebenzi yokubhala kukhuphuke cishe ngenani elifanayo. Njengoba kuvela, ukusebenza kwezinhlelo zokusebenza ezicela imininingwane yesikhathi kakhulu kuncike emthonjeni wesikhathi okhethiwe ohlelweni.

Ekuqaleni, isizathu sokwehla kokusebenza besingabonakali futhi ukuxilongwa kwaqala ngokuqapha umthelela ongase ube khona wokusebenza njalo noma ukwethulwa ngezikhathi ezithile kwezinqubo zohlelo olusebenzisa izinsiza kusetshenziswa izinsiza eziphezulu ne-execsnoop. Kodwa konke kubonise ukuthi ukusetshenziswa kwezinsiza kuye kwanda ngokukhethekile ku-Cassandra DBMS, ebhalwe ku-Java. Ukuqhathanisa amamethrikhi okuphrofayili ezinqubo ezimbili ze-Cassandra ezisebenza ngokufana ku-CentOS no-Ubuntu, zicubungula imibuzo efanayo, kubonise ukuthi cishe u-32% wesikhathi esiphelele esichithwe kushayelwa i-os::javaTimeMillis(), esetshenziselwa ukuthola ulwazi mayelana nesikhathi samanje. .

Ngemva kwalokhu, kwenziwa ukuhlola lapho kwabhalwa khona uhlelo olulula lwe-Java olubizwa ngokuthi indlela ye-System.currentTimeMillis() izikhathi eziyizigidi eziyikhulu ku-loop. Ukuqalisa uhlelo kubonise ukuthi kuthathe imizuzwana eyi-13 ukuqeda ku-CentOS, kanye nemizuzwana engama-68 ku-Ubuntu, i.e. 5 izikhathi ezihamba kancane. Uhlelo olufanayo lwabhalwa ngo-C olwabiza umsebenzi we-gettimeofday() izikhathi eziyizigidi eziyikhulu, kodwa lapho lwenziwa, kwatholakala imiphumela efanayo.

Njengoba kwacaca ukuthi umthombo wenkinga kwakuwumsebenzi wokubuyisela isikhathi samanje, ukunakwa kwaphendukela ekushintsheni kwezinkomba lapho kukhethwa imithombo ehlukene yesikhathi esiqondile ohlelweni. Uma sibheka okuqukethwe kwe-β€œ/sys/devices/system/clocksource/clocksource0/current_clocksource”, isibali sikhathi se-β€œxen” sisetshenziswe ngokuzenzakalelayo lapho kusetshenziswa i-Linux kusistimu yesivakashi. Ngemva kokushintsha umthombo wesikhathi ku-"tsc", isikhathi sokwenziwa sokuhlolwa kwesicelo ku-Ubuntu sehle sisuka ku-68 saya kumasekhondi angu-3.3, i.e. yaba ngokushesha izikhathi ezingu-20. Ukwengeza, ukuhlolwa kokusebenza komthombo wesikhathi se-kvm-clock kwenziwa, okubonise ukwenyuka kokubambezeleka ngo-20% uma kuqhathaniswa ne-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 umsebenzisi 0m38.337s 0m29.875 $s 0. echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ isikhathi java TimeBench real 3.370m0s umsebenzisi 3.353m0s sys 0.026mXNUMXs

Ukuthola isikhathi lapho kukhethwa umthombo we-TSC, kusetshenziswa isiqondiso sephrosesa se-RDTSC, ukwenziwa kwakho okungadingi ucingo lwesistimu (umyalelo awudingi amalungelo aphakeme futhi ukhiqiza inani elisuka kubala yesikhathi eyakhelwe ku-CPU). Ngokuzenzakalelayo, i-TSC ayenziwa isebenze ngoba ezinsukwini zakudala lo mthombo awuzange ukhiphe i-drift yesikhathi kancane kancane, okuthi kwamanye amaphrosesa alungiswe isofthiwe ukuze kuzuzwe ukufundwa okunembe kakhudlwana. Ngokusho kukanjiniyela onguchwepheshe ekuthuthukisweni kweprosesa, ukwesaba mayelana nokushintshwa kwesikhathi lapho usebenzisa i-TSC bekungelona iqiniso isikhathi eside futhi kumaphrosesa anamuhla lo mthombo ungakhiqiza ukufundwa okuzinzile iminyaka.

Ukushintsha amaseva okukhiqiza ku-Netflix emthonjeni we-TSC kuholele ekuncipheni kwe-43% ekubambezelekeni kokubhala kanye nemiphumela ezuziwe kusetshenziswa Ubuntu eyayishesha izikhathi ezi-4 kunokulungiselelwa okusebenzisa i-CentOS ngomthombo wesikhathi "xen". Imiphumela yocwaningo idluliselwe e-Amazon, eyancoma ngokusemthethweni ukuthi kusetshenziswe umthombo wesikhathi we-TSC ozenzakalelayo ezindaweni ze-AWS EC2 ngokusekelwe ku-Xen hypervisor (iwashi le-kvm lihlala linconywa ezindaweni ezisekelwe ku-Nitro hypervisor).

Source: opennet.ru

Engeza amazwana