Yandex je otvorio Perforator, komplet alata za profilisanje aplikacija

Yandex je najavio izdanje open source kompleta alata Perforator, dizajniranog za kontinuirano prikupljanje detaljnih metričkih podataka s informacijama o radu aplikacija i namijenjenog za korištenje u velikim klasterima i podatkovnim centrima. Komplet alata vam omogućava da analizirate rad aplikacija u realnom vremenu, procenite distribuciju resursa na Linux serverima i identifikujete aplikacije koje zahtevaju najviše resursa. Kod je napisan u C++ i distribuiran pod MIT licencom (eBPF programi pod GPLv2).

В Яндекс Perforator развёрнут в кластере, насчитывающем более 10 тысяч узлов, и применяется для выявления и исправления проблем с производительностью в различных сервисах, включая Яндекс Поиск и Яндекс Рекламу. Отмечается, что Perforator способствовал устранению узких мест и оптимизации ресурсоёмких вычислений, благодаря чему компании Яндекс удалось на 20% снизить расходы на serveri.

Zatražene sposobnosti:

  • Korištenje podsistema eBPF kernela i perf_events API-ja za prikupljanje informacija o radu komponenti jezgre Linuxa i aplikacija korisničkog prostora. Režijski troškovi prikupljanja metrike rezultiraju kaznom učinka od približno 0.1%. Podržani su samo sistemi sa x86-64 arhitekturom.
  • Skalabilna pohrana profila performansi. ClickHouse DBMS se koristi za pohranjivanje metapodataka profila, PostgreSQL se koristi za pohranu binarnih metapodataka, a bilo koja pohrana kompatibilna sa Amazon S3 koristi se za pohranu sirovih profila i binarnih podataka.
  • Mogućnost odmotavanja steka poziva bez potrebe za omogućavanjem simbola za otklanjanje grešaka i opcije -fno-omit-frame-pointer prilikom izgradnje programa (čuva pokazivač na okvir steka koji sadrži povratne adrese i funkcionalne varijable).
  • Dostupnost jezika upita i web sučelja za provjeru opterećenja CPU-a prilikom pokretanja aplikacija.
     Yandex je otvorio Perforator, komplet alata za profilisanje aplikacija
  • FlameGraph stil vizualizacija se koristi za vizualnu procjenu uskih grla.
     Yandex je otvorio Perforator, komplet alata za profilisanje aplikacija
  • Sposobnost profilisanja projekata koristeći različite jezike i vremena izvođenja bez promjene procesa izgradnje ili ponovnog kompajliranja programa. Deklarisana je podrška za programske jezike C++, Go, Rust, Java, Python i JavaScript/Node.js.
  • Mogućnost generisanja sPGO profila za naknadno sklapanje aplikacija sa optimizacijama na osnovu rezultata profilisanja koda (PGO - Profile-guided optimization), koji omogućavaju generisanje optimalnijeg koda na osnovu analize karakteristika izvršavanja programa.
  • Podrška za korištenje kao zamjena za perf toolchain na Linuxu.
  • Automatizirajte implementaciju u klasterima zasnovanim na Kubernetesu. Svaki čvor pokreće namjenskog agenta koji prikuplja, agregira, komprimuje i prenosi podatke o performansama. Agenti prenose podatke u formatu kompatibilnom s pprof-om preko gRPC mikroservisima odgovornim za prikupljanje, pohranjivanje, analizu, simboliziranje (konvertiranje adresa u nazive funkcija i pozicije u kodu) i obradu profila i izvršnih datoteka (neophodnih za odmotavanje steka).
     Yandex je otvorio Perforator, komplet alata za profilisanje aplikacija
     Yandex je otvorio Perforator, komplet alata za profilisanje aplikacija

izvor: opennet.ru

Dodajte komentar