This time, a less serious article, meant to be treated as a fun fact 😉
Every AIX administrator knows the available multithreading settings, which are:
- SMT=off
- SMT=2
- SMT=4
- SMT=8
But how does this look in the case of Linux on a Power10 server?
It turns out that SMT settings can be configured not only to 1, 2, 4, and 8 threads but also to 3, 5, 6, and 7 threads (!!)
Many people might ask, “Why do this??”
I have no idea. 😊
I don’t think anyone has a practical need for such an unconventional configuration, but I’m sharing this information as an interesting fact. I was quite surprised to learn that such a setting is even possible.
Maybe it’s also doable in AIX? Below is an example of my attempt:
aix_test:[//]# smtctl -t 3
smtctl: The value given for the -t flag is invalid.
aix_test:[//]# smtctl -t 5
smtctl: The value given for the -t flag is invalid.
aix_test:[//]# smtctl -t 6
smtctl: The value given for the -t flag is invalid.
aix_test:[//]# smtctl -t 7
smtctl: The value given for the -t flag is invalid.
aix_test:[//]# smtctl -t 4
smtctl: SMT is now enabled. It will persist across reboots if
you run the bosboot command before the next reboot.
aix_test:[//]# smtctl -t 8
smtctl: SMT is now enabled. It will persist across reboots if
you run the bosboot command before the next reboot.
I only confirmed what was already known.
So, how do you change the setting in the case of RHEL9 on a Power10 server?
To change the setting, I used the ppc64_cpu command, which can be installed along with the powerpc-utils-core package (# dnf install powerpc-utils-core).
# dnf install powerpc-utils-core
To change the SMT setting, you can simply run the following command:
[root@rhel9_test~]# ppc64_cpu --smt=X
First, let’s compare the standard settings for SMT=8 (default)
Default settings: SMT=8
[root@rhel9_test ~]# grep 'processor' /proc/cpuinfo
processor : 0
processor : 1
processor : 2
processor : 3
processor : 4
processor : 5
processor : 6
processor : 7
[root@rhel9_test ~]#
[root@rhel9_test ~]# lscpu | grep -e "Model name" -e Thread -e list
On-line CPU(s) list: 0-7
Model name: POWER10 (architected), altivec supported
Thread(s) per core: 8
Below is an example of changing SMT to an “unusual” value and checking the current configuration.
SMT=7
[root@rhel9_test~]# ppc64_cpu --smt=7
[root@rhel9_test~]# grep 'processor' /proc/cpuinfo
processor : 0
processor : 1
processor : 2
processor : 3
processor : 4
processor : 5
processor : 6
[root@rhel9_test ~]# lscpu | grep -e "Model name" -e Thread -e list
On-line CPU(s) list: 0-6
Off-line CPU(s) list: 7
Model name: POWER10 (architected), altivec supported
Thread(s) per core: 7
For testing purposes, I put a bit of load on the system.
In the screenshot below, you can see the utilization of all threads in the NMON program. The current SMT setting (SMT=7) is also visible.
SMT=6
[root@rhel9_test~]# ppc64_cpu --smt=6
[root@rhel9_test~]# grep 'processor' /proc/cpuinfo
processor : 0
processor : 1
processor : 2
processor : 3
processor : 4
processor : 5
[root@rhel9_test~]# lscpu | grep -e "Model name" -e Thread -e list
On-line CPU(s) list: 0-5
Off-line CPU(s) list: 6,7
Model name: POWER10 (architected), altivec supported
Thread(s) per core: 6
SMT=5
[root@rhel9_test~]# ppc64_cpu --smt=3
[root@rhel9_test~]# grep 'processor' /proc/cpuinfo
processor : 0
processor : 1
processor : 2
processor : 3
processor : 4
[root@rhel9_test~]# lscpu | grep -e "Model name" -e Thread -e list
On-line CPU(s) list: 0-4
Off-line CPU(s) list: 5-7
Model name: POWER10 (architected), altivec supported
Thread(s) per core: 5
SMT=3
[root@rhel9_test~]# ppc64_cpu --smt=3
[root@rhel9_test~]# grep 'processor' /proc/cpuinfo
processor : 0
processor : 1
processor : 2
[root@rhel9_test~]# lscpu | grep -e "Model name" -e Thread -e list
On-line CPU(s) list: 0-2
Off-line CPU(s) list: 3-7
Model name: POWER10 (architected), altivec supported
Thread(s) per core: 3
Summary
This publication is not particularly useful, and I don’t expect it to help you in your work with Power servers, but I hope at least it was something a little interesting 😊
Thank you for reading!