Go’nun içi ve performans
Zamanlayıcı, çöp toplayıcı ve kaçış analizini ölçümle tanır; profil ve izlemeyle darboğazları bulup bellek ayırmayı azaltırsın.
Seviye 501 · 16 ders · 15 pratik lab
Dersler
Çalışma zamanı
- Zamanlayıcı: G, M ve P modeli
- Çöp toplayıcı: GOGC ve GOMEMLIMIT
- Kaçış analizi: yığın mı, öbek mi?
- Arayüzlerin ve dilimlerin bellekteki hâli
- Kısa görev: sıcak döngüdeki ayırmaları sıfıra indir
Ölçmek
- pprof ile CPU, öbek ve kilit profili
- go tool trace ile çalışma izi
- Profil yönlendirmeli derleme (PGO)
- sync.Pool ve tampon yeniden kullanımı
- Kısa görev: yavaş servisi profille ve iki kat hızlandır
Sınırların dışı
- unsafe paketi: ne zaman ve neden tehlikeli
- cgo ile C kodu çağırmak
- cgo’nun bedeli: bellek güvenliği ve dağıtım
- İkili dosyayı incelemek: go version -m ve sembol tablosu
- Kısa görev: C kütüphanesi için güvenli Go sarmalayıcı
Bitirme
- Bitirme görevi: günlük işleme hattını ölç, darboğazı bul, bellek kullanımını yarıya indir
Pratik lablar
- Kaçış çözümlemesi çıktısını okumak: Derleyicinin kaçış çözümlemesi çıktısından yığına kaçan değişkenleri bul ve birini değer döndürerek yığında tut.
- Arayüz kutulamasından doğan ayırmaları kaldırmak: Sıcak döngüde değerleri boş arayüze sararak ayırma yapan kayıt çağrısını tipli sürümle değiştir ve ayırma sayısını kıyaslamayla ölç.
- Sıcak döngüde ayırmaları sıfıra indirmek: Satır ayrıştıran sıcak döngüde dizgi dönüşümleri, dilim büyümesi ve kapanış ayırmalarını gider; kıyaslama işlem başına sıfır ayırma göstermeli.
- İşlemci sayısına göre ölçeklenmeyi ölçmek: CPU ağırlıklı işi farklı GOMAXPROCS değerleriyle çalıştırıp süre tablosu üreten kıyaslamayı yaz.
- GOGC ve GOMEMLIMIT ile belleği ayarlamak: Bellek sınırlı kapta öldürülen hizmet için GOMEMLIMIT ve GOGC değerlerini seç; toplama sayısı ile en yüksek belleği ölçerek seçimini belgeleyip sınırın altında kal.
- Küçük dilimin büyük diziyi canlı tutmasını gidermek: Büyük dosyadan alınan küçük alt dilimlerin tüm tamponu bellekte tuttuğunu yığın profilinden göster, kopyayla düzelt ve belleğin düştüğünü ölç.
- CPU profilinden en pahalı fonksiyonu bulmak: Yavaş rapor üreticisinden CPU profili al ve en çok süre harcayan fonksiyonu pprof çıktısıyla belgele.
- Kilit çekişmesini profil ile bulmak: Çekirdek sayısı artınca hızlanmayan hizmette mutex profilini aç, çekişen kilidi bul ve kritik bölgeyi daraltarak verimi artır.
- Yürütme izinden gecikmenin kök nedenini bulmak: Ara sıra uzayan isteklerin nedenini go tool trace ile bul; çöp toplama, engellenen goroutine ve sistem çağrısı etkilerini ayır ve hizmeti iki kat hızlandır.
- Tamponları sync.Pool ile yeniden kullanmak: Her istekte yeni bytes.Buffer ayıran kodlayıcıyı sync.Pool ile değiştir ve tamponu geri koymadan önce sıfırla.
- Profil yönlendirmeli derleme yapmak: Temsilî yükten alınan CPU profilini default.pgo olarak kullanıp yeniden derle ve kıyaslamadaki kazancı benchstat ile raporla.
- Havuzdan sızan eski veriyi yakalamak: Yeniden kullanılan tamponda önceki isteğin verisi kaldığı için yanıtlara karışan içeriği bul; havuz kullanımını düzelt ve eşzamanlı testle kanıtla.
- İkilinin modül ve simge bilgisini incelemek: go version -m ve simge tablosundan bir ikilinin Go sürümünü, modüllerini ve derleme ayarlarını çıkaran küçük aracı yaz.
- C kitaplığı için güvenli Go sarmalayıcısı: Küçük bir C sıkıştırma kitaplığını cgo ile sar; C belleğini her yolda serbest bırak, uzunlukları denetle ve Go işaretçilerini C tarafında saklama.
- unsafe dönüşümünden doğan bozulmayı gidermek: Dizgiyi unsafe ile bayt dilimine çevirip sonra değiştiren hızlandırma hilesinin yol açtığı bozulmayı bul; güvenli sürümle değiştir ve maliyeti ölç.
Kurs hakkında
Zamanlayıcı, çöp toplayıcı ve kaçış analizini ölçümle tanır; profil ve izlemeyle darboğazları bulup bellek ayırmayı azaltırsın.
Ne öğreneceksin
- Çalışma zamanı
- Ölçmek
- Sınırların dışı
- Bitirme
Ön koşullar
Aynı yolun 401 düzeyine kadar olan konularında deneyimli olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 501 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.