Onínọmbà ti ipa iṣẹ ti orisun akoko ti a yan ninu eto naa

Brendan Gregg, ọkan ninu awọn Difelopa ti DTrace, ti o n ṣe idagbasoke lọwọlọwọ awọn irinṣẹ itupalẹ iṣẹ ṣiṣe ti o da lori BPF ni ekuro Linux, ṣe akopọ iriri ti o gba lati itupalẹ awọn iṣoro iṣẹ ṣiṣe ti Netflix pade nigbati o nlọ Cassandra DBMS lati CentOS si Ubuntu. Amazon EC2 awọsanma da lori Xen. Lẹhin ijira, fifuye Sipiyu pọ nipasẹ 30% ati awọn idaduro lakoko awọn iṣẹ kikọ pọ si nipa iwọn kanna. Bi o ti wa ni jade, iṣẹ awọn ohun elo ti o lekoko beere alaye akoko pupọ da lori orisun akoko gangan ti a yan ninu eto naa.

Ni akọkọ, idi fun idinku ninu iṣẹ ko han gbangba ati pe ayẹwo naa bẹrẹ pẹlu mimojuto ipa ti o ṣeeṣe ti ṣiṣe nigbagbogbo tabi awọn ilana eto itusilẹ awọn orisun lorekore nipa lilo awọn ohun elo oke ati awọn ohun elo execsnoop. Ṣugbọn ohun gbogbo fihan pe lilo awọn orisun ti pọ si ni pataki ni Cassandra DBMS, ti a kọ ni Java. Ifiwera awọn metiriki profaili ti awọn ilana Cassandra meji ti n ṣiṣẹ ni afiwe lori CentOS ati Ubuntu, ṣiṣe awọn ibeere kanna, fihan pe nipa 32% ti akoko lapapọ ni a lo pipe os:: javaTimeMillis (), eyiti a lo lati gba alaye nipa akoko lọwọlọwọ. .

Lẹhin eyi, a ṣe idanwo kan ninu eyiti a ti kọ ohun elo Java ti o rọrun ti a pe ni ọna System.currentTimeMillis () ni igba ọgọrun miliọnu kan. Ṣiṣe ohun elo naa fihan pe o gba iṣẹju-aaya 13 lati pari lori CentOS, ati nipa awọn aaya 68 lori Ubuntu, i.e. 5 igba losokepupo. Eto ti o jọra ni a kọ ni C ti o pe iṣẹ gettimeofday () ni awọn igba miliọnu ọgọrun, ṣugbọn nigba ṣiṣe, awọn abajade kanna ni a gba.

Niwọn igba ti o ti han gbangba pe orisun iṣoro naa jẹ iṣẹ ti ipadabọ akoko lọwọlọwọ, akiyesi yipada si awọn ayipada ninu awọn afihan nigbati o yan awọn orisun oriṣiriṣi ti akoko gangan ninu eto naa. Ni idajọ nipasẹ awọn akoonu ti “/ sys/awọn ẹrọ/eto/orisun aago/clocksource0/current_clocksource”, aago “xen” ni a lo nipasẹ aiyipada nigbati o nṣiṣẹ Linux ni eto alejo. Lẹhin iyipada orisun akoko si "tsc", akoko ipaniyan ti ohun elo idanwo ni Ubuntu dinku lati 68 si awọn aaya 3.3, i.e. o di 20 igba yiyara. Ni afikun, idanwo iṣẹ kan ti orisun akoko kvm-aago ni a ṣe, eyiti o fihan ilosoke ninu awọn idaduro nipasẹ 20% ni akawe si TSC. $ ologbo /sys/awọn ẹrọ/system/clocksource/clocksource0/available_clocksource xen tsc hpet acpi_pm $ cat /sys/devices/system/clocksource/clocksource0/current_clocksource xen $ akoko java TimeBench gidi 1m8.300s olumulo 0m38.337s 0m29.875s $sys.0 iwoyi tsc> /sys/awọn ẹrọ/eto/orisun aago/clocksource0/current_clocksource $ akoko java TimeBench gidi 3.370m0s olumulo 3.353m0s sys 0.026mXNUMXs

Lati gba akoko nigbati o ba yan orisun TSC kan, ilana ilana ero isise RDTSC ti lo, ipaniyan eyiti ko nilo ipe eto (itọnisọna ko nilo awọn anfani ti o ga ati ṣe agbejade iye kan lati akoko counter ti a ṣe sinu Sipiyu). Nipa aiyipada, TSC ko mu ṣiṣẹ nitori ni awọn ọjọ atijọ orisun yii ko yọkuro yiyọ akoko mimu, eyiti o wa ninu awọn ilana miiran ti ṣatunṣe nipasẹ sọfitiwia lati ṣaṣeyọri awọn kika deede diẹ sii. Gẹgẹbi ẹlẹrọ ti o ṣe amọja ni idagbasoke ero isise, awọn ibẹru nipa awọn iṣipopada akoko nigba lilo TSC ti pẹ ti kii ṣe otitọ ati ninu awọn ilana ode oni orisun yii le ṣe agbejade awọn kika iduroṣinṣin fun awọn ọdun.

Yiyipada awọn olupin iṣelọpọ ni Netflix si orisun TSC kan yorisi idinku 43% ni lairi kikọ ati awọn abajade aṣeyọri nipa lilo Ubuntu ti o jẹ awọn akoko 4 yiyara ju awọn atunto nṣiṣẹ CentOS pẹlu orisun akoko “xen”. Awọn abajade iwadi naa ni a gbe lọ si Amazon, eyiti o ṣe iṣeduro ni ifowosi lilo orisun akoko TSC aiyipada ni awọn agbegbe AWS EC2 ti o da lori hypervisor Xen (kvm-clock wa ni iṣeduro ni awọn agbegbe ti o da lori Nitro hypervisor).

orisun: opennet.ru

Fi ọrọìwòye kun