Производительность Windows
В этом документе приведены некоторые оптимизации производительности, которые можно применить к вашим хостам Windows, чтобы ускорить их работу, особенно в контексте использования Ansible, и в целом.
Оптимизация производительности PowerShell для сокращения накладных расходов задач Ansible
Для ускорения запуска PowerShell примерно в 10 раз выполните следующий фрагмент PowerShell в сеансе администратора. Ожидайте, что это займет десятки секунд.
Примечание
Если нативные изображения уже были созданы задачей или службой ngen, вы не увидите разницы в производительности (но этот фрагмент в этом случае будет выполняться быстрее, чем обычно).
function Optimize-PowershellAssemblies {
# NGEN powershell assembly, improves startup time of powershell by 10x
$old_path = $env:path
try {
$env:path = [Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()
[AppDomain]::CurrentDomain.GetAssemblies() | % {
if (! $_.location) {continue}
$Name = Split-Path $_.location -leaf
if ($Name.startswith("Microsoft.PowerShell.")) {
Write-Progress -Activity "Native Image Installation" -Status "$name"
ngen install $_.location | % {"`t$_"}
}
}
} finally {
$env:path = $old_path
}
}
Optimize-PowershellAssemblies
PowerShell используется каждым модулем Ansible для Windows. Эта оптимизация сокращает время запуска PowerShell, удаляя эти накладные расходы из каждого вызова.
В этом фрагменте используется генератор нативных изображений ngen для предварительного создания нативных изображений для сборок, на которых зависит PowerShell.
Устранение высокой загрузки процессора при загрузке ВМ/облачных экземпляров
Если вы создаете образы золотых стандартов для запуска экземпляров, вы можете избежать задачи высокой загрузки процессора вблизи запуска, обрабатывая очередь ngen в процессе создания образов золотых стандартов, если вам известно, что типы процессоров не изменятся между процессом создания золотого образа и временем выполнения.
Поместите следующее в конец своего плана выполнения, учитывая факторы, которые могут привести к аннулированию нативных изображений (см. MSDN).
- name: generate native .NET images for CPU win_dotnet_ngen:
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/user_guide/windows_performance.html