Kuwunika kwa magwiridwe antchito a nthawi yomwe yasankhidwa mudongosolo

Brendan Gregg, m'modzi mwa omwe amapanga DTrace, yemwe pakali pano akupanga zida zowunikira magwiridwe antchito a BPF mu Linux kernel, adafotokoza mwachidule zomwe adapeza pakuwunika zovuta zomwe Netflix adakumana nazo posamutsa Cassandra DBMS kuchokera ku CentOS kupita ku Ubuntu. mtambo wa Amazon EC2 wozikidwa pa Xen. Pambuyo pa kusamuka, katundu wa CPU adakula ndi 30% ndipo kuchedwa panthawi yolemba kumawonjezeka ndi pafupifupi kuchuluka komweko. Zotsatira zake, magwiridwe antchito omwe amafunsira mwachangu zambiri za nthawi zimatengera nthawi yeniyeni yomwe yasankhidwa mudongosolo.

Poyamba, chifukwa chakuchepa kwa magwiridwe antchito sichinali chodziwikiratu ndipo matendawa adayamba ndikuyang'anira momwe angayendetsere nthawi zonse kapena kuyambitsa njira zogwiritsa ntchito zida zapamwamba pogwiritsa ntchito zida zapamwamba komanso za execsnoop. Koma zonse zimasonyeza kuti kugwiritsidwa ntchito kwazinthu kunakula makamaka mu Cassandra DBMS, yolembedwa mu Java. Poyerekeza ma metrics a mbiri ya njira ziwiri za Cassandra zomwe zimayendera limodzi pa CentOS ndi Ubuntu, pokonza mafunso omwewo, zikuwonetsa kuti pafupifupi 32% ya nthawi yonse yomwe idagwiritsidwa ntchito kuyimba os::javaTimeMillis(), yomwe imagwiritsidwa ntchito kupeza zambiri za nthawi yomwe ilipo. .

Pambuyo pa izi, kuyesa kunachitika momwe pulogalamu yosavuta ya Java inalembedwa yomwe imatchedwa System.currentTimeMillis () njira zana miliyoni mu lupu. Kuyendetsa pulogalamuyi kunawonetsa kuti zidatenga masekondi a 13 kuti amalize pa CentOS, komanso pafupifupi masekondi 68 pa Ubuntu, i.e. 5 nthawi pang'onopang'ono. Pulogalamu yofananayo inalembedwa mu C yomwe imatcha gettimeofday () ntchito nthawi miliyoni miliyoni, koma itachitidwa, zotsatira zofanana zinapezedwa.

Popeza zinaonekeratu kuti gwero la vuto anali ntchito kubwerera panopa, chidwi anatembenukira kwa kusintha zizindikiro posankha magwero osiyanasiyana a nthawi yeniyeni mu dongosolo. Potengera zomwe zili mu "/sys/devices/system/clocksource/clocksource0/current_clocksource", chowerengera cha "xen" chinagwiritsidwa ntchito mwachisawawa poyendetsa Linux mu dongosolo la alendo. Pambuyo posintha gwero la nthawi kukhala "tsc", nthawi yoyeserera ku Ubuntu idatsika kuchokera ku 68 mpaka masekondi 3.3, i.e. idakhala nthawi 20 mwachangu. Kuphatikiza apo, kuyesa kwa magwiridwe antchito a nthawi ya kvm-clock kudachitika, komwe kunawonetsa kuchedwetsa ndi 20% poyerekeza ndi TSC. $ mphaka /sys/devices/system/clocksource/clocksource0/available_clocksource xen tsc hpet acpi_pm $ mphaka /sys/devices/system/clocksource/clocksource0/current_clocksource xen $ nthawi java TimeBench weniweni 1m8.300s wosuta 0m38.337s 0s 29.875 $s sy. echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ nthawi java TimeBench weniweni 0m3.370s wosuta 0m3.353s sys 0m0.026s

Kuti mupeze nthawi yosankha gwero la TSC, malangizo a purosesa a RDTSC amagwiritsidwa ntchito, kuchitidwa komwe sikufuna kuyimba foni (malangizowo safuna mwayi wapamwamba ndipo amatulutsa mtengo kuchokera pagawo lanthawi yomangidwa mu CPU). Mwachikhazikitso, TSC sichimatsegulidwa chifukwa m'masiku akale gwero ili silinaphatikizepo pang'onopang'ono nthawi, yomwe m'mapulosesa ena amasinthidwa ndi mapulogalamu kuti akwaniritse zowerengera zolondola. Malinga ndi injiniya wodziwa bwino za chitukuko cha purosesa, mantha okhudza kusintha kwa nthawi mukamagwiritsa ntchito TSC akhala abodza kwa nthawi yayitali ndipo m'mapurosesa amakono gwero ili limatha kuwerengera mokhazikika kwa zaka zambiri.

Kusintha ma seva opangira pa Netflix kupita ku gwero la TSC kudachepetsa kuchepa kwa 43% pakulemba latency ndikupeza zotsatira zogwiritsa ntchito Ubuntu zomwe zinali mwachangu nthawi 4 kuposa masinthidwe omwe amayendetsa CentOS yokhala ndi nthawi ya "xen". Zotsatira za kafukufukuyu zidasamutsidwa ku Amazon, yomwe idalimbikitsa mwalamulo kugwiritsa ntchito gwero la nthawi ya TSC m'malo a AWS EC2 kutengera Xen hypervisor (kvm-clock imakhalabe yovomerezeka m'malo otengera Nitro hypervisor).

Source: opennet.ru

Kuwonjezera ndemanga