Yandex tau tshaj tawm qhov qhib qhov tso tawm ntawm Perforator toolkit, tsim los txuas ntxiv ntawm cov ncauj lus kom ntxaws metrics nrog cov ntaub ntawv hais txog kev ua haujlwm ntawm daim ntawv thov thiab npaj rau siv hauv pawg loj thiab cov chaw khaws ntaub ntawv. Cov cuab yeej tso cai rau koj los tshuaj xyuas kev ua haujlwm ntawm cov ntawv thov hauv lub sijhawm tiag tiag, ntsuas kev faib cov peev txheej ntawm Linux servers thiab txheeb xyuas cov ntawv thov siv ntau tshaj plaws. Cov cai tau sau rau hauv C ++ thiab muab faib raws li MIT daim ntawv tso cai (eBPF cov kev pabcuam hauv qab GPLv2).
Yandex Perforator tau muab tso rau hauv ib pawg ntawm ntau dua 10 nodes thiab siv los txheeb xyuas thiab kho cov teeb meem kev ua tau zoo thoob plaws ntau yam kev pabcuam, suav nrog Yandex Search thiab Yandex Advertising. Perforator tau txais txiaj ntsig los tshem tawm cov teeb meem thiab ua kom zoo dua cov peev txheej siv ntau, ua rau Yandex txo nws cov nqi los ntawm 20%. cov neeg rau zaub mov.
Muaj peev xwm thov tau:
- Siv eBPF kernel subsystem thiab perf_events API los sau cov ntaub ntawv hais txog kev ua haujlwm ntawm Linux ntsiav tshuaj thiab cov neeg siv qhov chaw siv. Cov nyiaj siv ua haujlwm ntawm kev sau cov metrics ua rau raug nplua ntawm kwv yees li 0.1%. Tsuas yog cov tshuab nrog x86-64 architecture tau txais kev txhawb nqa.
- Scalable kev ua tau zoo profile cia. Lub ClickHouse DBMS yog siv los khaws cov profile metadata, PostgreSQL yog siv los khaws binary metadata, thiab txhua qhov chaw cia tau sib xws nrog Amazon S3 yog siv los khaws cov ntaub ntawv nyoos thiab cov ntaub ntawv binary.
- Muaj peev xwm los daws cov kab hu xov tooj yam tsis tas yuav ua kom debug cov cim thiab -fno-omit-frame-pointer kev xaiv thaum tsim cov kev pab cuam (txuag tus taw tes rau pawg ncej uas muaj cov chaw nyob xa rov qab thiab ua haujlwm hloov pauv).
- Muaj cov lus nug thiab lub vev xaib cuam tshuam rau kev tshuaj xyuas CPU load thaum khiav daim ntawv thov.

- FlameGraph style visualization yog siv los ntsuas qhov tsis pom kev.

- Muaj peev xwm ua cov haujlwm profile siv cov lus sib txawv thiab cov sijhawm ua haujlwm yam tsis hloov cov txheej txheem tsim lossis rov ua cov haujlwm. Kev them nyiaj yug rau cov lus programming C ++, Go, Rust, Java, Python thiab JavaScript / Node.js tau tshaj tawm.
- Lub peev xwm los tsim sPGO profiles rau kev sib dhos tom ntej ntawm cov ntawv thov nrog kev ua kom zoo raws li cov txiaj ntsig ntawm cov lej profile (PGO - Profile-guided optimization), uas tso cai rau tsim cov lej zoo dua raws li kev soj ntsuam ntawm cov yam ntxwv ntawm kev ua tiav.
- Kev them nyiaj yug siv los hloov pauv rau perf toolchain ntawm Linux.
- Automate xa mus rau hauv Kubernetes-raws li pawg. Txhua lub node khiav ib tus neeg sawv cev tshwj xeeb uas sau, sib sau ua ke, compresses, thiab xa cov ntaub ntawv ua haujlwm. Cov ntaub ntawv raug xa los ntawm cov neeg ua haujlwm hauv pprof-tshaj hom ntawv ntawm gRPC rau microservices lub luag haujlwm rau kev sau, khaws cia, txheeb xyuas, cim (hloov chaw nyob rau hauv cov npe ua haujlwm thiab cov haujlwm hauv code) thiab ua cov ntaub ntawv thiab ua tiav (tsim nyog rau pawg unwinding).


Tau qhov twg los: opennet.ru




