为非核心频率和缓存分配技术设置包范围的 MSR

Setting Package-Wide MSRs for Uncore Frequency and Cache Allocation Technology

我正在尝试为 Intel Xeon 处理器上的不同 class 服务 (COS) 设置方式掩码。 我正在使用以下命令使 COS0 使用除最后四种缓存方式之外的所有方式:

sudo wrmsr 0xc90 0x7f0

如果我 rdmsr 处理器 0 上的 0xc90 我发现掩码已正确应用。 technical documentation 声明寄存器 0xc90 是包范围的寄存器。但是,当我从处理器一读取寄存器 0xc90 的值时,如下所示:

sudo rdmsr -p 1 0xc90

我发现缓存方式掩码尚未应用于处理器 1 的 MSR。在设置非核心频率时我有类似的输出我操纵 0x620 这也是一个包宽寄存器。

我的问题是,由于寄存器应该是包范围的,我是否需要在每个处理器上单独设置 0xc90 以使包符合所需的缓存掩码?还是封装范围的寄存器,如 0xc900x620(非核心频率比寄存器)仅从处理器 0 的 MSR 读取,然后应用于整个封装,而不管它们在其余部分中的值如何处理器?

我希望我的问题有道理。我很乐意提供任何说明。谢谢!

我犯了一个愚蠢的错误。我以为我在 运行 上述命令时关闭了 socket 1。但实际上我并没有把它关掉。所以 rdmsr -p 1 从套接字 1 而不是套接字 2 读取寄存器。@PeterCorders 的评论帮助我意识到我没有正确关闭第二个套接字。