Производительность 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
Модули Ansible для Windows используют PowerShell. Эта оптимизация сокращает время запуска 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.10/user_guide/windows_performance.html