На сервере 2008 R2 я программно установить LIMIT CPU на определенный процент со следующей PowerShellустановка дросселирования процессора для каждого пользователя на сервере 2012
function Set-UserAccountCPUThrottle
{
[CmdletBinding()]
Param(
[ValidateNotNullOrEmpty()]
[parameter(Mandatory = $true)]
$UserNameToRestrict,
[Parameter(Mandatory = $false)]
[int]$CpuPercentage = 5
)
write-host "about to restrict user account $UserNameToRestrict to use ${CpuPercentage}% CPU"
try
{
$objUser = New-Object System.Security.Principal.NTAccount($UserNameToRestrict)
$local:ResolvedSID= $objUser.Translate([System.Security.Principal.SecurityIdentifier]).Value.trim()
}
catch
{
throw "Cannot resolve the User (or find its SID) for $UserNameToRestrict"
}
$regpath = "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager\Quota System\${local:ResolvedSID}"
#in creating a new key for this sid, it will remove any old item
mkdir $regpath -Force -ErrorAction stop | out-null
#as the old key if existing was removed by the above code, this will create a new value
New-ItemProperty -Path $regpath -Name "CpuRateLimit" -Value $CpuPercentage -PropertyType "DWord" -Force -ErrorAction stop | out-null
}
Однако пока это действительно создает ключ реестра за http://technet.microsoft.com/en-us/library/ff384148(v=ws.10).aspx
он имеет нулевой эффект на сервере 2012 или Windows 8. Разве это не работает или есть новый способ сделать это на сервере 2012 года?
на сервере 2008 R2, выше метод работает и не ограничивает его в процентах. мы запускаем его на тысячах серверов, иногда ограничивающих 5%, а в других случаях - 15%, и он работает безупречно. он просто не работает с 2012 годом. Спасибо за ссылки, хотя они могут привести меня в правильном направлении – klumsy
Я основываю его на учетной записи пользователя с помощью этой техники. он управляет службой Windows, запущенной под этим пользователем, и эта служба также периодически генерирует исполняемый файл. который длится около 5 минут и, поскольку он регулирует его на основе пользователя, комбинация обоих этих процессов сохраняет его под x% на сервере 2008 г. r2 – klumsy
выглядит так, как это связано с терминальными службами, а не с моим контекстом. Ну что ж. Еще одна вещь, чтобы проверить это дросселирование, я создаю запланированную задачу под пользователем, которая просто запускает команду powershell -command «while ($ true) {}», которая в одном ядре ядра принимает этот единственный процесс более 95% ... на сервере 2012, в то время как в 2008 году r2 с этим методом он удерживает его на уровне 5% или независимо от того, что я установил. – klumsy