Yandex ilitangaza kutolewa kwa zana yake ya Perforator kutoka chanzo huria, iliyoundwa kwa ajili ya ukusanyaji endelevu wa vipimo vya kina vyenye taarifa kuhusu utendaji wa programu na iliyoundwa kwa ajili ya matumizi katika makundi makubwa na vituo vya data. Zana hii inaruhusu uchambuzi wa utendaji wa programu kwa wakati halisi, mgawanyo wa rasilimali, na Linux-seva na kutambua programu zinazotumia rasilimali nyingi zaidi. Msimbo umeandikwa kwa C++ na kusambazwa chini ya leseni ya MIT (programu za eBPF zina leseni chini ya GPLv2).
Yandex Perforator imewekwa katika kundi la nodi zaidi ya 10 na hutumika kutambua na kurekebisha matatizo ya utendaji katika huduma mbalimbali, ikiwa ni pamoja na Utafutaji wa Yandex na Utangazaji wa Yandex. Perforator imepewa sifa ya kuondoa vikwazo na kuboresha kompyuta inayotumia rasilimali nyingi, na kuiwezesha Yandex kupunguza gharama zake kwa 20%. seva.
Uwezo unaodaiwa:
- Kutumia mfumo mdogo wa kernel wa eBPF na API ya perf_events kukusanya taarifa kuhusu uendeshaji wa vipengele vya kernel Linux na programu za nafasi ya mtumiaji. Gharama ya kukusanya vipimo husababisha adhabu ya utendaji ya takriban 0.1%. Inatumika kwenye mifumo ya usanifu wa x86-64 pekee.
- Hifadhi ya wasifu inayoweza kupunguzwa. DBMS ya ClickHouse inatumika kuhifadhi metadata ya wasifu, PostgreSQL inatumika kuhifadhi metadata binary, na hifadhi yoyote inayooana na Amazon S3 inatumika kuhifadhi wasifu mbichi na data binary.
- Uwezo wa kutendua rundo la simu bila kuwasha alama za utatuzi na chaguo la -fno-omit-frame-pointer wakati wa kuunda programu (huhifadhi kielekezi kwenye fremu ya rafu iliyo na anwani za kurejesha na vigeu vya utendakazi).
- Upatikanaji wa lugha ya maswali na kiolesura cha wavuti kwa ajili ya kukagua mzigo wa CPU wakati wa kuendesha programu.

- Taswira ya mtindo wa FlameGraph hutumiwa kutathmini vizuizi kwa macho.

- Uwezo wa kuweka wasifu kwa kutumia lugha tofauti na nyakati za kukimbia bila kubadilisha michakato ya ujenzi au kurejesha programu. Msaada kwa lugha za programu C++, Go, Rust, Java, Python na JavaScript/Node.js imetangazwa.
- Uwezo wa kutoa wasifu wa sPGO kwa mkusanyiko unaofuata wa programu na uboreshaji kulingana na matokeo ya uwekaji wasifu wa msimbo (PGO - Uboreshaji unaoongozwa na Wasifu), ambayo inaruhusu kutoa msimbo bora zaidi kulingana na uchanganuzi wa vipengele vya utekelezaji wa programu.
- Usaidizi wa matumizi kama mbadala wa zana ya perf katika Linux.
- Otomatiki uwekaji katika vikundi vinavyotegemea Kubernetes. Kila nodi huendesha wakala mahususi ambaye hukusanya, kujumlisha, kubana na kusambaza data ya utendaji. Data hutumwa na mawakala katika umbizo linalooana na pprof kupitia gRPC hadi kwa huduma ndogo ndogo zinazohusika na kukusanya, kuhifadhi, kuchanganua, kuashiria (kubadilisha anwani kuwa majina ya utendaji na nafasi katika msimbo) na kuchakata wasifu na utekelezo (muhimu kwa uondoaji wa rafu).


Chanzo: opennet.ru




