Yandex imetangaza kutolewa kwa chanzo huria cha zana ya zana za Perforator, iliyoundwa kwa ajili ya ukusanyaji endelevu wa vipimo vya kina na taarifa kuhusu uendeshaji wa programu na zinazokusudiwa kutumika katika makundi makubwa na vituo vya data. Zana ya zana hukuruhusu kuchambua utendakazi wa programu kwa wakati halisi, kutathmini usambazaji wa rasilimali kwenye seva za Linux na kutambua programu zinazotumia rasilimali nyingi zaidi. Nambari hiyo imeandikwa kwa C++ na kusambazwa chini ya leseni ya MIT (programu za eBPF 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:
- Kwa kutumia mfumo mdogo wa eBPF kernel na API ya perf_events kukusanya taarifa kuhusu utendakazi wa vijenzi vya Linux kernel na programu-tumizi za nafasi ya mtumiaji. Uhasibu wa kukusanya vipimo husababisha adhabu ya utendakazi ya takriban 0.1%. Mifumo iliyo na usanifu wa x86-64 pekee ndiyo inayotumika.
- 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 mnyororo wa zana kwenye 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




