- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
SetThreadAffinityMask() 允许为 64 个逻辑核心(处理器)设置关联掩码。但是,Windows 数据中心最多可以有 64 个 CPU,每个 CPU 都有很多内核(请参阅 here )。
>64核怎么设置线程?
附言。我在 C# 中编码,因此 .Net 答案是理想的,但 C 中的 API 也很好。
最佳答案
我使用以下代码设置处理器组和 CPU 的亲和性:
[StructLayout(LayoutKind.Sequential, Pack = 4)]
private struct _GROUP_AFFINITY
{
public UIntPtr Mask;
[MarshalAs(UnmanagedType.U2)]
public ushort Group;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U2)]
public ushort[] Reserved;
}
[DllImport("kernel32", SetLastError = true)]
private static extern Boolean SetThreadGroupAffinity(
IntPtr hThread,
ref _GROUP_AFFINITY GroupAffinity,
ref _GROUP_AFFINITY PreviousGroupAffinity);
[DllImport("kernel32", SetLastError = true)]
private static extern IntPtr GetCurrentThread();
/// <summary>
/// Sets the processor group and the processor cpu affinity of the current thread.
/// </summary>
/// <param name="group">A processor group number.</param>
/// <param name="cpus">A list of CPU numbers. The values should be
/// between 0 and <see cref="Environment.ProcessorCount"/>.</param>
public static void SetThreadProcessorAffinity(ushort groupId, params int[] cpus)
{
if (cpus == null) throw new ArgumentNullException(nameof(cpus));
if (cpus.Length == 0) throw new ArgumentException("You must specify at least one CPU.", nameof(cpus));
// Supports up to 64 processors
long cpuMask = 0;
foreach (var cpu in cpus)
{
if (cpu < 0 || cpu >= Environment.ProcessorCount)
throw new ArgumentException("Invalid CPU number.");
cpuMask |= 1L << cpu;
}
var hThread = GetCurrentThread();
var previousAffinity = new _GROUP_AFFINITY {Reserved = new ushort[3]};
var newAffinity = new _GROUP_AFFINITY
{
Group = groupId,
Mask = new UIntPtr((ulong) cpuMask),
Reserved = new ushort[3]
};
SetThreadGroupAffinity(hThread, ref newAffinity, ref previousAffinity);
}
关于c# - Windows 服务器/数据中心 : set CPU affinity with > 64 cores,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13386855/
为西欧、北美和日本提供服务的最佳 Microsoft Azure 数据中心是什么? Stack Overflow 警告我,我的问题似乎很主观,所以让我具体说一下。按这些地区的人口加权计算,哪个数据中心
使用 DSE 4.8.6 (C* 2.1.13.1218) 当我尝试在新数据中心添加新节点时,引导/节点重建总是会因流错误而中断。 来自 system.log 的错误示例: ERROR [STREAM
大家好,我是独孤风,大数据流动的作者。 最近几个概念频繁出现在大家的视野内。 什么是数据管理,数据治理,数据中心,数据中台,数据湖? 他们之间又有怎么样的区别和联系呢? 这几
我在数据中心 A 上运行 Cassandra 1.2.6 集群,每个节点都有一个空间有限的固态驱动器(大约 50% 的磁盘空间是可用的)。 现在我需要以某种方式实现对每个节点进行自动备份的方法。理想情
我浏览了这个博客Azure SF vs Docker但并没有完全解答我的疑惑。我有本地 Docker 数据中心,我想将 Azure SF 插入其中。但我觉得 DDC 正在做与 Service Fabr
我觉得我在 Windows Server 2016 上收到了有关 Docker DataCenter 的混合信号。有一些关于它在 Windows 上 native 运行的注释,但情况是否如此?是否有任
我想将 Algolia 与 graph.cool 一起使用。当我在 Algolia 中创建新应用程序时,我应该选择哪个地区??如果我没记错的话,graph.cool 后端位于都柏林...欧洲(DE)或
我已将 Debian Amazon EC2 服务器从北弗吉尼亚迁移(实际上是复制)到 VPC 内的爱尔兰数据中心。 我一直在使用this python script很想晚上做自动EBS快照备份,但是由
我尝试将东亚地区(香港位置)的存储帐户异地复制到中国 Azure 数据中心(中国华北、中国东部),但在创建存储帐户异地复制时找不到中国数据中心. 你能告诉我该怎么做吗? 最佳答案 Can you pl
我必须限制对我的 Azure 应用程序服务的公共(public)访问,因此我在 Web 配置中实现了 IP 白名单。是否需要将 Azure 数据中心 IP 范围列入白名单?我的应用服务使用 Azure
在 MarkLogic Data Hub 中运行协调时,我发现一些记录没有被协调。这是因为在 content.sjs 中遇到了一个常见的“无效实体引用”错误。 XDMP-DOCENTITYREF: x
我在美国和欧洲的 Google App Engine 数据中心都部署了一个应用程序。 (我的应用程序我们和我的应用程序欧盟) 如何根据用户的位置将用户重定向到最近的数据中心?目标是获得最佳延迟。 法国
我的问题类似于Is there a way to automatically and programmatically download the latest IP ranges used by Mi
SetThreadAffinityMask() 允许为 64 个逻辑核心(处理器)设置关联掩码。但是,Windows 数据中心最多可以有 64 个 CPU,每个 CPU 都有很多内核(请参阅 here
我正在尝试使用 Terraform 在 Azure 上的 Windows Server 2012 R2 数据中心 VM 上构建 SQL Server 2014。 这就是我的模块的样子 module "
我是一名优秀的程序员,十分优秀!