Grafik flame
Cloud Profiler menampilkan data pembuatan profil menggunakan Flame Graphs. Tidak seperti hierarki dan grafik, grafik api memanfaatkan ruang layar secara efisien dengan menampilkan sejumlah besar informasi dalam format yang ringkas dan mudah dibaca.
Untuk menampilkan grafik flame, halaman ini menggambarkan cara mengonversi hierarki menjadi grafik flame dan merangkum fitur utama dari grafik flame.
Membuat flame graph
Untuk membuat grafik flame dari hierarki, selesaikan langkah-langkah yang ditunjukkan dalam diagram berikut:
Hapus panah yang menunjukkan panggilan fungsi dari hierarki.
Ganti setiap node pohon dengan frame.
Frame berbentuk persegi panjang dan semua frame memiliki tinggi yang sama. Untuk contoh di halaman ini, total waktu CPU yang digunakan oleh fungsi yang dinamai dalam frame menentukan lebar frame.
Kode semu untuk setiap fungsi dijelaskan dalam tabel berikut. Pekerjaan intensif CPU yang dilakukan selama eksekusi fungsi menentukan waktu CPU mandiri:
Kode semu fungsi waktu CPU mandiri
(detik)total waktu CPU
(detik)func main(): foo1() foo2() // CPU intensive work // for 2 seconds
2 4 + 3 + 2 = 9 func foo1(): bar() // CPU intensive work // for 1.5 seconds
1,5 2,5 + 1,5 = 4 func foo2(): bar() // CPU intensive work // for 0.5 seconds
0.5 2,5 + 0,5 = 3 func bar(): // CPU intensive work // for 2.5 seconds
2.5 2.5 Langkah berikutnya adalah menghapus ruang vertical antara frame dan frame perataan kiri sekaligus mempertahankan urutan panggilan. Secara opsional, Anda dapat menentukan skema warna dan mewarnai frame sesuai dengan definisi. Misalnya, Anda dapat mewarnai frame menurut paketnya, menurut total waktu CPU, menurut waktu CPU mandiri, atau dengan ukuran yang berbeda.
Setelah menghapus kelebihan spasi kosong dan pewarnaan frame oleh waktu CPU mandiri, grafik flame kini muncul sebagai berikut:
Perhatikan bahwa stack panggilan untuk
foo1
danfoo2
telah dipertahankan, meskipun stack panggilan yang dimulai denganfoo2
kini berada di samping frame untukfoo1
.
Ringkasan
Contoh sederhana ini menggambarkan hal berikut:
- Grafik Flame adalah representasi ringkas dari sebuah hierarki dan Anda dapat membuat ulang stack panggilan dengan merekam aktivitas frame dari atas ke bawah.
- Frame memberi nama fungsi dan lebar frame adalah ukuran relatif
dari total waktu CPU fungsi tersebut.
Dalam contoh ini, karena total waktu CPU
foo2
adalah sepertiga dari total waktu CPUmain
, frame untukfoo2
adalah sepertiga lebar frame untukmain
. - Lebar ruang kosong di bawah frame adalah ukuran relatif
waktu CPU mandiri untuk fungsi yang disebutkan dalam frame.
Misalnya, di bawah frame
foo1
, 1,5 unit kosong dan 2,5 unit ditempati olehbar
. Oleh karena itu, waktu CPU mandirifoo1
adalah 37,5% dari total waktu CPU-nya, atau 1,5 dtk. Saat Anda mengikuti stack panggilan, lebar frame akan berkurang karena total waktu CPU tujuan panggilan tidak boleh melebihi total waktu CPU pemanggil. Perilaku inilah yang menyebabkan api terbentuk.
Dalam contoh ini,
foo1
memanggilbar
dan total waktu CPUfoo1
ditentukan sebagai total waktu CPUbar
ditambah waktu CPU mandirifoo1
. Oleh karena itu, total waktu CPUbar
tidak boleh lebih dari total waktu CPUfoo1
.
Langkah selanjutnya
- Memilih profil yang akan dianalisis
- Berinteraksi dengan grafik flame
- Memfilter grafik flame
- Memfokuskan grafik flame
- Membandingkan profil