- Sunucu performans sınırı genelde
top gibi izleme araçlarındaki % CPU kullanım oranı ile değerlendirilir, ancak gerçekte bu gösterge performansı doğrusal biçimde yansıtmaz
- Ryzen 9 5900X ortamında stress-ng ile yapılan testte, %50 kullanım oranında gerçek iş yükü %60~100 seviyesine ulaşarak göstergeyle büyük fark göstermiştir
- Bunun başlıca nedeni hyper-threading ve turbo boost olup, mantıksal çekirdekler arasındaki kaynak paylaşımı ve saat hızı değişimi bu metriği çarpıtır
- Bu nedenle basit CPU kullanım oranı yerine, gerçekte işlenebilen iş yüküne ait benchmark ile mevcut throughput karşılaştırması daha doğru bir göstergedir
- CPU kullanım oranını doğrusal yorumlamak performans tahmininde büyük hatalara yol açtığından, sistem planlamasında benchmark temelli yaklaşım gerekir
Sunucudaki CPU kullanım oranı ile gerçek throughput arasındaki uyumsuzluk
- Sunucu işletirken birçok kişi sistemin azami kullanım oranına yaklaşıp yaklaşmadığını görmek ister
- Genelde
top gibi izleme araçları üzerinden ağ, bellek ve CPU kullanım oranları içinde en yüksek olan değere bakılır
- Ancak pratikte CPU kullanım oranı ile işlenebilen iş yükünün doğrusal artmaması sorunu ortaya çıkar
Test ortamı ve yöntem
- Ubuntu masaüstü + Ryzen 9 5900X (12 çekirdek/24 thread) tabanlı deney
- Precision Boost Overdrive (Turbo) etkin
- stress-ng ile çeşitli yükler simüle edildi (1~24 worker, %1~100 kullanım oranı)
- Ölçüm metrikleri: sistemin raporladığı CPU kullanım oranı ve gerçek hesaplama miktarı (Bogo ops)
Sonuç özeti
- Genel CPU yükü: %50 kullanım oranında gerçek throughput %60~65
- 64 bit tamsayı işlemleri: %50 kullanım oranında throughput %65~85
- Matris işlemleri (Matrix math): %50 kullanım oranında throughput %80~100
- Gerçekte ek worker performansa katkı yapmasa da CPU kullanım oranı yükselir
Neden analizi
-
Hyper-threading
- 12 fiziksel çekirdek + 12 mantıksal çekirdek yapısı
- 12 veya daha az worker fiziksel çekirdeklere en uygun şekilde yerleştirilir, ancak bu sayı aşıldığında mantıksal çekirdek paylaşımı nedeniyle performans düşer
- Özellikle SIMD işlemlerinde (matris işlemleri) paylaşılan kaynaklar yüzünden performans artışı mümkün olmaz
-
Turbo boost
- Düşük yükte 4.9GHz → tam yükte 4.3GHz ile %15 saat hızı düşüşü
- CPU kullanım oranı hesaplamasında (= busy cycles / total cycles) çarpılma oluşur
- Payda (toplam cycle sayısı) küçüldükçe, kullanım oranındaki artış gerçek iş yüküne kıyasla olduğundan fazla görünür
Çıkarımlar
- CPU kullanım oranı mutlak bir performans göstergesi değildir
- Sunucu kapasite planlaması ve performans tahmini sırasında:
- 1. Benchmark ile azami throughput ölçülmeli
- 2. Gerçek zamanlı throughput izlenmeli
- 3. Bu iki değer karşılaştırılarak performans sınırına yaklaşılıp yaklaşılmadığı değerlendirilmelidir
- CPU mimarisi (AMD vs Intel), hyper-threading verimliliği ve turbo davranışı gibi etkenlere göre sapma büyük olabileceğinden işlemci bazında analiz gerekir
Sonuç
- CPU kullanım oranı yalnızca meşgul cycle oranıdır; gerçek işlem performansını doğru biçimde yansıtmaz
- Verimli kullanımda "%50 kullanım oranı" bile gerçekte azami performansın %80~100 seviyesine ulaşmış olabilir
- Bu nedenle performans izleme ve sistem planlaması, CPU kullanım oranı yerine benchmark temelli iş throughput’u etrafında şekillenmelidir
Henüz yorum yok.