Cara Memvisualisasikan Kinerja Aplikasi Anda Dengan Grafik Api SVG
Diterbitkan: 2023-02-21Grafik api SVG adalah cara yang bagus untuk memvisualisasikan kinerja aplikasi Anda. Dengan menampilkan waktu yang dihabiskan di setiap fungsi, Anda dapat dengan cepat mengidentifikasi area kode Anda yang menghabiskan terlalu banyak waktu. Untuk menampilkan grafik api SVG, Anda perlu menggunakan alat yang dapat membuatnya. Ada banyak alat open source yang tersedia, seperti flamegraph.io. Setelah Anda membuat grafik api, Anda dapat menyematkannya di situs web atau blog Anda menggunakan tag. Anda juga dapat menggunakan alat seperti Google Sheets untuk menampilkan grafik api Anda. Cukup buat spreadsheet baru, pilih "Sisipkan > Gambar", lalu tempel URL grafik api Anda.
Bagaimana Anda Menjalankan Grafik Api?
Untuk menjalankan grafik nyala, Anda perlu menginstal beberapa hal di komputer Anda. Hal pertama yang Anda butuhkan adalah browser Google Chrome. Selanjutnya, Anda perlu menginstal ekstensi Flame Graph. Setelah Anda menginstal kedua hal ini, Anda perlu membuka browser Google Chrome dan pergi ke halaman ekstensi Flame Graph . Dari sana, Anda perlu mengklik tombol "Buat Grafik Api baru". Ini akan memunculkan tab baru di mana Anda harus memasukkan URL situs web yang ingin Anda buat grafik apinya. Setelah Anda memasukkan URL, Anda harus mengklik tombol "Buat Grafik Api". Ini akan memakan waktu beberapa saat untuk membuat grafik nyala api. Setelah selesai, Anda akan dapat melihat hasilnya.
Grafik nyala menampilkan pelacakan permintaan terdistribusi dan ringkasan setiap panggilan layanan yang terjadi selama eksekusi permintaan. Grafik nyala dari pelacakan terdistribusi menunjukkan latensi dan data kesalahan untuk membantu pengembang mengidentifikasi hambatan dalam aplikasi mereka. Artikel tersebut memberikan penjelasan tentang cara menginterpretasikan grafik nyala serta contoh, serta metode lain untuk melacak jejak yang didistribusikan. Sumbu Y menampilkan kedalaman tumpukan panggilan (jumlah panggilan). Saat Anda mengeklik rentang pada grafik nyala, biasanya Anda akan melihat ringkasan durasi dan kesalahan yang terkait dengan panggilan tersebut. Anda dapat menemukan metrik, log, data kinerja jaringan, hotspot kode, dan informasi kontekstual lainnya dengan mengeklik tab di bawah grafik nyala. Diagram spiral dibentuk oleh lingkaran yang dikelilingi oleh satu set cincin. Grafik nyala dapat digunakan untuk memvisualisasikan metode dan jalur kode yang digunakan dalam memenuhi permintaan dari pembuat kode. Alat Pelacakan Distribusi dan Pemantauan Kinerja Aplikasi Datadog memungkinkan Anda melacak jalur semua permintaan di semua layanan.
Flame Graphs Memberi Pengembang Cara Cepat dan Mudah untuk Melihat Masalah Performa
Grafik nyala dapat digunakan oleh pengembang untuk memvisualisasikan kinerja aplikasi terdistribusi dalam hitungan detik. Grafik nyala dapat membantu pengembang mengidentifikasi dan memperbaiki masalah kinerja dengan menyediakan representasi grafis dari pelacakan permintaan dan menyoroti di mana aplikasi mengalami masalah.
Bagaimana Anda Mencari Di Flamegraph?
Ada beberapa cara berbeda yang dapat Anda cari di flamegraph. Salah satu caranya adalah dengan menggunakan kotak pencarian yang terletak di sisi kanan atas layar. Kotak pencarian ini memungkinkan Anda mengetikkan kata kunci yang kemudian akan digunakan untuk mencari flamegraph. Cara lain untuk mencari di flamegraph adalah dengan menggunakan fungsi browse. Fungsi ini dapat ditemukan di sisi kiri layar. Fungsi ini memungkinkan Anda menelusuri berbagai kategori flamegraph.
Dengan munculnya grafik api, sekarang lebih mudah untuk mencarinya. Ada jalur kode tulis di bawah bingkai TCP_send() besar di sebelah kanan. Jika Anda mengeklik salah satu bingkai yang disorot, Anda dapat melihat mengapa hal ini bisa terjadi. Tcp_Send hadir di 59,1% sampel yang diuji. Istilah lain yang menarik untuk dicari termasuk re?cv, spin, copy, dan x.
Mengapa Disebut Grafik Api?
Saat membuat visualisasi, Neelakanth dan Roch menggunakan warna yang benar-benar acak. CPU panas (sibuk), yang menjelaskan mengapa saya hanya memilih warna-warna hangat terlebih dahulu. Karena menyerupai api, grafik api dengan cepat menjadi populer.
Bahaya Api
Acara yang berapi-api adalah cara yang menghibur untuk melepaskan rasa frustrasi dan memulai diskusi yang hidup. Mereka juga dapat menyebabkan kerusakan dalam hubungan dan menyebabkan orang berantakan.
Cara terbaik untuk menangani api adalah dengan mengabaikannya. Seseorang mungkin memposting nyala api; Anda harus menjadi orang yang mengabaikannya. Tidak perlu menanggapi. Itu tidak sebanding dengan energi yang dikeluarkan.
Nyala api bisa menjadi cara yang menyenangkan untuk berkomunikasi, tetapi dalam beberapa kasus juga bisa berbahaya jika digunakan secara tidak benar. Anda tidak perlu takut dengan api; sebaliknya, Anda harus menghindarinya dan tetap tenang.
Siapa Penemu Flamegraph?
Grafik api telah menjadi alat penting untuk analisis kinerja dalam banyak bahasa, serta di Netflix dan industri lainnya. Penulis mereka, Brendan Gregg, menciptakan Flame Graph, yang diterbitkan dalam Communications of the ACM edisi Juni 2016.
Penampil Grafik Api
Penampil grafik nyala adalah jenis perangkat lunak yang memungkinkan pengguna untuk memvisualisasikan data dalam bentuk grafik. Perangkat lunak ini sering digunakan untuk memecahkan masalah dengan komputer atau perangkat lain.
Anda dapat menggunakan speedscope untuk melihat profil performa besar dengan cara berbasis web. FlameGraphs oleh Brendan Gregg terinspirasi oleh panel kinerja alat pengembang Chrome. Data dari sistem tidak diteruskan ke server mana pun, dan berjalan sepenuhnya di dalam browser. Chrome dan Firefox harus bekerja dengan semua platform (walaupun saya hanya menguji Mac). Pada tampilan berat kiri, tumpukan identik dikelompokkan bersama terlepas dari apakah tumpukan tersebut telah direkam secara berurutan. Tumpukan setiap orang tua diurutkan sehingga tumpukan terberatnya berada di sebelah kiri – karenanya diberi label tangan kiri. Pandangan mendetail tentang situasi akan membantu Anda memahami di mana Anda berada dalam hal berapa banyak panggilan fungsi yang Anda miliki dalam situasi tertentu.
Rudro Samanta telah menggunakan speedscope untuk memvisualisasikan profil aplikasi iOS yang diambil menggunakan Xcode. Jest digunakan untuk menulis kasus pengujian, Travis CI digunakan untuk mengintegrasikan kode secara terus-menerus, Coveralls digunakan untuk pelaporan cakupan pengujian, Parcel digunakan untuk mengubah kode sumber, dan prettier digunakan untuk memformat kode secara otomatis. Salah satu cara untuk melakukannya adalah dengan meningkatkan jumlah format yang dapat diimpor oleh speedscope, dan salah satu cara untuk mempererat integrasi. Saya telah mengerjakan speedscope selama sembilan bulan sekarang, dan saya merasa seperti telah melepaskannya dari saya. Sebagai seorang insinyur, saya akan berusaha untuk membuat sistem dan rangkaian alat yang dapat dipelihara, dimengerti, dan berguna untuk membantu orang dalam memecahkan masalah yang kompleks di seluruh dunia. Saya percaya saya akan mencurahkan lebih banyak waktu untuk proyek kreatif dan kolaboratif tahun ini.
Grafik Api Online
Grafik nyala adalah representasi grafis dari data profil, biasanya digunakan untuk menunjukkan karakteristik kinerja program perangkat lunak. Ketinggian setiap bagian mewakili jumlah waktu yang dihabiskan di bagian kode tertentu. Bagian-bagian tersebut diurutkan dari kiri ke kanan sesuai dengan waktu pemanggilannya.
Tidak seperti pohon dan grafik, grafik nyala menggunakan ruang layar secara efektif dengan menyajikan sejumlah besar informasi dalam format kecil. Dengan mengklik di sini, Anda akan mempelajari cara mengonversi pohon menjadi grafik nyala api, serta fitur utama grafik nyala api. Grafik Api digunakan di Google Cloud Profiler untuk menampilkan data pembuatan profil. Saat Anda mengikuti tumpukan panggilan, lebar bingkai berkurang karena total waktu CPU penerima panggilan tidak boleh lebih dari waktu CPU penerima panggilan lainnya. Bentuk api disebabkan oleh perilaku ini. Grafik nyala sekarang muncul sebagai berikut setelah menghapus spasi putih berlebih dan bingkai pewarnaan menggunakan waktu CPU sendiri. Meskipun tumpukan panggilan untuk foo1 dan foo2 telah dipertahankan, tumpukan yang dimulai dengan foo2 dan diakhiri dengan foo1 sekarang terletak di sebelah bingkai.

