Windows 10 sürüm 1809 çalıştıran VDI sanal makineleri ağ katmanında “canlı” görünmelerine rağmen kullanıcı oturumlarına hizmet veremez hâle gelebilir.
Sanal makine ping’e ARP isteklerine ve hatta RDP kimlik doğrulamasına yanıt verir ancak oturum bir türlü açılmaz. VMware Horizon (Omnissa) ortamlarında aynı makineler ajan tarafında “Agent Unreachable” durumuna düşebilir.
Sorunun kaynağı bir ağ, depolama veya kaynak darboğazı değildir. Sanal makinenin .vmx yapılandırma dosyasında yer alan hpet0.present = FALSE parametresidir.
Bu parametre desteklenen varsayılan değerin (TRUE) dışındadır ve Windows 10 1809’un zamanlayıcı davranışıyla uyumsuzluk yaratır.
Etkilenen bir sanal makinede tipik olarak aşağıdaki tablo görülür;
| Gözlem | Durum |
|---|---|
| ICMP (ping) yanıtı | ✅ Başarılı |
| ARP çözümlemesi | ✅ Başarılı |
| RDP kimlik doğrulaması | ✅ Kimlik bilgileri kabul ediliyor |
| RDP oturumunun açılması | ❌ Bağlantı tamamlanmıyor |
| Konsol (VM Console) erişimi | ❌ Donuk / yanıtsız ekran |
| Horizon Agent durumu | ❌ “Agent Unreachable” |
| Uygulama ve servis yanıtı | ❌ Yok veya aşırı gecikmeli |
Bu belirti kombinasyonu tanı açısından oldukça ayırt edicidir ağ yığınının alt katmanları (çekirdek düzeyinde işlenen ICMP/ARP) çalışmaya devam ederken kullanıcı modundaki oturum yönetimi ve uygulama katmanı fiilen durmuştur.
Sorunun kapsamı
- Yalnızca Windows 10 sürüm 1809 üzerinde raporlanmıştır.
- Windows 10 1803 ve daha eski derlemelerde bu davranış görülmemiştir.
- Etkilenen makineler tipik olarak 2 vCPU ile yapılandırılmıştır.
Kök Neden : HPET nedir?
High Precision Event Timer (HPET) x86 platformlarında yüksek çözünürlüklü zamanlama sağlayan bir donanım zamanlayıcısıdır. İşletim sistemi, zamanlayıcı kesmeleri, iş parçacığı zamanlaması, senkronizasyon ilkelleri ve zaman ölçümü için sistemdeki mevcut zamanlayıcı kaynaklarından birini seçer. HPET, TSC (Time Stamp Counter) ve ACPI PM Timer gibi alternatiflerin yanında yer alır.
Sanallaştırılmış ortamlarda HPET, .vmx dosyasındaki hpet0.present parametresiyle sanal makineye sunulur veya gizlenir. VMware tarafındaki desteklenen varsayılan değer TRUE‘dur.
Sorun neden ortaya çıkıyor?
Horizon VDI sanal makinelerinde HPET, performans gerekçesiyle geçmişte varsayılan olarak devre dışı bırakılmıştır (hpet0.present = FALSE). Bu yapılandırma Windows 10 1803 ve öncesinde sorunsuz çalışmıştır.
Ancak Windows 10 1809 ile birlikte çekirdek düzeyindeki zamanlayıcı seçim ve senkronizasyon mantığı değişmiştir. HPET’in bulunmadığı bir sanal donanım profilinde 1809 çekirdeği, beklediği zamanlayıcı kaynağını bulamadığında zamanlama tabanlı senkronizasyon işlemlerinde takılmaya girer. Sonuç olarak:
- Zamanlayıcıya bağımlı çekirdek nesneleri (timer, DPC kuyrukları) ilerleyemez.
- Kullanıcı modu servisleri ve oturum yöneticisi (LSASS/Winlogon/TermService zinciri) bloklanır.
- Buna karşın ağ sürücüsü seviyesinde işlenen ICMP ve ARP yanıtları etkilenmez.
Bu, ping’in cevap verip oturumun açılmaması çelişkisinin teknik açıklamasıdır.
Doğrulama: Sanal Makine Bu Sorundan mı Etkileniyor?
Çözümü uygulamadan önce parametrenin gerçekten FALSE olduğunu doğrulayın.
vSphere Client üzerinden
- Sanal makineye sağ tıklayın → Edit Settings
- VM Options sekmesine geçin
- Advanced bölümünü genişletin → Configuration Parameters → Edit Configuration
- Listede
hpet0.presentsatırını arayın ve değerini kontrol edin
PowerCLI ile toplu tarama
Ortamdaki tüm sanal makineleri tek seferde denetlemek için:
Get-VM | ForEach-Object {
$hpet = ($_ | Get-AdvancedSetting -Name "hpet0.present").Value
[PSCustomObject]@{
VM = $_.Name
PowerState = $_.PowerState
OS = $_.Guest.OSFullName
HPET = if ($null -eq $hpet) { "Tanımsız (varsayılan)" } else { $hpet }
}
} | Where-Object { $_.HPET -eq $false } | Format-Table -AutoSize
Bu komut, hpet0.present değeri FALSE olan tüm sanal makineleri listeler.
ESXi kabuğundan
grep -i "hpet0.present" /vmfs/volumes/<datastore>/<vm-adı>/<vm-adı>.vmx
Çözüm
hpet0.present parametresini TRUE değerine getirmek sorunu giderir.
Önemli: Bu değişiklik yalnızca sanal makine kapalıyken yapılabilir.
Çalışan bir makinede parametre düzenlense bile değişiklik etkin olmaz.
Yöntem 1 : vSphere Client (Grafik Arayüz)
- Sanal makinenin düzgün şekilde kapatıldığından (Powered Off) emin olun.
- Sanal makineye sağ tıklayın.
- Edit Settings… seçeneğine tıklayarak Sanal Makine Özellikleri penceresini açın.
- VM Options sekmesine geçin. (Eski vSphere Client sürümlerinde: Options sekmesi)
- Soldaki listeden Advanced > General yolunu izleyin.
- Sağdaki Configuration Parameters çerçevesinde Configuration Parameters… / Edit Configuration… düğmesine tıklayın.
hpet0.presentparametresini bulun ve değeriniFALSEyerineTRUEolarak değiştirin.- OK ile onaylayın.
- Ayarların etkin olması için sanal makineyi başlatın.
Yöntem 2 : PowerCLI (Tekil Makine)
$vm = Get-VM -Name "VDI-Win10-01"
# Makinenin kapalı olduğundan emin olun
if ($vm.PowerState -ne "PoweredOff") {
Stop-VM -VM $vm -Confirm:$false
Start-Sleep -Seconds 30
}
# Parametreyi güncelle
Get-AdvancedSetting -Entity $vm -Name "hpet0.present" |
Set-AdvancedSetting -Value $true -Confirm:$false
# Makineyi başlat
Start-VM -VM $vm
Yöntem 3 : PowerCLI (Toplu Düzeltme)
Çok sayıda VDI makinesinin etkilendiği ortamlarda:
$hedefVMler = Get-VM | Where-Object {
($_ | Get-AdvancedSetting -Name "hpet0.present").Value -eq $false
}
foreach ($vm in $hedefVMler) {
Write-Host "İşleniyor: $($vm.Name)" -ForegroundColor Cyan
if ($vm.PowerState -eq "PoweredOn") {
Shutdown-VMGuest -VM $vm -Confirm:$false -ErrorAction SilentlyContinue
# Konuk işletim sistemi yanıt vermiyorsa sert kapatma gerekebilir
$sayac = 0
while ((Get-VM $vm.Name).PowerState -eq "PoweredOn" -and $sayac -lt 12) {
Start-Sleep -Seconds 10
$sayac++
}
if ((Get-VM $vm.Name).PowerState -eq "PoweredOn") {
Stop-VM -VM $vm -Confirm:$false
}
}
Get-AdvancedSetting -Entity $vm -Name "hpet0.present" |
Set-AdvancedSetting -Value $true -Confirm:$false
Start-VM -VM $vm
Write-Host "Tamamlandı: $($vm.Name)" -ForegroundColor Green
}
Not: Toplu işlemi bakım penceresinde ve dalgalar hâlinde (örneğin 20–30 makinelik gruplar) çalıştırın. Aynı anda çok sayıda makinenin yeniden başlatılması depolama alt sistemi üzerinde “boot storm” etkisi yaratabilir.
VMware Horizon (Omnissa) Ortamlarında Kalıcı Çözüm.
Instant Clone veya Linked Clone kullanan Horizon ortamlarında yalnızca mevcut makineleri düzeltmek yeterli değildir. Pool yeniden oluşturulduğunda aynı parametre tekrar dağıtılır.
Kalıcı çözüm için sırasıyla:
- Golden Image / Parent VM üzerinde
hpet0.present = TRUEolarak ayarlayın. - Yeni bir snapshot alın.
- İlgili masaüstü havuzunu (Desktop Pool) yeni snapshot ile Push Image / Recompose işlemine tabi tutun.
- Havuzdaki tüm makinelerin yeni imajla yeniden oluşturulduğunu doğrulayın.
- Kullanılan otomasyon şablonlarında veya dağıtım betiklerinde
hpet0.present = FALSEsatırının kalmadığını kontrol edin.
Kontrol Listesi
Düzeltme sonrasında aşağıdaki maddeleri doğrulayın:
- [ ]
hpet0.presentdeğeriTRUEolarak görünüyor - [ ] Sanal makine yeniden başlatıldı (parametre değişikliği sonrası zorunlu)
- [ ] Konsol üzerinden oturum açılabiliyor
- [ ] RDP bağlantısı kimlik doğrulamanın ötesine geçip oturumu açıyor
- [ ] Horizon Administrator konsolunda ajan durumu Available olarak raporlanıyor
- [ ] Golden Image ve dağıtım şablonları güncellendi
- [ ] Yeni oluşturulan makinelerde parametre doğru şekilde miras alınıyor
Sık Sorulan Sorular
Sanal makine çalışırken parametreyi değiştirebilir miyim? Hayır. hpet0.present sanal donanım katmanına ait bir parametredir ve yalnızca sanal makine açılırken okunur. Değişikliğin etkin olması için makinenin tamamen kapatılıp yeniden başlatılması gerekir. Yalnızca konuk işletim sisteminden yapılan bir “restart” yeterli değildir.
HPET’i etkinleştirmek performansı olumsuz etkiler mi? HPET, TSC’ye kıyasla teorik olarak daha maliyetli bir zamanlayıcı kaynağıdır ve geçmişte VDI ortamlarında bu nedenle kapatılmıştır. Ancak modern ESXi sürümlerinde ve güncel Windows çekirdeklerinde işletim sistemi genellikle TSC’yi tercih etmeye devam eder; HPET yalnızca mevcut bir kaynak olarak sunulur. Ölçülebilir bir performans kaybı beklenmemeli, buna karşılık kararlılık kazanımı belirgindir. VMware tarafındaki desteklenen yapılandırma TRUE‘dur.
Parametre .vmx dosyasında hiç yoksa ne yapmalıyım? Parametrenin tanımlı olmaması varsayılan davranışın (TRUE) geçerli olduğu anlamına gelir; bu durumda ek işlem gerekmez. Yine de açıkça tanımlamak isterseniz PowerCLI’da New-AdvancedSetting -Name "hpet0.present" -Value $true komutunu kullanabilirsiniz.
Windows 10 1809’u güncellemek sorunu çözer mi? 1903 ve sonrası derlemelere yükseltmek sorunun görülme sıklığını azaltabilir; ancak asıl düzeltme desteklenen yapılandırmaya dönmektir. Sorun bir Windows hatasından çok, desteklenmeyen bir sanal donanım yapılandırmasıyla ortaya çıkan bir uyumsuzluktur.
Aynı belirtiyi gösteren başka nedenler olabilir mi? Evet. Ping’e yanıt veren ancak oturum açmayan bir makine; depolama gecikmesi (yüksek latency), kaynak yetersizliği (CPU ready / memory ballooning), disk doluluğu veya konuk işletim sistemindeki bir hizmet arızası nedeniyle de aynı görüntüyü verebilir. Bu nedenle hpet0.present değerini doğrulamak, tanıyı kesinleştirmenin en hızlı yoludur.
Önleme Önerileri
- Sanal makine şablonlarınızı ve dağıtım otomasyonlarınızı düzenli olarak denetleyerek desteklenmeyen
.vmxparametrelerinin bulunmadığından emin olun. - Yukarıdaki PowerCLI tarama betiğini periyodik bir sağlık kontrolü (health check) görevi olarak zamanlayın.
- İşletim sistemi sürüm yükseltmelerinden önce sanal donanım yapılandırmasının ilgili sürüm için desteklendiğini doğrulayın.
- Yapılandırma sapmalarını (configuration drift) izlemek için bir referans (baseline) yapılandırma tanımlayın.
![[TR] Windows 10 VDI Sanal Makineleri Yanıt Vermiyor, Ancak Ping’e Cevap Veriyor](https://kadirkozan.com/wp-content/uploads/2026/03/windows-11.jpg)
![[EN] Windows 10 (1809) VDI Virtual Machines Appear Unresponsive but Respond to Ping](https://kadirkozan.com/wp-content/uploads/2026/03/windows-11-150x150.jpg)