Yandex ilovalarni profillash uchun Perforator asboblar to'plamini ochdi

Yandex oʻzining Perforator asboblar toʻplamining ochiq kodli versiyasini eʼlon qildi, u ilovalarning ishlashi haqidagi maʼlumotlar bilan batafsil koʻrsatkichlarni uzluksiz toʻplash uchun moʻljallangan va yirik klasterlar va maʼlumotlar markazlarida foydalanish uchun moʻljallangan. Asboblar toʻplami ilovalarning ishlashini, resurslarni taqsimlashni va boshqalarni real vaqt rejimida tahlil qilish imkonini beradi. Linux-serverlar va eng ko'p resurs talab qiladigan ilovalarni aniqlaydi. Kod C++ tilida yozilgan va MIT litsenziyasi ostida tarqatilgan (eBPF dasturlari GPLv2 litsenziyasi ostida litsenziyalangan).

Yandex Perforator 10 000 dan ortiq tugunlardan iborat klasterda joylashtirilgan va Yandex Search va Yandex Advertising kabi turli xizmatlardagi ishlash muammolarini aniqlash va hal qilish uchun ishlatiladi. Perforator to'siqlarni bartaraf etish va resurslarni ko'p talab qiladigan hisoblashni optimallashtirishda Yandexga o'z xarajatlarini 20% ga kamaytirish imkonini bergani uchun minnatdorchilik bildiriladi. serverlar.

Da'vo qilingan imkoniyatlar:

  • Yadro komponentlarining ishlashi haqida ma'lumot to'plash uchun eBPF yadro quyi tizimi va perf_events API dan foydalanish Linux va foydalanuvchi maydoni ilovalari. Metrikalarni to'plashning qo'shimcha xarajatlari taxminan 0.1% unumdorlikdagi jarimaga olib keladi. Faqat x86-64 arxitektura tizimlarida qo'llab-quvvatlanadi.
  • Kengaytiriladigan ishlash profilini saqlash. ClickHouse DBMS profil metama'lumotlarini saqlash uchun ishlatiladi, PostgreSQL ikkilik metama'lumotlarni saqlash uchun ishlatiladi va Amazon S3 bilan mos keladigan har qanday xotira xom profillar va ikkilik ma'lumotlarni saqlash uchun ishlatiladi.
  • Dasturlarni yaratishda disk raskadrovka belgilarini va -fno-omit-frame-pointer opsiyasini yoqmasdan qo'ng'iroqlar to'plamini bo'shatish imkoniyati (qaytish manzillari va funksiya o'zgaruvchilarini o'z ichiga olgan stek ramkasiga ko'rsatgichni saqlaydi).
  • Ilovalarni ishga tushirishda CPU yukini tekshirish uchun so'rovlar tili va veb-interfeysning mavjudligi.
    Yandex ilovalarni profillash uchun Perforator asboblar to'plamini ochdi
  • FlameGraph uslubidagi vizualizatsiya qiyinchiliklarni vizual baholash uchun ishlatiladi.
    Yandex ilovalarni profillash uchun Perforator asboblar to'plamini ochdi
  • Qurilish jarayonlarini o'zgartirmasdan yoki dasturlarni qayta kompilyatsiya qilmasdan turli tillar va ish vaqtlaridan foydalangan holda loyihalarni profillash qobiliyati. C++, Go, Rust, Java, Python va JavaScript/Node.js dasturlash tillarini qo'llab-quvvatlash e'lon qilindi.
  • Dasturni bajarish xususiyatlarini tahlil qilish asosida yanada maqbul kodni yaratishga imkon beruvchi kodni profillash (PGO - Profile-guided optimization) natijalariga asoslangan optimallashtirish bilan ilovalarni keyingi yig'ish uchun sPGO profillarini yaratish qobiliyati.
  • Perf asboblar to'plamini almashtirish sifatida foydalanish uchun qo'llab-quvvatlash Linux.
  • Kubernetesga asoslangan klasterlarda joylashtirishni avtomatlashtirish. Har bir tugun ishlash ma'lumotlarini to'playdigan, birlashtiradigan, siqadigan va uzatuvchi maxsus agentni boshqaradi. Ma'lumotlar agentlar tomonidan pprof-mos formatda gRPC orqali to'plash, saqlash, tahlil qilish, ramziylashtirish (manzillarni funksiya nomlari va koddagi pozitsiyalarga aylantirish) va profillar va bajariladigan fayllarni qayta ishlash (stekni ochish uchun zarur) uchun mas'ul bo'lgan mikroservislarga uzatiladi.
    Yandex ilovalarni profillash uchun Perforator asboblar to'plamini ochdi
    Yandex ilovalarni profillash uchun Perforator asboblar to'plamini ochdi

Manba: opennet.ru

DDoS himoyasi, VPS VDS serverlari bo'lgan saytlar uchun ishonchli hosting sotib oling 🔥 DDoS himoyasi, VPS VDS serverlari bilan ishonchli veb-sayt xostingini sotib oling | ProHoster