Analyse vun der Leeschtung Impakt vun der Zäit Quell am System ausgewielt

De Brendan Gregg, ee vun den Entwéckler vun DTrace, deen am Moment BPF-baséiert Leeschtungsanalyse-Tools am Linux Kernel entwéckelt, huet d'Erfahrung zesummegefaasst, déi aus der Analyse vun de Leeschtungsprobleemer gewonnen goufen, déi Netflix begéint huet beim Migratioun vum Cassandra DBMS vun CentOS op Ubuntu. d'Amazon EC2 Cloud baséiert op Xen. No der Migratioun ass d'CPU Belaaschtung ëm 30% eropgaang an d'Verzögerungen während Schreifoperatioune sinn ëm ongeféier déiselwecht Quantitéit eropgaang. Wéi et sech erausstellt, hänkt d'Performance vun Uwendungen, déi intensiv Zäitinformatioun ufroen, ganz vun der exakter Zäitquell of, déi am System ausgewielt gëtt.

Am Ufank war de Grond fir d'Reduzéierung vun der Leeschtung net offensichtlech an d'Diagnos huet ugefaang mat der Iwwerwaachung vum méiglechen Impakt vu stänneg lafenden oder periodesch lancéiert Ressourceintensiv Systemprozesser mat den Top an Execsnoop Utilities. Awer alles huet uginn datt de Ressourceverbrauch speziell an der Cassandra DBMS eropgaang ass, geschriwwen op Java. Vergläicht d'Profiléierungsmetriken vun zwee Cassandra Prozesser déi parallel op CentOS an Ubuntu lafen, déiselwecht Ufroe veraarbecht hunn, huet gewisen datt ongeféier 32% vun der Gesamtzäit verbruecht gouf fir os :: javaTimeMillis() ze ruffen, wat benotzt gëtt fir Informatioun iwwer déi aktuell Zäit ze kréien .

Duerno gouf en Experiment gemaach an deem eng einfach Java-Applikatioun geschriwwe gouf, déi d'Method System.currentTimeMillis() honnert Millioune Mol an enger Loop genannt huet. D'Uwendung vun der Applikatioun huet gewisen datt et 13 Sekonnen gedauert huet fir op CentOS ze kompletéieren, an ongeféier 68 Sekonnen op Ubuntu, d.h. 5 mol méi lues. En ähnleche Programm gouf am C geschriwwen deen d'gettimeofday() Funktioun honnert Millioune Mol genannt huet, awer wann se ausgefouert goufen, goufen ähnlech Resultater kritt.

Zënter datt et kloer gouf datt d'Quell vum Problem d'Funktioun vun der Retour vun der aktueller Zäit war, huet d'Opmierksamkeet op d'Verännerunge vun den Indikatoren gewiesselt wann Dir verschidde Quelle vun der exakter Zäit am System auswielen. Nom Inhalt vun "/sys/devices/system/clocksource/clocksource0/current_clocksource" beurteelen, gouf den "xen" Timer als Standard benotzt wann Dir Linux am Gaaschtsystem leeft. Nodeems d'Zäitquell op "tsc" geännert gouf, ass d'Ausféierungszäit vun der Testapplikatioun an Ubuntu vun 68 op 3.3 Sekonnen erofgaang, d.h. et gouf 20 mol méi séier. Zousätzlech gouf e Leeschtungstest vun der kvm-Auer Zäitquell duerchgefouert, déi eng Erhéijung vun de Verspéidungen ëm 20% am Verglach zum TSC gewisen huet. $ cat /sys/devices/system/clocksource/clocksource0/available_clocksource xen tsc hpet acpi_pm $ cat /sys/devices/system/clocksource/clocksource0/current_clocksource xen $ Zäit java TimeBench real 1m8.300s Benotzer 0m38.337s $0ms29.875 echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ Zäit java TimeBench real 0m3.370s Benotzer 0m3.353s sys 0m0.026s

Fir d'Zäit ze kréien wann Dir eng TSC Quell auswielt, gëtt d'RDTSC Prozessorinstruktioun benotzt, d'Ausféierung vun deem net e Systemruff erfuerdert (d'Instruktioun erfuerdert keng erhiefte Privilegien a produzéiert e Wäert vum Zäitzähler an der CPU gebaut). Par défaut ass TSC net aktivéiert well an den alen Deeg dës Quell net graduell Zäitdrift ausgeschloss huet, wat an anere Prozessoren duerch Software ugepasst gëtt fir méi genee Liesungen z'erreechen. Laut engem Ingenieur spezialiséiert op Prozessorentwécklung, Ängscht iwwer Zäitverschiebungen beim Benotze vun TSC sinn laang net wouer an a modernen Prozessoren kann dës Quell fir Joer stabil Liesungen produzéieren.

D'Schalten vun Produktiounsserver bei Netflix op eng TSC Quell huet zu enger 43% Reduktioun vun der Schreiflatenz gefouert an erreecht Resultater mat Ubuntu déi 4 Mol méi séier waren wéi Konfiguratiounen déi CentOS mat enger "xen" Zäitquell lafen. D'Resultater vun der Studie goufen op Amazon transferéiert, déi offiziell recommandéiert d'Standard TSC Zäitquell an AWS EC2 Ëmfeld ze benotzen baséiert op dem Xen Hypervisor (kvm-Auer bleift recommandéiert an Ëmfeld baséiert op dem Nitro Hypervisor).

Source: opennet.ru

Setzt e Commentaire