Te tātari i te paanga mahi o te puna wa i tohua i roto i te punaha

Ko Brendan Gregg, tetahi o nga kaihanga o DTrace, kei te whakawhanake i nga taputapu tātari mahi a-BPF i roto i te kakano Linux, i whakarāpopotohia te wheako i puta mai i te tātari i nga raru o te mahi i pa ki a Netflix i te hekenga o Cassandra DBMS mai i CentOS ki Ubuntu. te kapua Amazon EC2 i runga i Xen. Whai muri i te hekenga, ka piki ake te uta CPU ma te 30% me nga whakaroa i te wa o nga mahi tuhi ka piki ake mo te rite tonu. I te mea ka puta, ko te mahinga o nga tono e tono nui ana i nga korero mo te waa ka whakawhirinaki ki te puna wa tika i tohua i roto i te punaha.

I te tuatahi, kaore i tino kitea te take o te hekenga o nga mahi, ka timata te tātaritanga ma te aro turuki i te paanga o te whakahaere tonu, i te whakarewahia ranei i ia wa nga tikanga punaha-a-raatau ma te whakamahi i nga taputapu o runga me te execsnoop. Engari ko nga mea katoa i tohu kua piki ake te kohi rawa i roto i te Cassandra DBMS, i tuhia ki Java. Ko te whakatairite i nga inenga tohu o nga tukanga Cassandra e rua e rere whakarara ana i runga i te CentOS me te Ubuntu, e tukatuka ana i nga patai ano, i whakaatu ko te 32% o te katoa o te wa i pau ki te waea os::javaTimeMillis(), e whakamahia ana ki te tiki korero mo te waa o naianei. .

I muri i tenei, i whakahaerehia he whakamatautau i tuhia he tono Java ngawari e kiia ana ko te tikanga System.currentTimeMillis() kotahi rau miriona nga wa i roto i te kohanga. Ko te whakahaere i te tono i whakaatu he 13 hēkona ki te whakaoti i runga i te CentOS, me te 68 hēkona i runga Ubuntu, ara. 5 nga wa poto ake. I tuhia he papatono rite ki te C e kiia ana ko te mahi gettimeofday() kotahi rau miriona nga wa, engari ka mahia, ka puta nga hua rite.

I te mea kua maarama ko te take o te raru ko te whakahoki i te waa o naianei, ka huri te aro ki nga huringa o nga tohu i te wa e whiriwhiri ana i nga puna rereke o te waa tika i roto i te punaha. Ma te whakatau i nga ihirangi o "/sys/devices/system/clocksource/clocksource0/current_clocksource", i whakamahia te taima "xen" ma te taunoa i te wa e whakahaere ana a Linux i te punaha manuhiri. I muri i te huri i te puna wa ki te "tsc", ka heke te wa mahi o te tono whakamatautau i Ubuntu mai i te 68 ki te 3.3 hēkona, i.e. ka 20 nga wa tere ake. I tua atu, i mahia he whakamatautau mahi o te puna wa-kvm-clock, i whakaatu i te pikinga o nga whakaroa ma te 20% ka whakaritea ki te 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 tūturu 1m8.300s kaiwhakamahi 0m38.337m0s. echo tsc > /sys/devices/system/clocksource/clocksource29.875/current_clocksource $ time java TimeBench tūturu 0m0s kaiwhakamahi 3.370m0s sys 3.353m0s

Ki te whiwhi i te waa ka kowhiri i tetahi puna TSC, ka whakamahia te tohutohu tukatuka RDTSC, kaore e hiahiatia he waea punaha (kaore e hiahiatia e te ako nga mana teitei me te whakaputa i te uara mai i te wa i hangaia ki te PTM). Ma te taunoa, kaore te TSC i te whakahohe na te mea i nga ra o mua kaore tenei puna i aukati i te heke o te waa, i etahi atu tukatuka ka whakatikahia e te rorohiko kia pai ake ai nga korero. E ai ki tetahi miihini mohio ki te whakawhanaketanga tukatuka, ko te mataku mo nga huringa o te waa ka whakamahi i te TSC kua roa kua horekau, a i roto i nga miihini hou ka taea e tenei puna te whakaputa panui pumau mo nga tau.

Ko te huri i nga kaiwhakarato whakangao i Netflix ki te puna TSC i hua mai i te 43% te whakahekenga o te tuhi tuhi me te whakatutuki i nga hua ma te whakamahi i te Ubuntu e 4 nga wa tere atu i nga whirihoranga e whakahaere ana i te CentOS me te puna wa "xen". Ko nga hua o te ako i whakawhitia ki Amazon, i taunakihia mana te whakamahi i te puna wa TSC taunoa i roto i nga taiao AWS EC2 i runga i te Xen hypervisor (ka mau tonu te kvm-clock i roto i nga taiao i runga i te Nitro hypervisor).

Source: opennet.ru

Tāpiri i te kōrero