1

サーバー2008 R2で、次のPowerShellを使用して、プログラムでCPU LIMITを特定のパーセンテージに設定しました

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でこれを行う新しい方法はありますか?

4

1 に答える 1

2

TechNetのこのページによると、合計CPU使用率が70%を超えない限り、リソース管理は実施されません。

あなたのマシンはとても忙しいですか?このページでは、リソース管理が行われない可能性のある他のいくつかのケースについても説明しています。

あなたは自分が何をコントロールしようとしているのかを正確に述べていませんでした。ワークロードがRDS(仮想デスクトップ、セッションベースのデスクトップ、またはRemoteAppプログラム)の場合、WindowsServer2012の「FairShare」機能の方が便利な場合があります。関連するスニペット:

「RDセッションホストのリソースの公平な共有。WindowsServer2012では、RDセッションホストサーバーは、CPU、ディスクI / O、およびネットワークI / Oを割り当てて、1人のユーザーが同じホスト上の他のユーザーに悪影響を与えるリソースを消費できないようにします。各ユーザーは「公平な共有」を取得します。これは最小限のオーバーヘッドで実行されるため、CPU、ディスク、およびネットワークリソースが最大容量まで使用されます。」

そのスニペットは、このtechnetページのほぼ中間にあります。

于 2013-01-30T23:18:12.943 に答える