Famakafakana ny fiantraikan'ny zava-bita amin'ny loharanon'ny fotoana voafantina ao amin'ny rafitra

Brendan Gregg, iray amin'ireo mpamorona ny DTrace, izay mamolavola fitaovana famakafakana fampisehoana mifototra amin'ny BPF amin'ny kernel Linux, dia namintina ny traikefa azo tamin'ny famakafakana ireo olana momba ny fampisehoana izay hitan'ny Netflix rehefa nifindra monina ny Cassandra DBMS avy amin'ny CentOS mankany Ubuntu. ny rahona Amazon EC2 miorina amin'ny Xen. Taorian'ny fifindra-monina dia nitombo 30% ny enta-mavesatra CPU ary nitombo mitovy amin'izany ny fahatarana mandritra ny asa fanoratana. Raha ny fantatra dia miankina betsaka amin'ny loharanon'ny fotoana voafantina ao amin'ny rafitra ny fampandehanana ny rindranasa izay mangataka fampandrenesana momba ny fotoana.

Tamin'ny voalohany, tsy hita mazava ny anton'ny fihenan'ny fampisehoana ary ny fitiliana dia nanomboka tamin'ny fanaraha-maso ny mety ho fiantraikan'ny fandehanana tsy tapaka na natomboka tsindraindray ny fizotran'ny rafitra misy loharanon-karena amin'ny fampiasana ny fitaovana ambony sy execsnoop. Saingy ny zava-drehetra dia nanambara fa nitombo manokana ny fanjifana loharanon-karena tao amin'ny Cassandra DBMS, nosoratana tamin'ny Java. Ny fampitahana ny mari-pandrefesana momba ny fizotran'ny Cassandra roa mandeha mifanitsy amin'ny CentOS sy Ubuntu, amin'ny fanodinana ireo fanontaniana mitovy, dia mampiseho fa manodidina ny 32% amin'ny fotoana rehetra no lany niantsoana os ::javaTimeMillis(), izay ampiasaina hahazoana vaovao momba ny fotoana ankehitriny. .

Taorian'izany dia nisy andrana natao izay nanoratana fampiharana Java tsotra izay antsoina hoe System.currentTimeMillis() fomba in-jato tapitrisa in-13. Ny fampandehanana ny rindranasa dia nampiseho fa 68 segondra vao vita amin'ny CentOS, ary 5 segondra eo ho eo amin'ny Ubuntu, i.e. in-XNUMX miadana kokoa. Nisy fandaharana mitovy amin'izany nosoratana tao amin'ny C izay antsoina hoe gettimeofday() miasa in-jato tapitrisa, saingy rehefa novonoina dia nahazo valiny mitovy.

Satria nanjary nazava fa ny loharanon'ny olana dia ny famerenana ny fotoana ankehitriny, ny saina dia nitodika tany amin'ny fiovan'ny tondro rehefa misafidy loharano samihafa amin'ny fotoana marina ao amin'ny rafitra. Raha jerena amin'ny votoatin'ny "/sys/devices/system/clocksource/clocksource0/current_clocksource", ny fameram-potoana "xen" dia nampiasaina tamin'ny alΓ lan'ny fandefasana Linux ao amin'ny rafitra vahiny. Taorian'ny nanova ny loharanon'ny fotoana ho "tsc", dia nihena avy amin'ny 68 ka hatramin'ny 3.3 segondra ny fotoana fanatanterahana ny fampiharana fitsapana ao Ubuntu, izany hoe. lasa in-20 haingana kokoa izany. Fanampin'izany, nisy ny fitsapana ny fahombiazan'ny loharanon'ny famantaranandro kvm, izay mampiseho fitomboan'ny fahatarana amin'ny 20% raha oharina amin'ny 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 tena 1m8.300s mpampiasa 0m38.337s $ sy. echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource $ time java TimeBench tena 29.875m0s mpampiasa 0m3.370s sys 0m3.353s

Mba hahazoana ny fotoana hisafidianana loharano TSC dia ampiasaina ny torolΓ lana processeur RDTSC, ny fanatanterahana azy dia tsy mitaky antso an-tariby (ny torolalana dia tsy mitaky tombontsoa ambony ary mamokatra sanda avy amin'ny counter time naorina ao amin'ny CPU). Amin'ny alΓ lan'ny default, ny TSC dia tsy mavitrika satria tamin'ny andro taloha dia tsy nanaisotra ny fihodinam-potoana miandalana io loharano io, izay ao amin'ny processeur hafa dia amboarina amin'ny alΓ lan'ny rindrambaiko mba hahazoana famakiana marina kokoa. Araka ny filazan'ny injeniera iray manam-pahaizana manokana amin'ny fampandrosoana ny processeur, ny tahotra momba ny fiovan'ny fotoana rehefa mampiasa TSC dia efa ela no tsy marina ary amin'ny processeur maoderina ity loharano ity dia afaka mamoaka famakiana maharitra mandritra ny taona maro.

Ny famadihana ny lohamilina famokarana ao amin'ny Netflix amin'ny loharano TSC dia nahatonga ny fihenan'ny 43% amin'ny faharetan'ny fanoratana ary nahazo vokatra tamin'ny fampiasana Ubuntu izay avo 4 heny noho ny fanamafisana ny CentOS miaraka amin'ny loharanon'ny fotoana "xen". Nafindra tany Amazon ny valin'ny fanadihadiana, izay nanoro tamin'ny fomba ofisialy ny fampiasana ny loharanon'ny fotoana TSC default ao amin'ny tontolo AWS EC2 mifototra amin'ny Xen hypervisor (ny kvm-clock dia mijanona ao amin'ny tontolo mifototra amin'ny Nitro hypervisor).

Source: opennet.ru

Add a comment