Yandex ngumumake rilis sumber terbuka saka toolkit Perforator, sing dirancang kanggo koleksi metrik rinci kanthi informasi babagan kinerja aplikasi lan dirancang kanggo digunakake ing kluster gedhe lan pusat data. Toolkit iki ngidini analisis kinerja aplikasi, alokasi sumber daya, lan wektu nyata. Linux-серверах и выявлять наиболее ресурсоёмкие приложения. Код написан на языке С++ и распространяется под лицензией MIT (eBPF-программы под GPLv2).
Yandex Perforator disebar ing kluster luwih saka 10 node lan digunakake kanggo ngenali lan ndandani masalah kinerja ing macem-macem layanan, kalebu Yandex Search lan Yandex Advertising. Perforator wis dikreditake amarga ngilangi hambatan lan ngoptimalake komputasi intensif sumber daya, saengga Yandex bisa nyuda biaya nganti 20%. server.
Kapabilitas sing diklaim:
- Использование подсистемы ядра eBPF и API perf_events для сборка сведений о работе компонентов ядра Linux и приложений в пространстве пользователя. Накладные расходы при сборе метрик приводят к снижению производительности примерно на 0.1%. Поддерживается работа только на системах с архитектурой x86-64.
- Panyimpenan profil kinerja sing bisa diukur. DBMS ClickHouse digunakake kanggo nyimpen metadata profil, PostgreSQL digunakake kanggo nyimpen metadata binar, lan panyimpenan apa wae sing kompatibel karo Amazon S3 digunakake kanggo nyimpen profil mentah lan data binar.
- Kemampuan kanggo unwind tumpukan telpon tanpa kudu ngaktifake simbol debug lan pilihan -fno-omit-frame-pointer nalika mbangun program (nyimpen pointer menyang pigura tumpukan ngemot alamat bali lan variabel fungsi).
- Kasedhiya basa pitakon lan antarmuka web kanggo mriksa beban CPU nalika mbukak aplikasi.

- Visualisasi gaya FlameGraph digunakake kanggo netepake bottlenecks kanthi visual.

- Kemampuan kanggo nggawe profil proyek nggunakake basa lan runtime sing beda-beda tanpa ngganti proses mbangun utawa nyusun ulang program. Dhukungan kanggo basa pemrograman C++, Go, Rust, Java, Python lan JavaScript/Node.js diumumake.
- Kemampuan kanggo ngasilake profil sPGO kanggo perakitan aplikasi sabanjure kanthi optimasi adhedhasar asil profil kode (PGO - Optimization dipandu Profil), sing ngidini ngasilake kode sing luwih optimal adhedhasar analisis fitur eksekusi program.
- Поддержка использования в качестве замены инструментария perf в Linux.
- Ngotomatisasi panyebaran ing kluster basis Kubernetes. Saben simpul nganggo agen khusus sing ngumpulake, nglumpukake, ngompres, lan ngirim data kinerja. Data ditularake dening agen ing format sing cocog karo pprof liwat gRPC menyang layanan mikro sing tanggung jawab kanggo nglumpukake, nyimpen, nganalisa, nglambangake (ngowahi alamat dadi jeneng fungsi lan posisi ing kode) lan ngolah profil lan eksekusi (perlu kanggo tumpukan unwinding).


Source: opennet.ru




