Analiz de enpak pèfòmans sous tan chwazi nan sistèm nan

Brendan Gregg, youn nan devlopè DTrace, ki aktyèlman ap devlope zouti analiz pèfòmans ki baze sou BPF nan nwayo Linux la, te rezime eksperyans yo te genyen nan analize pwoblèm pèfòmans Netflix te rankontre lè l te migrasyon Cassandra DBMS soti nan CentOS rive nan Ubuntu. Amazon EC2 nwaj la ki baze sou Xen. Apre migrasyon an, chaj CPU a ogmante pa 30% ak reta yo pandan operasyon ekri yo ogmante pa apeprè menm kantite lajan an. Kòm li vire soti, pèfòmans aplikasyon yo ki entansif mande enfòmasyon sou tan anpil depann sou sous la tan egzak chwazi nan sistèm nan.

Okòmansman, rezon ki fè yo diminisyon nan pèfòmans pa t evidan ak dyagnostik la te kòmanse ak siveyans enpak posib nan toujou ap kouri oswa detanzantan te lanse pwosesis sistèm ki entansif resous lè l sèvi avèk sèvis piblik tèt yo ak execsnoop. Men, tout bagay te endike ke konsomasyon resous te ogmante espesyalman nan Cassandra DBMS, ekri nan Java. Konpare mezi pwofil de pwosesis Cassandra k ap kouri an paralèl sou CentOS ak Ubuntu, trete menm demann yo, te montre ke apeprè 32% nan tan total la te pase rele os::javaTimeMillis(), ki itilize pou jwenn enfòmasyon sou tan aktyèl la. .

Apre sa, yo te fè yon eksperyans kote yo te ekri yon senp aplikasyon Java ki rele metòd System.currentTimeMillis() yon santèn milyon fwa nan yon bouk. Kouri aplikasyon an te montre ke li te pran 13 segonn pou konplete sou CentOS, ak apeprè 68 segonn sou Ubuntu, i.e. 5 fwa pi dousman. Yo te ekri yon pwogram menm jan an nan C ki te rele fonksyon gettimeofday() yon santèn milyon fwa, men lè egzekite, rezilta menm jan yo te jwenn.

Depi li te vin klè ke sous la nan pwoblèm nan se fonksyon an nan retounen tan aktyèl la, atansyon vire sou chanjman nan endikatè lè w ap chwazi diferan sous nan tan egzak nan sistèm nan. Jije pa sa ki nan "/sys/devices/system/clocksource/clocksource0/current_clocksource", "xen" revèy la te itilize pa default lè w ap kouri Linux nan sistèm envite a. Apre yo fin chanje sous tan an nan "tsc", tan ekzekisyon aplikasyon tès la nan Ubuntu diminye soti nan 68 a 3.3 segonn, i.e. li te vin 20 fwa pi vit. Anplis de sa, yo te fè yon tès pèfòmans nan sous tan kvm-revèy la, ki te montre yon ogmantasyon nan reta pa 20% konpare ak TSC. $ cat /sys/devices/system/clocksource/clocksource0/available_clocksource xen tsc hpet acpi_pm $ cat /sys/devices/system/clocksource/clocksource0/current_clocksource xen $ tan java TimeBench reyèl 1m8.300s itilizatè 0m38.337s $ sys. echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ tan java TimeBench reyèl 29.875m0s itilizatè 0m3.370s sys 0m3.353s

Pou jwenn tan lè w ap chwazi yon sous TSC, yo itilize enstriksyon processeur RDTSC la, ki pa egzije yon apèl sistèm (ansèyman an pa mande privilèj elve epi li pwodui yon valè ki soti nan kontè tan ki entegre nan CPU a). Pa defo, TSC pa aktive paske nan ansyen tan sous sa a pa t 'eskli gradyèl flote tan, ki nan lòt processeurs ajiste pa lojisyèl reyalize lekti pi egzak. Dapre yon enjenyè ki espesyalize nan devlopman processeur, laperèz sou chanjman tan lè w ap itilize TSC depi lontan pa vre epi nan processeurs modèn sous sa a ka pwodwi lekti ki estab pou ane.

Chanje sèvè pwodiksyon nan Netflix nan yon sous TSC te lakòz yon rediksyon 43% nan latans ekri ak reyalize rezilta lè l sèvi avèk Ubuntu ki te 4 fwa pi vit pase konfigirasyon kouri CentOS ak yon sous tan "xen". Rezilta etid la te transfere nan Amazon, ki ofisyèlman rekòmande pou itilize sous TSC defo a nan anviwònman AWS EC2 ki baze sou ipèvizè Xen (kvm-revèy rete rekòmande nan anviwònman ki baze sou ipèvizè Nitro).

Sous: opennet.ru

Add nouvo kòmantè