Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon goroutinler ve kanallar Go'da G/Ç performansını nasıl artırır?


goroutinler ve kanallar Go'da G/Ç performansını nasıl artırır?


Go'daki Goroutinler ve kanallar G/Ç performansını çeşitli şekillerde iyileştirir:

1. Eşzamanlılık:

- Goroutinler: Goroutinler hafiftir ve ana program yürütme akışını engellemeden görevlerin eş zamanlı yürütülmesine olanak tanıyan, bağımsız olarak yürütülen işlevlerdir. Bu, G/Ç işlemlerinin eş zamanlı olarak verimli şekilde yönetilmesine olanak tanır.
- Kanallar: Kanallar, goroutinler arasında veri aktarmanın ve bunların yürütülmesini koordine etmenin güvenli ve etkili bir yolunu sağlar. Bu, verilerin doğru şekilde yayılmasını ve uygulama tarafından uygun şekilde işlenmesini sağlar.

2. Bellek Verimliliği:

- Goroutine'ler: Goroutine'lerin minimum yığın boyutu 2 KB'dir, bu da bellek dostudur. Bu, önemli miktarda bellek yükü olmadan verimli bir şekilde yönetilebilecekleri anlamına gelir.

3. Görev Planlama:

- İş Çalma: Go, boşta kalan bir işlemcinin sürekli olarak diğer işlemci iş parçacıklarını çalmaya çalışmasını içeren iş çalmayı kullanır. Bu yaklaşım, bağlam değiştirme işlemlerinin sıklığını azaltarak daha az ek yüke neden olur.

4. Hata İşleme:

- Hata İşleme: Güçlü hata işleme mekanizmalarının uygulanması, hataların doğru şekilde yayılmasını ve uygulama tarafından uygun şekilde işlenmesini sağlar. Bu, G/Ç işlemlerinin verimli ve doğru bir şekilde yapılmasını sağlar.

5. Arabelleğe Alınmış Kanallar:

- Arabelleğe Alınmış Kanallar: Ara belleğe alınmış kanalların kullanılması, verileri geçici olarak ara belleğe alarak G/Ç işlemlerinin verimli şekilde yönetilmesine olanak tanır. Bu, G/Ç işlemlerinin yükünü azaltır ve performansı artırır.

6. Eşzamanlılık Sınırlaması:

- Eşzamanlılık Sınırlaması: Semaforlar gibi eşzamanlılık sınırlama tekniklerinin kullanılması, eşzamanlı G/Ç işlemlerinin sayısının belirli bir sınırı aşmamasını sağlar. Bu, kaynakların aşırı yüklenmesini önler ve G/Ç işlemlerinin verimli şekilde yönetilmesini sağlar.

7. Goroutine Havuzu:

- Goroutine Havuzu: Bir goroutin havuzunun kullanılması, goroutinlerin verimli bir şekilde yönetilmesini ve yeniden kullanılmasını sağlar. Bu, goroutin oluşturma ve yönetme yükünü azaltır ve G/Ç performansını artırır.

8. Bağlam Yöneticisi:

- Bağlam Yöneticisi: Bağlam yöneticisinin uygulanması, G/Ç işlemlerinin uygun şekilde yönetilmesini ve koordine edilmesini sağlar. Bu, G/Ç işlemlerinin verimli ve doğru bir şekilde yapılmasını sağlar.

9. AIO (Eşzamansız G/Ç):

- AIO: AIO'nun kullanılması, G/Ç işlemlerinin eşzamansız olarak gerçekleştirilmesini sağlar, G/Ç işlemlerinin ek yükünü azaltır ve performansı artırır.

10. Optimize Edilmiş Zamanlayıcı:

- Optimize Edilmiş Zamanlayıcı: Go'nun zamanlayıcısı, G/Ç işlemlerinin verimli şekilde yönetilmesi için optimize edilmiştir. Bu, G/Ç işlemlerinin verimli ve doğru bir şekilde yapılmasını sağlar.

Go'daki bu stratejiler ve teknikler, ek yükü azaltarak, eşzamanlılığı artırarak ve G/Ç işlemlerinin verimli bir şekilde ele alınmasını sağlayarak G/Ç performansını artırır.

Alıntılar:
[1] https://granate.io/blog/deep-dive-into-golang-performans/
[2] https://clouddevs.com/go/concurrent-file-in-out/
[3] https://pages.cs.wisc.edu/~riccardo/assets/diskio.pdf
[4] https://groups.google.com/g/golang-nuts/c/kfvPQOwCRLU
[5] https://coffeebytes.dev/en/go-use-of-channels-to-communicate-goroutines/