加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

windows – 是否可以设置服务的处理器关联,并在重新启动后保持此

发布时间:2021-01-08 07:44:38 所属栏目:Windows 来源:网络整理
导读:是否有可以更改的设置(或可以添加的reg键)来设置服务的处理器关联?我想设置亲和力,并在重新启动后保持此设置(因此在启动服务后手动更改关联对我不起作用). 某些服务(如IIS)的构建能够从注册表中读取位掩码,并在启动时使用它来设置自己的CPU关联,但这不是

是否有可以更改的设置(或可以添加的reg键)来设置服务的处理器关联?我想设置亲和力,并在重新启动后保持此设置(因此在启动服务后手动更改关联对我不起作用). 某些服务(如IIS)的构建能够从注册表中读取位掩码,并在启动时使用它来设置自己的CPU关联,但这不是每个服务的功能.

我可能会创建一个设置为触发事件的任务,事件将是“MyService service is started”…在系统事件日志中.然后该任务将运行此Powershell代码:

# TODO: Add error checking
Add-Type -TypeDefinition @'
using System;
using System.Runtime.InteropServices;
public class Affinity
{
    [DllImport("kernel32.dll")]
    static extern bool SetProcessAffinityMask(IntPtr Handle,UIntPtr AffinityMask);

    public static void SetAffinity(IntPtr Handle,UIntPtr AffinityMask)
    {
        SetProcessAffinityMask(Handle,AffinityMask);
    }
}    
'@

$Process = Get-Process MyService
If (-Not($Process))
{
    Return
}

# This is a bitmask.
$AffinityMask = New-Object UIntPtr 1

# TODO: Foreach loop to set affinity for each instance of the process
[Affinity]::SetAffinity($Process.Handle,$AffinityMask)

编辑:哈哈,对不起,这比它需要的更复杂. Powershell已经通过简单的操作内置了这种能力:

$Process = Get-Process MyService
$Process.ProcessorAffinity = 1

位掩码表示十进制值1表示“仅第一个CPU”,十进制值为2(二进制10)表示“仅第二个CPU”,十进制值为3(二进制11)表示“CPU 1和2”,等等等等.

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读