I am trying to set way masks for different class of service (COS) on an Intel Xeon processor. I am using the following command to make COS0 use all but the last four cache ways:
sudo wrmsr 0xc90 0x7f0
If I rdmsr
the 0xc90
on processor 0 I find that the mask has been applied correctly. The technical documentation states that the register 0xc90
is a package wide register. However, when I read the value of register 0xc90
from processor one as follows:
sudo rdmsr -p 1 0xc90
I find that the cache ways mask has not been applied to processor 1's MSR. I had similar outputs when setting uncore frequency my manipulating 0x620
which is also a package wide register.
My question is that since the register is supposed to be package-wide, do I need to set 0xc90
on each processor individually to make the package adhere to the required cache mask? Or are the package wide registers such as 0xc90
and 0x620
(the uncore frequency ratio register) only read from processor 0's MSRs and then applied to the whole package regardless of the value they hold in the rest of the processors?
I hope my question makes sense. I would be glad to provide any clarification. Thank you!
I made a stupid mistake. I thought I had turned off socket 1 while running the aforementioned commands. But in reality I had not turned it off. So rdmsr -p 1
was reading registers from socket 1 instead of socket 2. @PeterCorders's comment helped me realize that I had not turned off the second socket properly.