MSSQL Server’da CPU User Time ve Privileged Time Arasındaki Dengenin Önemi

Bir veritabanı yöneticisi (DBA) için CPU kullanımı sadece bir yüzdeden ibaret değildir. İşlemcinin zamanını hangi modda harcadığını anlamak, performans darboğazının kaynağını (yazılımsal sorgu hataları mı yoksa donanımsal/işletim sistemi seviyesindeki sorunlar mı) tespit etmek için kritiktir.

1. User Time (% User Time)

Bu değer, işlemcinin SQL Server’ın kendi kodlarını (sorgu işleme, sıralama, hesaplama vb.) çalıştırmak için harcadığı süreyi ifade eder.

  • Analiz: Değerin yüksek olması, SQL Server’ın aktif olarak “iş yaptığını” gösterir. Genelde sağlıklı bir sistemde CPU kullanımının büyük çoğunluğu burada olmalıdır.
  • Çok Yüksekse: Eksik indeksler, optimize edilmemiş karmaşık sorgular veya yoğun veri işleme süreçlerine işaret eder.

2. Privileged Time (% Privileged Time / Kernel Mode)

Bu değer, işlemcinin işletim sistemi çekirdeği (kernel) seviyesindeki işlemler için harcadığı süreyi gösterir. Girdi/Çıktı (I/O) işlemleri, bellek yönetimi ve ağ trafiği bu kategoriye girer.

  • Analiz: Normal şartlarda bu değerin toplam CPU kullanımına oranı %10-%15’i geçmemelidir.
  • Çok Yüksekse: Sürücü (driver) sorunları, aşırı disk I/O beklemeleri, ağ kartı hataları veya donanım kesintileri (interrupts) kontrol edilmelidir.

Aşağıdaki komut ile sql server çalışan sunucu üzerinde anlık değerleri rahatlıkla gözlemleyebiliriz.

$serverName = $env:COMPUTERNAME
$Counters = @(
   ("\\$serverName" + "\Process(sqlservr*)\% User Time"), ("\\$serverName" + "\Process(sqlservr*)\% Privileged Time")
)
Get-Counter -Counter $Counters -MaxSamples 30 | ForEach {
   $_.CounterSamples | ForEach {
       [pscustomobject]@{
           TimeStamp = $_.TimeStamp
           Path = $_.Path
           Value = ([Math]::Round($_.CookedValue, 3))
       }
       Start-Sleep -s 2
   }
}

Yukarıdaki çıktıyı bir txt uzantısına kaydedip gözlemleme yapılabilir.

Pratik Analiz Tablosu

DurumOlası NedenÖnerilen Aksiyon
Yüksek User / Düşük PrivilegedAğır sorgu yükü.Sorgu optimizasyonu ve indeksleme.
Düşük User / Yüksek PrivilegedOS veya Donanım darboğazı.Disk gecikmesi (latency) ve sürücü kontrolü.
Her ikisi de yüksekGenel kapasite yetersizliği.CPU artırımı veya yük dengeleme.

Yukarıda bulunan komutta gelen değerler (örneğin 11696,704) genellikle milisaniye cinsinden kümülatif çalışma süresini veya örnekleme anındaki yoğunluğu ifade eder. İki zaman damgası (TimeStamp) arasındaki farka bakarak, o 5 saniyelik dilimde CPU’nun ne kadar kullanıldığını anlayabilirsiniz.

Başka makalede görüşmek dileğiyle..

Alçak gönüllü şekilde yürüyün. Furkan-63

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir