Ortamımda, ağ donanımını yükseltmeden Windows Server 2022 düğümleri arasındaki dosya transferlerini optimize etmem gerekti. SMB sıkıştırmayı etkinleştirerek bant genişliği kullanımını yazılımsal olarak azaltmak mümkündü fakat CPU kullanımının kabul edilebilir seviyeleri aşmayacağını doğrulamam gerekiyordu. İşte PowerShell ile SMB sıkıştırmasını zorlamak ve gerçek dünya etkisini ölçmek için izlediğim adımlar.
Why Use SMB Compression in Windows Server 2022
Windows Server 2022 ile gelen SMB sıkıştırması, istemci ve sunucu desteği varsa SMB trafiğini şeffaf bir şekilde sıkıştırır. Ağ bant genişliği sınırlı ama CPU boşluğunun olduğu senaryolarda özellikle faydalıdır. Üçüncü parti araçlardan farklı olarak protokol seviyesinde çalışır ve uygulamalarda herhangi bir değişiklik gerektirmez. 1 Gbps bağlantılı dosya sunucuları arasında yedekleme pencerelerini kısaltmak için bunu etkinleştirdim.
Enabling SMB Compression with PowerShell
Sıkıştırma zorlamak için Set-SmbServerConfiguration cmdlet'ini kullandım. Bu, uyumlu istemciler için sunucunun sıkıştırma denemesini sağlar.
Set-SmbServerConfiguration -EnableCompression $true
Ayarın yeniden başlatmadan sonra da devam ettiğini doğrulamak için şunu kontrol ettim:
Get-SmbServerConfiguration | Select-Object EnableCompression
İstemci tarafında sıkıştırmanın gerçekten anlaşlaştırıldığını şu komutla teyit ettim:
Get-SmbConnection | Where-Object {$_.RemoteName -eq 'FILESERVER01'} | Select-Object CurrentDialect, Compression
Sıkıştırma 'True' olarak gösteriliyorsa, bağlantı aktif olarak trafiği sıkıştırıyor demektir.
Measuring CPU Impact During Transfer
CPU yükünü değerlendirmek için 50 GB boyutundaki bir sanal makine dosyasını Robocopy ile kopyalarken performansı izledim.
Öncelikle her 5 saniyede bir CPU kullanımını kaydetmek için bir arka plan PowerShell işi başlattım:
$job = Start-Job -ScriptBlock {
while ($true) {
Get-Counter '\Processor(_Total)\% Processor Time' | Select-Object -ExpandProperty CounterSamples | Select-Object Timestamp, CookedValue
Start-Sleep -Seconds 5
}
}
Sonra transferi başlattım:
Robocopy C:\VMs\ D:\Backup\VMs\ Win10_22H2.vhdx /COPYALL /J /R:2 /W:5
Kopyalama tamamlandığında işi durdurdum ve kaydı alıyorum:
Stop-Job $job
Receive-Job $job | Sort-Object Timestamp | ConvertTo-Csv -NoTypeInformation > cpu_during_smbcomp.csv
SMB sıkıştırması devre dışı bırakılmış haliyle (-EnableCompression $false) karşılaştırma için testi tekrarladım.
Results: Bandwidth Savings vs CPU Cost
Sıkıştırma etkin olduğunda:
- Transfer süresi 12 dakikadan 7 dakikaya düştü (%40 daha hızlı)
- Ortalama CPU kullanımı %15'den %45'e çıktı
- Sıkıştırma artışları sırasında CPU %60'ya kadar çıktı
Sıkıştırma devre dışı olduğunda:
- CPU %20'nin altında kaldı
- Ağ kullanımı ~115 Mbps'te saturate oldu
Bu değiş tokuz avantajlı çıktı: CPU pikolar sırasında bile %70'nin altında kaldı ve zaman kazancı overhead'i karşılaştı. Yedekleme pencereleri veya düşük yoğunluk senkronizasyonu için bu bir kazanım.
When to Avoid Forced Compression
Yüksek işlem hacmine sahip veritabanlarını barındıran SQL Server sanal makinelerinde sıkıştırma zorlamayı devre dışı bıraktım. Senkron yazmalar sırasında ekstra CPU yükü daraltmaya yol açabilirdi. SQL performansını izleme konulu yazımda da belirttiğim gibi, herhangi bir ana seviye optimizasyonu etkinleştirmeden önce temel metrikler elde etmek kritik.
Ayrıca sıkıştırma zaten sıkıştırılmış dosyalar (JPEG, ZIP veya şifrelenmiş VHD gibi) için çok fayda sağlamaz. Bu durumlarda sadece CPU maliyeti artar, kazanç minimal olur.
Tip: Use Monitoring to Validate
Sıkıştırma etkinleştirilmeden ve ettikten sonra en az 10 dakika boyunca CPU ve SMB bayt/saniyesi değerlerini loglamayı öneririm. Performans İzleyici veya basit bir script kullanarak karşılaştırma yapabilirsiniz. CPU sıkıştırma sırasında düzenli olarak %70'nin üstüne çıkıyorsa, yeniden değerlendirme yapmalı veya QoS üzerinden sınırlama uygulamalısınız.
Final Thoughts
Windows Server 2022'de PowerShell ile SMB sıkıştırmasını zorlamak basit fakat etkisini ölçmek üretimde güvenli kullanım için kritik. Benim kurulumumda, ağ yükseltmesi yapılamadığı durumlarda da CPU'yu aşırı yüklemeden yedekleme sürelerini önemli ölçüde kısaltabildim — bu bir pratik kazanım.
Kapak görseli: Negative Space · CC0 (Openverse / kamu malı) · https://stocksnap.io/photo/macbook-laptop-X0CYLUO8E0
