Pelacakan Eksekusi
go tool trace untuk analisis tingkat goroutine
Pelacakan Eksekusi adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.
Apa itu pelacakan eksekusi?
Pelacak eksekusi Go merekam linimasa penjadwalan goroutine, peristiwa GC, panggilan sistem, dan pertumbuhan heap. Pelacak ini memberikan tampilan visual tentang paralelisme dan latensi yang tidak tersedia dari profil CPU atau heap.
Mengambil pelacakan
Ambil pelacakan melalui titik akhir HTTP:
curl http://localhost:6060/debug/pprof/trace?seconds=5 -o trace.out
go tool trace trace.outPelacakan berbasis berkas
Gunakan runtime/trace untuk merekam pelacakan secara terprogram:
f, _ := os.Create("trace.out")
trace.Start(f)
defer trace.Stop()
// run workloadgo test -trace
Ambil pelacakan selama eksekusi pengujian atau tolok ukur:
go test -trace trace.out -bench=. ./...
go tool trace trace.outPenampil pelacakan
Penampil pelacakan (go tool trace) terbuka di peramban dan menampilkan linimasa goroutine, peristiwa GC, ukuran heap, serta jejak tumpukan setiap goroutine pada waktu apa pun.
Analisis goroutine
Tampilan Analisis Goroutine mengelompokkan goroutine berdasarkan fungsi dan menunjukkan berapa lama masing-masing berada dalam berbagai keadaan: berjalan, siap dijalankan (menunggu P), terblokir (saluran/mutex/panggilan sistem), dan tidur.
Menemukan latensi penjadwal
Waktu "runnable" yang tinggi berarti goroutine siap tetapi belum dijadwalkan. Ini menunjukkan terlalu banyak goroutine yang bersaing untuk mendapatkan P pada GOMAXPROCS, atau proses yang kekurangan waktu CPU.
Dampak GC
Jeda GC yang menghentikan seluruh program muncul sebagai bilah abu-abu di seluruh goroutine. Jeda yang panjang atau GC yang sering menunjukkan alokasi berlebihan—gabungkan dengan pembuatan profil heap untuk mengurangi alokasi.
Anotasi pengguna
Tambahkan rentang khusus ke pelacakan menggunakan trace.WithRegion dan trace.Log untuk memberi anotasi pada bagian kode Anda sendiri agar lebih mudah dianalisis.
trace.WithRegion(ctx, "parse request", func() {
parseRequest(req)
})tugas dan wilayah
trace.NewTask mengelompokkan wilayah terkait di bawah tugas bernama, sehingga Anda dapat mengukur latensi menyeluruh untuk operasi logis di beberapa goroutine.
ctx, task := trace.NewTask(ctx, "handle request")
defer task.End()Pelacakan vs profil
Profil CPU: fungsi yang menggunakan CPU selama waktu tertentu. Profil heap: fungsi yang mengalokasikan memori. Pelacakan: kapan goroutine berjalan atau terblokir, serta bagaimana GC berselang-seling—alat yang berbeda untuk pertanyaan yang berbeda.
Pemeriksaan singkat
Apa arti keadaan goroutine "runnable" dalam pelacakan eksekusi?
Ringkasan: Pelacakan Eksekusi
Poin utama:
- go tool trace menampilkan linimasa goroutine, peristiwa GC, dan penjadwalan
- Ambil melalui titik akhir HTTP atau paket runtime/trace
- Waktu runnable → persaingan penjadwal; jeda GC → alokasi berlebihan
- Anotasi pengguna (WithRegion, NewTask) menandai bagian kode Anda sendiri
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pelacakan Eksekusi” gratis?
Ya — teks lengkap “Pelacakan Eksekusi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pelacakan Eksekusi”?
go tool trace untuk analisis tingkat goroutine Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Go Academy?
Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Pelacakan Eksekusi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Menulis Benchmark dengan testing.B
- Pembuatan Profil CPU dengan pprof
- Pembuatan Profil Heap dan Alokasi
- Pelacakan Eksekusi