Я могу читать/записывать регистр MSR, но я не знаю, как указать, какой MSR должен быть запущен.Как я могу прочитать регистр конкретного ядра (счетчик производительности)?
Например, я хочу записывать пропуски тайного кэша L2 для каждого ядра соответственно, поэтому мне нужно указать идентификатор ядра для каждого ядра.
Я знаю smp_call_function(), чтобы вызывать код на всех ядрах. Если я добавлю insn, который записывает идентификатор ядра, этот код запускается и использует smp_call_function(), он должен работать. Но если я только хочу узнать про 1-й личный кеш-память ядра 1, мне придется оставить все ядра, записывая номер, который не является опрятным для меня.
Есть ли лучшее решение для этого?
Мои коды для чтения/записи операции MSR:
mov $0x0001010E, %eax # Write selector value to EAX
xor %edx, %edx # Zero EDX
mov $0x187, %ecx # Write logical register id to ECX (IA32_PERFEVTSEL1)
wrmsr
mov $0xc2, %ecx # Address of MSR IA32_PMC1
rdmsr # Read value into EAX:EDX (EAX contains low-order bytes)
Большое вам спасибо! Я думаю, это должно сработать! :) – Mike