Closed fleers closed 2 years ago
Hello,
Can you print the following please:
zgrep CONFIG_CPU_FREQ /proc/config.gz
Forget the above request. I have virtualized CentOS 8 and encountered the same issue.
A fix is available in the development branch Here is the result into the VM
When you will fetch the develop
branch, be sure :
This fix is part of CoreFreq version 1.87.4
Waiting for your confirmation before merging fix into master
Thanks. The compilation error has changed to this:
# make
cc -Wall -Wfatal-errors -pthread -c corefreqd.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreqd.o
cc -Wall -Wfatal-errors -c corefreqm.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreqm.o
cc -Wall -Wfatal-errors corefreqd.c corefreqm.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreqd -lpthread -lm -lrt
cc -Wall -Wfatal-errors -c corefreq-cli.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-cli.o
cc -Wall -Wfatal-errors -c corefreq-ui.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-ui.o
cc -Wall -Wfatal-errors -c corefreq-cli-rsc.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-cli-rsc.o
cc -Wall -Wfatal-errors -c corefreq-cli-json.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-cli-json.o
cc -Wall -Wfatal-errors -c corefreq-cli-extra.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-cli-extra.o
cc -Wall -Wfatal-errors \
corefreq-cli.c corefreq-ui.c corefreq-cli-rsc.c \
corefreq-cli-json.c corefreq-cli-extra.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-cli -lm -lrt
make -j1 -C /lib/modules/4.18.0-240.el8.x86_64/build M=/tmp/CoreFreq modules
make[1]: Entering directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
CC [M] /tmp/CoreFreq/corefreqk.o
/tmp/CoreFreq/corefreqk.c:361:17: error: initialization of ‘int (*)(int)’ from incompatible pointer type ‘int (*)(struct cpufreq_policy *, int)’ [-Werror=incompatible-pointer-types]
.set_boost = CoreFreqK_SetBoost
^~~~~~~~~~~~~~~~~~
compilation terminated due to -Wfatal-errors.
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:322: /tmp/CoreFreq/corefreqk.o] Error 1
make[1]: *** [Makefile:1544: _module_/tmp/CoreFreq] Error 2
make[1]: Leaving directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
make: *** [Makefile:76: all] Error 2
Can you replace the following lines with the code changed for each;
https://github.com/cyring/CoreFreq/blob/6e1d7d414017a24cce69edb24c5586324d0c1fa4/corefreqk.c#L15624
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) && (REDHAT != 8)
https://github.com/cyring/CoreFreq/blob/6e1d7d414017a24cce69edb24c5586324d0c1fa4/corefreqk.h#L5362
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) && (REDHAT != 8)
Next fully rebuild make clean all
EDIT My Minor is 4
, your is 3
Try the bellow lines instead.
https://github.com/cyring/CoreFreq/blob/6e1d7d414017a24cce69edb24c5586324d0c1fa4/corefreqk.c#L15624
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) \
|| ((REDHAT == 8) && (RHEL_MINOR > 3))
https://github.com/cyring/CoreFreq/blob/6e1d7d414017a24cce69edb24c5586324d0c1fa4/corefreqk.h#L5362
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) \
|| ((REDHAT == 8) && (RHEL_MINOR > 3))
# diff -u corefreqk.c.orig corefreqk.c
--- corefreqk.c.orig 2021-09-26 17:42:38.405889600 -0600
+++ corefreqk.c 2021-09-26 17:44:38.486764252 -0600
@@ -15621,7 +15621,7 @@
}
}
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) || (REDHAT == 8)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) || ((REDHAT == 8) && (RHEL_MINOR > 3))
static int CoreFreqK_SetBoost(struct cpufreq_policy *policy, int state)
{
UNUSED(policy);
# diff -u corefreqk.h.orig corefreqk.h
--- corefreqk.h.orig 2021-09-26 17:42:51.556985407 -0600
+++ corefreqk.h 2021-09-26 17:45:04.314952338 -0600
@@ -5359,7 +5359,7 @@
#endif
static int CoreFreqK_SetPolicy(struct cpufreq_policy*) ;
static int CoreFreqK_Bios_Limit(int, unsigned int*) ;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) || (REDHAT == 8)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0) || ((REDHAT == 8) && (RHEL_MINOR > 3))
static int CoreFreqK_SetBoost(struct cpufreq_policy*, int) ;
#else
static int CoreFreqK_SetBoost(int) ;
# make clean && make
rm -f corefreqd corefreq-cli
make -j1 -C /lib/modules/4.18.0-240.el8.x86_64/build M=/tmp/CoreFreq clean
make[1]: Entering directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
CLEAN /tmp/CoreFreq/.tmp_versions
make[1]: Leaving directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
cc -Wall -Wfatal-errors -pthread -c corefreqd.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreqd.o
cc -Wall -Wfatal-errors -c corefreqm.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreqm.o
cc -Wall -Wfatal-errors corefreqd.c corefreqm.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreqd -lpthread -lm -lrt
cc -Wall -Wfatal-errors -c corefreq-cli.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-cli.o
cc -Wall -Wfatal-errors -c corefreq-ui.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-ui.o
cc -Wall -Wfatal-errors -c corefreq-cli-rsc.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-cli-rsc.o
cc -Wall -Wfatal-errors -c corefreq-cli-json.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-cli-json.o
cc -Wall -Wfatal-errors -c corefreq-cli-extra.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-cli-extra.o
cc -Wall -Wfatal-errors \
corefreq-cli.c corefreq-ui.c corefreq-cli-rsc.c \
corefreq-cli-json.c corefreq-cli-extra.c \
-D CORE_COUNT=256 -D TASK_ORDER=5 -D MAX_FREQ_HZ=5250000000 -D UBENCH=0 \
-o corefreq-cli -lm -lrt
make -j1 -C /lib/modules/4.18.0-240.el8.x86_64/build M=/tmp/CoreFreq modules
make[1]: Entering directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
CC [M] /tmp/CoreFreq/corefreqk.o
/tmp/CoreFreq/corefreqk.c: In function ‘CoreFreqK_IdleDriver_Init’:
/tmp/CoreFreq/corefreqk.c:15260:18: error: assignment to ‘void (*)(struct cpuidle_device *, struct cpuidle_driver *, int)’ from incompatible pointer type ‘int (*)(struct cpuidle_device *, struct cpuidle_driver *, int)’ [-Werror=incompatible-pointer-types]
].enter_s2idle = CoreFreqK_Alt_S2_MWAIT_Handler;
^
compilation terminated due to -Wfatal-errors.
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:322: /tmp/CoreFreq/corefreqk.o] Error 1
make[1]: *** [Makefile:1544: _module_/tmp/CoreFreq] Error 2
make[1]: Leaving directory '/usr/src/kernels/4.18.0-240.el8.x86_64'
make: *** [Makefile:76: all] Error 2
Can you post a link to the ISO of your current CentOS version ?
Notes for the CentOS-8.3.2011-x86_64-minimal.iso
dnf install perl-interpreter gcc make elfutils-libelf-devel
rpm -i https://vault.centos.org/8.3.2011/BaseOS/x86_64/os/Packages/
kernel-devel-4.18.0-240.el8.x86_64.rpmrpm -i https://vault.centos.org/8.3.2011/BaseOS/x86_64/os/Packages/
kernel-headers-4.18.0-240.el8.x86_64.rpm
Please try latest commit in develop
branch.
It builds successfully now! Thanks for the quick fix :-)
It builds successfully now! Thanks for the quick fix :-)
That's great !
In future commit, I have to fix build combinations among CentOS/RHEL 8 Minor 3 vs 4; do no regression testings with CentOS 7; and probably other Redhat flavours. So I'll come back to you for a final pre-release testing.
In Wiki-Support there is a list of processors supported by CoreFreq:
https://github.com/cyring/CoreFreq/wiki/CPU-support
Feel free to add a page with your screenshots and Cli output, especially corefreq-cli -s
Your data will help me a lot to find the remaining work.
Thank you.
Hello,
In develop
branch is now available a fix to compile with CentOS RHEL 8.3 and 8.4 (and still CentOS 7)
Can you give it a try ?
Your screenshots and CLI outputs are also welcomed.
Hello, here's cli output on that system -
Issues found:
PPT
Issues found:
- Architecture codename should be Rome
- HSMP does not give
PPT
According to the CPU support page in Wiki, bellow processors have the same CPUID signature
31
CPU family: 23
Model: 49
Model name: AMD EPYC 7742 64-Core Processor
Stepping: 0
8F_31
Stepping 08F_31
Stepping 0Consequently HSMP was not trigerred b/c brand AMD EPYC 7502P 32-Core Processor
was out of the Castle Peak list.
https://github.com/cyring/CoreFreq/blob/5127cc858078fbac640a443bfa9d4dabd552c5e0/corefreqk.h#L4551
I have no evidence that 8F_30
Stepping 0 specifies EPYC/Rome
https://github.com/cyring/CoreFreq/blob/5127cc858078fbac640a443bfa9d4dabd552c5e0/corefreqk.h#L1484
Hello,
Can you test the latest develop branch ? Info: Rome and Castle Peak are fixed to the same CPUID signature.
And provide in another page the output of:
corefreq-cli -s -m -c 1 -i 1 -C 1
Thank you.
Here you go
Thank you for this test.
Not the results I was expecting.
Architecture string have been changed to Zen2/EPYC/Rome
Do you confirm source code has been fetched from the develop
branch ?
make clean all
CoreFreq
againEDIT: at the present time, git log
should displayed the following latest commits
commit 3c2acf35b5f81db6649ee94c28a5cb593309fcbf (HEAD -> develop, origin/develop)
Author: CyrIng <labs@cyring.fr>
Date: Thu Oct 14 01:19:03 2021 +0200
[AMD/UMC] tWTW[DLR] associated comment fix.
commit 2a961733eb0891b7262b7e74d1b0e65eeaa4b8c4
Author: CyrIng <labs@cyring.fr>
Date: Wed Oct 13 03:45:50 2021 +0200
[AMD/Zen2/MCM] Merged Rome and Castle Peak
commit c3fe57fce655b44767d1fc8419ed7284796d4ca0
Author: CyrIng <labs@cyring.fr>
Date: Tue Oct 12 07:43:32 2021 +0200
Misc source code re-styling.
commit 34f5aacfbcd4eee17824173b83592d33a0a991f7
Author: CyrIng <labs@cyring.fr>
Date: Sun Oct 10 20:53:23 2021 +0200
GCC & Clang: source code review.
EDIT: Now using argument -n
a new line can be inserted between sections
corefreq-cli -n -s -n -m -n -c 1 -i 1 -C 1
OK, here's an updated cli output
OK, here's an updated cli output
Thank you very much. Let me know if you wish to provide more EPYC tests ?
Let me know if you wish to provide more EPYC tests ?
Yes, happy to - let me know what you would like to have.
Let me know if you wish to provide more EPYC tests ?
Yes, happy to - let me know what you would like to have.
Thanks for your help.
Technologies
|- Data Cache Unit
|- L1 Prefetcher L1 HW <OFF>
|- L2 Prefetcher L2 HW <OFF>
|- System Management Mode SMM-Lock [ ON]
|- Simultaneous Multithreading SMT [OFF]
|- PowerNow! CnQ [OFF]
|- Core C-States CCx [ ON]
|- Core Performance Boost CPB < ON>
|- Watchdog Timer WDT < ON>
|- Virtualization SVM [OFF]
|- I/O MMU AMD-V [OFF]
|- Version [ N/A]
|- Hypervisor [OFF]
|- Vendor ID [ N/A]
There is no reason to have the Data Cache Unit
disabled, unless you decided so.
Because I have an unsolved synchronization issue, I suspect those states not being ready yet when displayed.
In the UI go to the Technologies
window:
L1 HW
and L2 HW
are both OFF
*
] to refresh the CoreFreq MachineFyi, here is mine:
I believe you have disable Simultaneous Multithreading but I would like to check if the CoreFreq topology is correct with Rome ?
Once SMT enabled in your BIOS:
Build with a count of 128 CPUs
make CORE_COUNT=128 NO_UPPER=1 clean all
Restart CoreFreq
rmmod corefreqk.ko
insmod corefreqk.ko
./corefreqd
Print the Topology and Processor information
corefreq-cli -n -m -n -s
In the UI menu, select Tools
then Turbo < Select CPU >
To clearly see Temperatures, move the window by pressing [Shift] + [Left]
Press [Enter]
on a CPU to start stressing it
You can add other CPU from the same CCD
cluster (see the Topology)
[F10]
to stop the stressing loop.
Voltage Core My 3950X is giving the same P-State Vcore whatever is the stressed CPU
Probably Rome may be capable of per cluster Vcore reporting ?
Here is the Voltage
view running the Turbo Random CPU
of Tools
menu:
I had to switch to another machine - it's single socket.
Here's the cli output after SMT on
L1/L2 off and ON -
Temp. with turbo on 4 cores -
Voltage with random turbo -
I had to switch to another machine - it's single socket.
Here's the cli output after SMT on
L1/L2 off and ON -
Temp. with turbo on 4 cores -
Voltage with random turbo -
Thanks, I will update the Support wiki page.
Some questions:
corefreq-cli -M
returning some data ?1C
or 2C
to modify the frequency (for whole Processor) (if Core Performance Boost is ON, you have to disable it in the Technology window)If things OK feel free to close the issue.
RHEL are part of the new version. Closing the issue.
make
cat /etc/redhat-release
uname -a
lscpu