Джейсон Экерт, автор учебника по Windows Server для Cengage, готовил новое издание и параллельно решил проверить: а что если запустить те же виртуальные машины не на Intel, а на Snapdragon X Elite?
Официального ISO от Microsoft для ARM64 нет, поэтому образ он собрал через UUP dump прямо с серверов обновлений. Конфигурация VM была идентичной на обоих хостах: Active Directory, DNS, DHCP, IIS, File Services, RDS и другие стандартные роли. Итог его удивил: на ARM всё работало заметно отзывчивее.
Почему ARM оказался быстрее
Дело не в архитектуре как таковой, а в характере нагрузки. Серверные роли Windows Server генерируют много мелких, частых операций с CPU и диском. Такие задачи чувствительны к задержкам и context switching. Intel Core i9 работает по принципу boost/throttle: частота резко поднимается и потом снижается под нагрузкой. Snapdragon X Elite держит стабильные часоты без скачков.
В виртуализованной среде это особенно ощутимо. Hyper-V как планировщик получает предсказуемое оборудование и распределяет время CPU между VM без лишней вариативности.
Ещё один момент: ARM64-сборка Windows Server, судя по release notes, обходится без части legacy-слоёв совместимости. Более чистый бинарник, меньше накладных расходов.
Как он это проверял
В Performance Monitor на обоих хостах добавил три счётчика:
\Processor(_Total)\% Processor Time
\System\Processor Queue Length
\Hyper-V Hypervisor Virtual Processor(*)\CPU Wait Time Per Dispatch
Нагрузку создавал через PowerShell внутри VM:
1..8 | ForEach-Object {
while ($true) { Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 | Out-Null }
}На Snapdragon
% Processor Time почти не колебался, Processor Queue Length держался на нуле, CPU Wait Time Per Dispatch был ровным. На Intel все три метрики давали заметные всплески.Затем он прогнал
Measure-Command на реальных операциях прямо внутри VM. Для IIS:Measure-Command { 1..1000 | foreach { Invoke-WebRequest http://localhost -UseBasicParsing | Out-Null } }Аналогично для DNS:
Resolve-DnsName "domainX.com" -Server 127.0.0.1 | Out-Null
Для Active Directory:
Get-ADUser -Filter * -ResultSetSize 1 | Out-Null
Для файлового I/O:
$path = "C:\TestFiles"
mkdir $path -ea 0
Measure-Command {
1..2000 | foreach {
$file = "$path\file$_.txt"
Set-Content $file "test"
Get-Content $file | Out-Null
Remove-Item $file
}
}
По всем тестам Snapdragon давал стабильный результат от прогона к прогону. Intel иногда обходил его в пике, но в среднем проигрывал.
Что с этим делать
Делайте своих ИИ-агентов. У нас как раз есть курс, но на него осталось всего 4 места. Успейте до 30 апреля!
👉 Регистрация здесь
➡️ Оригинал статьи
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#локализация