Dhâainmich Yandex gun deach am pasgan innealan Perforator aca fhoillseachadh le stòr fosgailte, a chaidh a dhealbhadh airson cruinneachadh leantainneach de mheatrachdan mionaideach le fiosrachadh mu choileanadh thagraidhean agus air a dhealbhadh airson a chleachdadh ann an cruinneachaidhean mòra agus ionadan dĂ ta. Leigidh am pasgan innealan le mion-sgrĂšdadh fĂŹor-Ăšine air coileanadh thagraidhean, riarachadh ghoireasan, agus Linux-frithealaichean agus comharraich na h-aplacaidean as dian air goireasan. Tha an còd sgrĂŹobhte ann an C++ agus air a sgaoileadh fo chead MIT (tha prògraman eBPF fo chead GPLv2).
Tha Yandex Perforator air a chleachdadh ann an cruinneachadh de chòrr is 10 nod agus thathar ga chleachdadh gus cĂšisean coileanaidh a chomharrachadh agus a chĂ radh thar diofar sheirbheisean, nam measg Yandex Search agus Yandex Advertising. Thathas air creideas a thoirt do Perforator airson bacadh a chur air cnapan-starra agus coimpiutaireachd dian-ghoireasan a bharrachadh, aâ leigeil le Yandex na cosgaisean aige a lughdachadh 20%. frithealaichean.
Comasan tagraidh:
- Aâ cleachdadh fo-shiostam eithne eBPF agus an perf_events API gus fiosrachadh a chruinneachadh mu obrachadh phĂ irtean eithne Linux agus aplacaidean Ă ite-cleachdaidh. Tha cosgais co-cheangailte ri cruinneachadh mheatrach ag adhbhrachadh peanas coileanaidh de mu 0.1%. Ri fhaighinn air siostaman ailtireachd x86-64 a-mhĂ in.
- Stòradh pròifil coileanaidh scalable. Tha an ClickHouse DBMS air a chleachdadh gus meata-dà ta pròifil a stòradh, tha PostgreSQL air a chleachdadh gus meata-dà ta dà -chà nanach a stòradh, agus tha stòradh sam bith a tha co-chosmhail ri Amazon S3 air a chleachdadh gus pròifilean amh agus dà ta binary a stòradh.
- Comas an stac gairm a leigeil a-mach gun a bhith agad ri samhlaidhean deasbaid a chomasachadh agus an roghainn -fno-omit-frame-pointer nuair a bhios tu aâ togail phrògraman (a âsĂ bhaladh puing don fhrèam stac anns a bheil na seòlaidhean tilleadh agus caochladairean gnĂŹomh).
- CĂ nan ceist agus eadar-aghaidh lĂŹn ri fhaighinn airson luchd CPU a sgrĂšdadh nuair a bhios iad aâ ruith thagraidhean.

- Thathas aâ cleachdadh fradharc stoidhle FlameGraph gus botail a mheasadh gu fradharcach.

- Comas air pròiseactan a phròifil aâ cleachdadh diofar chĂ nanan agus amannan ruith gun a bhith ag atharrachadh pròiseasan togail no ag ath-chruinneachadh phrògraman. Tha taic airson na cĂ nanan prògramaidh C ++, Go, Rust, Java, Python agus JavaScript/Node.js air an ainmeachadh.
- An comas pròifilean sPGO a ghineadh airson co-chruinneachadh thagraidhean às deidh sin le optimizations stèidhichte air toraidhean pròifil còd (PGO - optimization treòraichte le pròifil), a leigeas le còd nas fheà rr a ghineadh stèidhichte air mion-sgrÚdadh air feartan coileanadh prògram.
- Taic airson a chleachdadh mar Ă ite an inneal-taic perf ann an Linux.
- Cuir fèin-ghluasad air cleachdadh ann an cruinneachaidhean stèidhichte air Kubernetes. Bidh gach nĂłd aâ ruith Ă idseant sònraichte a bhios aâ tional, aâ cruinneachadh, aâ teannachadh, agus aâ sgaoileadh dĂ ta coileanaidh. Tha dĂ ta air a ghluasad le riochdairean ann an cruth a tha co-chosmhail ri pprof tro gRPC gu meanbh-sheirbheisean le uallach airson a bhith aâ tional, aâ stòradh, aâ mion-sgrĂšdadh, aâ samhlachadh (sheòlaidhean a thionndadh gu ainmean gnĂŹomh agus dreuchdan ann an còd) agus aâ giullachd phròifilean agus so-ghnĂŹomhan (riatanach airson stac a leigeil ma sgaoil).


Source: fosgailtenet.ru




