Situs Brendan: Memulai
- Halaman utama blog Brendan Gregg membahas berbagai topik seperti kinerja sistem, alat BPF, performa Linux, dan lainnya.
- Postingan terbaru mencakup kembalinya frame pointer, dokumenter eBPF, serta bahwa alat observabilitas eBPF bukanlah alat keamanan.
- Blog ini juga membagikan konten teknis bersama berbagai konferensi dan presentasi yang diikuti Brendan.
Kembalinya frame pointer
- Pada sistem tanpa frame pointer, pelacakan stack berhenti di lapisan libc sehingga frame aplikasi hilang.
- Fedora dan Ubuntu menyelesaikan masalah ini dengan merilis versi yang mengompilasi libc dengan frame pointer secara bawaan.
- Frame pointer digunakan oleh profiler dan debugger eksternal, serta divisualisasikan melalui flame graph.
Apa itu frame pointer?
- Menurut dokumen x86-64 ABI, register CPU
%rbp dapat digunakan sebagai "base pointer" dari stack frame.
- Teknik ini digunakan secara luas untuk stack trace, termasuk oleh Linux perf dan eBPF.
2004: penghapusan frame pointer
- Pada 2004, pengembang gcc Roger Sayle mendorong perubahan untuk menghentikan pembuatan frame pointer.
- Perubahan ini meningkatkan performa, tetapi dengan munculnya eBPF, kini sebagian debugger/profiler mengalami masalah karenanya.
2005-2023: musim dingin profiler yang rusak
- Perubahan penghapusan frame pointer juga diterapkan ke x86-64, tetapi arsitektur ini memiliki lebih banyak register sehingga keuntungannya tidak besar.
- Akibatnya, banyak debugger/profiler tidak lagi bekerja dengan benar.
2014: Java in Flames
- Saat bergabung dengan Netflix, ditemukan bahwa kurangnya dukungan frame pointer di Java merusak seluruh stack aplikasi.
- Untuk mengatasi masalah ini, dikembangkan modifikasi pada compiler JVM c2.
2015-2020: overhead
- Overhead performa dari menambahkan frame pointer ke semuanya umumnya kurang dari 1%.
- Pada microbenchmark tertentu, overhead dapat mencapai 10%.
2022: upaya upstream
- Ini mengisyaratkan bahwa perusahaan besar seperti Google, Meta, dan Netflix sudah mengaktifkan frame pointer di semua tempat.
- Ada berbagai kesulitan untuk menjadikan perubahan ini sebagai default agar semua orang mendapat manfaat.
2023, 2024: frame pointer di Fedora dan Ubuntu
- Fedora menerima usulan untuk mengaktifkan kembali frame pointer.
- Ubuntu juga mengaktifkan frame pointer secara bawaan pada versi 24.04 LTS.
Setelah 2034: melampaui frame pointer
- Ada berbagai cara untuk melacak stack, seperti LBR, BTS, AET, DWARF, eBPF stack walking, ORC, SFrames, dan shadow stack.
- Di masa depan, SFrames atau shadow stack mungkin dapat digunakan untuk semua stack tracing.
Kesimpulan
- Kembalinya frame pointer membuat CPU flame graph lebih bermakna, membuat Off-CPU flame graph berfungsi untuk pertama kalinya, dan membuka kemungkinan-kemungkinan baru lainnya.
- Ini juga merupakan kemenangan bagi profiler kontinu, karena mereka tidak lagi perlu meyakinkan pelanggan untuk mengubah OS agar profiler dapat bekerja sepenuhnya.
Opini GN⁺
- Kembalinya frame pointer tampaknya akan sangat membantu analisis kinerja sistem dan debugging. Ini terutama merupakan alat penting untuk mendiagnosis masalah dan mengoptimalkan performa pada sistem perangkat lunak yang kompleks.
- Perubahan ini menunjukkan pentingnya kolaborasi dan kontribusi komunitas open source. Keputusan Fedora dan Ubuntu dapat memengaruhi distribusi lain, yang dapat membawa perubahan positif bagi seluruh ekosistem Linux.
- Menghadirkan kembali frame pointer adalah soal menyeimbangkan penurunan performa dengan kemudahan debugging. Keputusan seperti ini dapat dipahami lebih baik melalui pengujian dan analisis performa di lingkungan produksi nyata.
- Bagi pengguna dengan latar belakang teknis, perubahan ini bisa jadi menarik, dan memberikan informasi berguna bagi pengembang atau administrator sistem yang tertarik pada peningkatan kinerja sistem.
- Jika ada teknologi atau alat lain yang menyediakan fungsi serupa dengan frame pointer, misalnya profiler berbasis perangkat keras seperti Intel VTune Profiler atau AMD uProf, alat-alat tersebut dapat digunakan untuk analisis performa bahkan tanpa frame pointer.
1 komentar
Komentar Hacker News
-fomit-frame-pointer