Yandex yalengeza za kutulutsidwa kwa gwero lotseguka la zida za Perforator, zopangidwira mosalekeza zosonkhanitsira mwatsatanetsatane ma metric omwe ali ndi chidziwitso chokhudza magwiridwe antchito ndi cholinga chogwiritsidwa ntchito m'magulu akulu ndi malo opangira ma data. Chida chothandizira chimakulolani kuti mufufuze momwe ntchito ikugwiritsidwira ntchito mu nthawi yeniyeni, kuyesa kugawidwa kwazinthu pa ma seva a Linux ndikupeza ntchito zomwe zimagwiritsidwa ntchito kwambiri. Khodiyo idalembedwa mu C++ ndikugawidwa pansi pa layisensi ya MIT (mapulogalamu a eBPF pansi pa GPLv2).
В Яндекс Perforator развёрнут в кластере, насчитывающем более 10 тысяч узлов, и применяется для выявления и исправления проблем с производительностью в различных сервисах, включая Яндекс Поиск и Яндекс Рекламу. Отмечается, что Perforator способствовал устранению узких мест и оптимизации ресурсоёмких вычислений, благодаря чему компании Яндекс удалось на 20% снизить расходы на maseva.
Kuthekera kofunidwa:
- Pogwiritsa ntchito eBPF kernel subsystem ndi perf_events API kusonkhanitsa zambiri za momwe Linux kernel ikuyendera komanso kugwiritsa ntchito malo ogwiritsira ntchito. Kuchuluka kwa ma metrics otolera kumabweretsa chilango chakuchita pafupifupi 0.1%. Machitidwe okha okhala ndi x86-64 zomangamanga ndi omwe amathandizidwa.
- Kusungirako mbiri yowonjezereka. ClickHouse DBMS imagwiritsidwa ntchito kusungira mbiri ya mbiri, PostgreSQL imagwiritsidwa ntchito kusungira metadata ya binary, ndipo kusungirako kulikonse komwe kumagwirizana ndi Amazon S3 kumagwiritsidwa ntchito kusungira mbiri yaiwisi ndi data binary.
- Kutha kumasula zoimbira zoyimba popanda kuyatsa zizindikiritso ndi njira ya -fno-omit-frame-pointer pomanga mapulogalamu (amasunga cholozera pazithunzi zokhala ndi ma adilesi obwerera ndi zosintha zantchito).
- Kupezeka kwa chilankhulo cha mafunso ndi mawonekedwe apaintaneti powunika kuchuluka kwa CPU mukamagwiritsa ntchito.

- Kuwoneka kwa kalembedwe ka FlameGraph kumagwiritsidwa ntchito kuwunika zopinga.

- Kutha kufotokoza mapulojekiti pogwiritsa ntchito zilankhulo zosiyanasiyana ndi nthawi yothamanga popanda kusintha njira zomangira kapena kubwezeretsanso mapulogalamu. Kuthandizira zilankhulo zamapulogalamu C++, Go, Rust, Java, Python ndi JavaScript/Node.js zalengezedwa.
- Kutha kupanga mbiri za sPGO pazophatikiza zotsatizana ndi kukhathamiritsa kutengera zotsatira za mbiri yamakhodi (PGO - Kukhathamiritsa motsogozedwa ndi mbiri), zomwe zimalola kupanga ma code abwino kwambiri kutengera kuwunika kwa magwiridwe antchito.
- Thandizo loti ligwiritsidwe ntchito m'malo mwa zida za perf pa Linux.
- Kutumiza mwachangu m'magulu a Kubernetes. Node iliyonse imakhala ndi wodzipatulira yemwe amasonkhanitsa, kuphatikizira, kukakamiza, ndi kutumiza deta yogwira ntchito. Zambiri zimatumizidwa ndi othandizira mumtundu wogwirizana ndi gRPC kupita ku ma microservices omwe ali ndi udindo wotolera, kusunga, kusanthula, kuyimira (kusintha ma adilesi kukhala mayina ogwirira ntchito ndi maudindo mu code) ndikukonza mbiri ndi zomwe zikuyenera kuchitika (zofunikira pakupumula).


Source: opennet.ru




