Yazılara geri dön
Yazı

Windows Server 2022'de PowerShell ile SMB Sıkıştırma Zorlama ve CPU Etkisi Ölçümü

PowerShell kullanarak SMB sıkıştırmayı etkinleştirin, dosya transfer hızlarını test edin ve CPU kullanımını izleyerek performans ve yük arasında denge kurmayı öğrenin.

WindowsWindows Server 2022SMB compressionPowerShellCPU monitoringRobocopy

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