![Prarit Bhargava](/assets/img/avatar_default.png)
This test used the cpupower utility to set the cpu frequency from the maximum turbo value to the minimum supported value in steps of 100 MHz. The results are displayed in a table which indicate the "Target" state, or the requested frequency in MHz, the Actual frequency, as read from /proc/cpuinfo, the difference between the Target and Actual frequencies, and the value of MSR 0x199 (MSR_IA32_PERF_CTL) which indicates what pstate the cpu is in, and the value of /sys/devices/system/cpu/intel_pstate/max_perf_pct X maximum turbo state Cc: Shuah Khan <shuahkh@osg.samsung.com> Cc: linux-api@vger.kernel.org Signed-off-by: Prarit Bhargava <prarit@redhat.com> Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
40 lines
643 B
C
40 lines
643 B
C
#include <math.h>
|
|
#include <unistd.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <fcntl.h>
|
|
#include <sys/timeb.h>
|
|
#include <sched.h>
|
|
#include <errno.h>
|
|
|
|
|
|
int main(int argc, char **argv) {
|
|
int cpu, fd;
|
|
long long msr;
|
|
char msr_file_name[64];
|
|
|
|
if (argc != 2)
|
|
return 1;
|
|
|
|
errno = 0;
|
|
cpu = strtol(argv[1], (char **) NULL, 10);
|
|
|
|
if (errno)
|
|
return 1;
|
|
|
|
sprintf(msr_file_name, "/dev/cpu/%d/msr", cpu);
|
|
fd = open(msr_file_name, O_RDONLY);
|
|
|
|
if (fd == -1) {
|
|
perror("Failed to open");
|
|
return 1;
|
|
}
|
|
|
|
pread(fd, &msr, sizeof(msr), 0x199);
|
|
|
|
printf("msr 0x199: 0x%llx\n", msr);
|
|
return 0;
|
|
}
|