Bagaimana Anda Membuat Grafik Api?
Untuk menghasilkan grafik api, Anda harus mengambil sampel jejak tumpukan terlebih dahulu. Secara tradisional dibagi menjadi dua jenis: profil sistem, seperti Linux perf, yang menunjukkan jalur kode sistem (misalnya, JVM GC, syscalls, TCP), tetapi bukan profil Java. Profiler JVM, seperti hprof, lJP, dan profiler komersial, tersedia.
Grafik Api Vs Grafik Api
Ada beberapa perbedaan utama antara grafik nyala dan grafik nyala. Bagan nyala biasanya menampilkan garis waktu kejadian, sedangkan grafik nyala menampilkan jejak tumpukan. Grafik nyala sering digunakan untuk men-debug masalah kinerja, sedangkan grafik nyala lebih sering digunakan untuk memvisualisasikan data kinerja. Bagan api adalah cara yang bagus untuk melihat bagaimana suatu program menghabiskan waktunya. Mereka dapat menunjukkan kepada Anda di mana hambatannya, dan bagaimana program menggunakan sumber daya. Grafik nyala adalah cara yang bagus untuk melihat bagaimana suatu program menggunakan sumber daya.
Sebagai teknik kasar namun berguna untuk menentukan jalur kode mana yang panas (karena mereka sibuk di CPU), pembuatan profil pada kecepatan tetap menghasilkan hasil yang baik. Grafik nyala memungkinkan Anda mengidentifikasi jalur kode panas dengan cepat dengan mengambil sampel pelacakan tumpukan. Contoh perf Linux saya (perf_events) dan DTrace adalah contoh perangkat lunak yang dapat Anda instal. FlameGraph adalah alat Perl yang menghasilkan SVG interaktif dan memungkinkan Anda melihat detail dengan menyeret dan melepaskan gambar. Visualisasi mungkin tampak mirip dengan yang lain dari profiler, tetapi dalam beberapa hal berbeda dari mereka. Karena ini awalnya digunakan untuk memvisualisasikan apa yang sedang panas pada CPU, ini disebut sebagai grafik nyala. Lihat bagian profile(8) eBPF untuk metode overhead rendah yang berjalan di kernel Linux yang lebih baru (profil eBPF(8) tidak disarankan).
Silakan lihat bagian Grafik Nyala di halaman perf_events saya untuk informasi lebih lanjut tentang perf. Dimungkinkan untuk menampilkan keluaran terlipat langsung dari laporan perf Linux 4.5 dengan menyertakan mode terlipat, yang hanya dapat diakses dengan menggunakan stackcollapse-perf.pl. Serat kernel (-a) dan pengguna (-d) yang dipisahkan oleh tumpukan pengguna dan kernel (-f) disediakan dalam sampel ini pada 99 Hertz (-F 99), dan ada batas waktu 60 detik untuk sampel. Grafik api dapat dihasilkan dengan menggunakan SystemTap v1.7 di Fedora 16. Timer juga dapat digunakan untuk mengambil sampel pelacakan tumpukan. Probe profil ini berjalan pada kecepatan jam sistem (CONFIG_HZ). SystemTap dapat menggunakan fitur agregasi systemTap untuk mengagregasi dalam kernel dan memberikan laporan (kurang mendetail) kepada pengguna.
Grafik dihasilkan menggunakan KVM (host Ubuntu) (32 bit) pada tamu Fedora 16 (dengan satu CPU virtual). Pada bare metal, beberapa jalur kode dan rasio sampel akan sangat berbeda. Dimungkinkan untuk mengklik elemen dalam data profil untuk melihat persentase (tetapi bukan klik untuk memperbesar, karena ini adalah versi baru), tetapi tidak untuk memperbesar. Grafik adalah alat yang sangat baik untuk mempelajari lebih lanjut tentang internal Linux. Pada host hypervisor kernel illumos, tumpukan pengguna dan kernel dapat dilihat dalam contoh ini. Versi SVG dan PNG mandiri juga tersedia. Untuk mengamati bagaimana waktu kernel dialokasikan untuk membuat proses berumur pendek, saya melakukan beban kerja grafik nyala ini.
Grafik nyala biasanya digunakan untuk mengidentifikasi muatan interupsi kernel dengan menampilkan rambut. Penyeimbangan NUMA di Ubuntu rilis 1716 menghabiskan lebih dari setengah siklus CPU untuk menyeimbangkan memori antar node, menghasilkan kinerja yang lamban. Penulisan ulang grafik nyala di D3 sangat penting untuk menjaga urutan penggabungan tetap konstan tanpa harus membuat ulang grafik nyala. Dalam pembicaraan JavaOne 2016 saya Analisis Kinerja Java di Linux dengan Flame Graphs, saya membahas teknik terbaru untuk menghasilkan grafik api mode campuran menggunakan kinerja Linux. JDK8u60 menyertakan fitur yang disebut /PreservePointerFrame yang memungkinkan Anda menghasilkan grafik perf dan nyala. JDK-8068945 telah ditambahkan ke perpustakaan JDK sebagai tambalan panas untuk pembuatan profil tumpukan (penunjuk bingkai). Saat menggunakan register RBP sebagai penunjuk bingkai dalam kode yang dikompilasi untuk x64, ini dianggap sebagai penunjuk bingkai yang tepat.
Saat menjalankan DTrace sebagai metode Jstack, ia dapat melacak tumpukan tingkat pengguna serta metode dan kelas Java. Untuk program Java, Stackcollapse.pl dan flamegraph.pl digunakan untuk membuat grafik nyala CPU . Beberapa versi JVM tidak mendukung ustack helper, yang memiliki sejumlah masalah. Ia bekerja dengan kombinasi nilai plus pelacakan tumpukan apa pun, bukan hanya pelacakan tumpukan dengan hitungan CPU. Masalah pertama adalah bahwa Jstack() mungkin tidak dapat menjalankan tumpukan dengan benar karena bug JDK-6260864, yang diajukan pada tahun 2005 dan masih belum diperbaiki pada tahun 2014. Bug ini menyebabkan sebagian besar tumpukan sampel dalam beban kerja produksi saya menjadi merusak. Anda dapat memperoleh wawasan tentang alokasi memori perangkat, IO perangkat, pola syscall, kejadian di luar CPU, dan panggilan fungsi tertentu. Jika salah satu dari ini digunakan, pelacakan tumpukan dapat diperoleh dengan nilai yang relevan: hitungan, byte, atau latensi. Grafik nyala api juga dapat dilihat di laman Grafik Api.
Grafik Api Jawa
Grafik nyala adalah jenis visualisasi data yang digunakan untuk mewakili kinerja program perangkat lunak. Ini adalah grafik yang menunjukkan jumlah waktu yang dihabiskan program di setiap fungsi. Ketinggian bilah mewakili jumlah waktu yang dihabiskan program dalam fungsi itu. Lebar bilah mewakili jumlah waktu yang dihabiskan program dalam fungsi tersebut relatif terhadap fungsi lainnya.
Grafik nyala baru-baru ini muncul sebagai cara baru yang populer untuk memvisualisasikan penggunaan CPU di Java. Mereka dapat dibuat menggunakan profiler Java ringan Google (code.google.com) dan perangkat lunak grafik api saya (github). Untung grafik nyala bukan fitur terpisah dari profiler Java di masa mendatang. Dalam posting blog ini, kita akan melihat metode berbasis JVMTI khusus Java yang, meskipun berfungsi, memiliki beberapa keterbatasan. Jeremy Manson telah membuat profiler Java ringan yang dapat digunakan untuk mengambil sampel CPU. Contoh laporan ini dibuat saat java dimulai hingga keluar, dengan file trace.txt ditambahkan padanya. Untuk menjalankan program, ada beberapa biaya.
Untuk program saya, itu kecil (peningkatan hanya 1% dalam tingkat permintaan dan peningkatan konsumsi CPU 7%). Jika laju pengambilan sampel harus dikurangi, silakan lihat bagian selanjutnya. Keluaran program flamegraph.pl dapat disesuaikan dengan berbagai opsi (daftar -h), termasuk judul. Profiler jujur Richard Warburton, yang didasarkan pada teknik pembuatan profil yang sama, juga berguna. Ada kemungkinan saya akan mengurangi laju sampel dari 100 hertz menjadi 50 hertz atau lebih rendah jika saya bermaksud mengumpulkan data dalam jumlah besar dalam jangka waktu yang lama.