Yüksek performanslı Tokio uygulamaları için temel ilkeler yayımlandı
Öne çıkanlar
- Uygulamalarda gecikmeyi düşürmek için sık denetim devri yapılırken, işlem hacmi için işlerin toplu işlenmesi gerekiyor.
- Tokio'nun paylaşımlı engelleme havuzu yüksek çağrı sıklığında darboğaza neden oluyor.
- Tokio çalışanlarını ve arka plan iş parçacıklarını farklı çekirdeklere sabitlemek çekirdek gecikmesini önlüyor.
RustConf kapsamındaki Unconf oturumlarında yapılan tartışmaların ardından, Rust'ın eşzamanlı çalışma zamanı Tokio üzerinde çalışan uygulamalarda performansı artırmaya yönelik temel ilkeler paylaşıldı. Yayımlanan kılavuzda, Tokio uygulamalarındaki performans kayıplarının çoğunlukla çalışma zamanının kendisinden değil, uygulama kodunun tasarımından kaynaklandığı belirtildi. Özellikle görevler arasındaki adalet ve toplu işleme dengesinin iyi kurulması gerektiği aktarıldı.
Gecikmeye duyarlı sistemlerde görevlerin çalışma zamanına daha sık denetim vermesi (yield) önerilirken, dosya sistemi ve engelleme havuzuna (blocking pool) gönderilen işlerde aşırı bölmenin ciddi yük getirdiği vurgulandı. Tokio'nun engelleme havuzunun ve genel görev kuyruğunun küresel kaynaklar olduğu hatırlatıldı; saniyede on binlerce engelleme görevi başlatmanın bu kuyrukları tıkayabileceği kaydedildi. Kilitlenmeleri önlemek için mutex kritik bölgelerinin son derece kısa tutulması gerektiği açıklandı.
İşletim sistemi seviyesindeki çekirdek çizelgeleme gecikmelerine de dikkat çekildi. Yüksek yüklü sunucularda Tokio iş parçacıklarının işletim sistemi tarafından uyandırılmasının 10 ila 20 milisaniyeyi bulabildiği bildirildi. Bu tür durumlarda arka plan işleri ile Tokio iş parçacıklarını cgroups aracılığıyla ayrı işlemci çekirdeklerine sabitlemenin ve latency odaklı işler için birden fazla bağımsız Tokio çalışma zamanı kullanmanın etkili bir çözüm olduğu kaydedildi.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.