Tha Yandex air ainmeachadh gun tèid an inneal Perforator fhoillseachadh le còd fosgailte, air a dhealbhadh airson cruinneachadh leantainneach de mheatairean mionaideach le fiosrachadh mu obrachadh thagraidhean agus an dùil a chleachdadh ann an cruinneachaidhean mòra agus ionadan dàta. Leigidh an inneal leat mion-sgrùdadh a dhèanamh air gnìomhachd thagraidhean ann an àm fìor, measadh a dhèanamh air cuairteachadh ghoireasan air frithealaichean Linux agus na tagraidhean as dian ghoireasan a chomharrachadh. Tha an còd sgrìobhte ann an C ++ agus air a chuairteachadh fo chead MIT (prògraman eBPF fo 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 kernel eBPF agus an perf_events API gus fiosrachadh a chruinneachadh mu obrachadh phàirtean kernel Linux agus tagraidhean àite-cleachdaidh. Mar thoradh air an àrdachadh ann an cruinneachadh meatrach thig peanas coileanaidh timcheall air 0.1%. Chan eil ach siostaman le ailtireachd x86-64 a’ faighinn taic.
- 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 an àite an inneal perf air 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




