Hast Du Probleme mit Hardware, die durch die anderen Foren nicht abgedeckt werden? Schau auch in den "
Tipps und Tricks"-Bereich.
-
mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Beitrag
von mistersixt » 22.09.2022 10:58:44
Moin moin,
ich habe hier eine Intel i7-12700 CPU, die anscheinend 8 p-cores (performance) und 4 e-cores (efficiency) hat, mit HT der 8 p-cores scheinen es in der Summe 20 Cores zu sein:
Code: Alles auswählen
lscpu:
...
CPU(s): 20
On-line CPU(s) list: 0-19
Thread(s) per core: 1
Core(s) per socket: 12
Socket(s): 1
NUMA node(s): 1
...
Wie bekomme ich aber heraus, welches die p- bzw. e-cores sind? Beispielsweise wenn ich eine Applikation zwingend auf den p-cores laufen lassen möchte?
Kernel ist 5.18.0 mit Debian Bullseye.
Danke und Gruss,
mistersixt.
--
System: Debian Bookworm, 6.5.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 4.0 Ghz., Radeon RX 5700 XT, 16 GB Ram, XFCE
-
mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Beitrag
von mistersixt » 22.09.2022 11:36:08
Beim Booten sieht das übrigens so aus:
Code: Alles auswählen
[ 0.048798] smpboot: Estimated ratio of average max frequency by base frequency (times 1024): 2291
[ 0.048798] smpboot: CPU0: 12th Gen Intel(R) Core(TM) i7-12700 (family: 0x6, model: 0x97, stepping: 0x2)
[ 0.048798] cblist_init_generic: Setting adjustable number of callback queues.
[ 0.048798] cblist_init_generic: Setting shift to 5 and lim to 1.
[ 0.048798] cblist_init_generic: Setting shift to 5 and lim to 1.
[ 0.048798] cblist_init_generic: Setting shift to 5 and lim to 1.
[ 0.048798] Performance Events: XSAVE Architectural LBR, PEBS fmt4+-baseline, AnyThread deprecated, Alderlake Hybrid events, 32-deep LBR, full-width counters, Intel PMU driver.
[ 0.048798] core: cpu_core PMU driver:
[ 0.048798] ... version: 5
[ 0.048798] ... bit width: 48
[ 0.048798] ... generic registers: 8
[ 0.048798] ... value mask: 0000ffffffffffff
[ 0.048798] ... max period: 00007fffffffffff
[ 0.048798] ... fixed-purpose events: 4
[ 0.048798] ... event mask: 0001000f000000ff
[ 0.048798] rcu: Hierarchical SRCU implementation.
[ 0.048798] NMI watchdog: Enabled. Permanently consumes one hw-PMU counter.
[ 0.048798] smp: Bringing up secondary CPUs ...
[ 0.048798] x86: Booting SMP configuration:
[ 0.048798] .... node #0, CPUs: #1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16
[ 0.010087] core: cpu_atom PMU driver: PEBS-via-PT
[ 0.010087] ... version: 5
[ 0.010087] ... bit width: 48
[ 0.010087] ... generic registers: 6
[ 0.010087] ... value mask: 0000ffffffffffff
[ 0.010087] ... max period: 00007fffffffffff
[ 0.010087] ... fixed-purpose events: 3
[ 0.010087] ... event mask: 000000070000003f
[ 0.083897] #17 #18 #19
[ 0.094208] smp: Brought up 1 node, 20 CPUs
[ 0.094208] smpboot: Max logical packages: 1
[ 0.094208] smpboot: Total of 20 processors activated (84480.00 BogoMIPS)
--
System: Debian Bookworm, 6.5.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 4.0 Ghz., Radeon RX 5700 XT, 16 GB Ram, XFCE
-
schorsch_76
- Beiträge: 2543
- Registriert: 06.11.2007 16:00:42
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von schorsch_76 » 22.09.2022 11:42:45
Ich würde das so machen: Beim Start der Anwendung CORE_NUM Threads starten und auf CPU 0..N-1 pinnen. (sched_setaffinity). Alle Threads starten eine gleiche Aufgabe. Bsp. Atomat bis 1000000 zählen. Die Zeit wird gemessen. Kurze Zeiten sind P Cores. Lange Zeiten sind die langsamen Kerne. Dann wähle deinen Kern und pinne deinen Thread daran.
-
mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Beitrag
von mistersixt » 22.09.2022 11:45:07
Ich glaube, man kann es am Maximaltakt herausgrabbeln:
Code: Alles auswählen
root@uranus:~# lscpu --all --extended
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
0 0 0 0 0:0:0:0 yes 4900.0000 800.0000
1 0 0 0 0:0:0:0 yes 4900.0000 800.0000
2 0 0 1 1:1:1:0 yes 4900.0000 800.0000
3 0 0 1 1:1:1:0 yes 4900.0000 800.0000
4 0 0 2 2:2:2:0 yes 4900.0000 800.0000
5 0 0 2 2:2:2:0 yes 4900.0000 800.0000
6 0 0 3 3:3:3:0 yes 4900.0000 800.0000
7 0 0 3 3:3:3:0 yes 4900.0000 800.0000
8 0 0 4 4:4:4:0 yes 4900.0000 800.0000
9 0 0 4 4:4:4:0 yes 4900.0000 800.0000
10 0 0 5 5:5:5:0 yes 4900.0000 800.0000
11 0 0 5 5:5:5:0 yes 4900.0000 800.0000
12 0 0 6 6:6:6:0 yes 4900.0000 800.0000
13 0 0 6 6:6:6:0 yes 4900.0000 800.0000
14 0 0 7 7:7:7:0 yes 4900.0000 800.0000
15 0 0 7 7:7:7:0 yes 4900.0000 800.0000
16 0 0 8 8:8:8:0 yes 3600.0000 800.0000
17 0 0 9 9:9:8:0 yes 3600.0000 800.0000
18 0 0 10 10:10:8:0 yes 3600.0000 800.0000
19 0 0 11 11:11:8:0 yes 3600.0000 800.0000
root@uranus:~#
DIe e-cores sind sicherlich 16 bis 19.
Aber die Idee mit einem kleinen Leistungstest würde natürlich auch klappen
.
--
System: Debian Bookworm, 6.5.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 4.0 Ghz., Radeon RX 5700 XT, 16 GB Ram, XFCE
-
schorsch_76
- Beiträge: 2543
- Registriert: 06.11.2007 16:00:42
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von schorsch_76 » 22.09.2022 11:48:23
mistersixt hat geschrieben: 22.09.2022 11:45:07
Ich glaube, man kann es am Maximaltakt herausgrabbeln:
Code: Alles auswählen
root@uranus:~# lscpu --all --extended
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
0 0 0 0 0:0:0:0 yes 4900.0000 800.0000
1 0 0 0 0:0:0:0 yes 4900.0000 800.0000
2 0 0 1 1:1:1:0 yes 4900.0000 800.0000
3 0 0 1 1:1:1:0 yes 4900.0000 800.0000
4 0 0 2 2:2:2:0 yes 4900.0000 800.0000
5 0 0 2 2:2:2:0 yes 4900.0000 800.0000
6 0 0 3 3:3:3:0 yes 4900.0000 800.0000
7 0 0 3 3:3:3:0 yes 4900.0000 800.0000
8 0 0 4 4:4:4:0 yes 4900.0000 800.0000
9 0 0 4 4:4:4:0 yes 4900.0000 800.0000
10 0 0 5 5:5:5:0 yes 4900.0000 800.0000
11 0 0 5 5:5:5:0 yes 4900.0000 800.0000
12 0 0 6 6:6:6:0 yes 4900.0000 800.0000
13 0 0 6 6:6:6:0 yes 4900.0000 800.0000
14 0 0 7 7:7:7:0 yes 4900.0000 800.0000
15 0 0 7 7:7:7:0 yes 4900.0000 800.0000
16 0 0 8 8:8:8:0 yes 3600.0000 800.0000
17 0 0 9 9:9:8:0 yes 3600.0000 800.0000
18 0 0 10 10:10:8:0 yes 3600.0000 800.0000
19 0 0 11 11:11:8:0 yes 3600.0000 800.0000
root@uranus:~#
DIe e-cores sind sicherlich 16 bis 19.
Aber die Idee mit einem kleinen Leistungstest würde natürlich auch klappen
.
Das funktioniert aber nur bei unterschiedlichen Taktraten der P/E Cores. Neuere noch unbekannte Modelle könnten gleiche Taktraten haben dann fällt das auseinander.
-
mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Beitrag
von mistersixt » 22.09.2022 11:51:46
schorsch_76 hat geschrieben: 22.09.2022 11:48:23
mistersixt hat geschrieben: 22.09.2022 11:45:07
Ich glaube, man kann es am Maximaltakt herausgrabbeln:
Code: Alles auswählen
root@uranus:~# lscpu --all --extended
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ
0 0 0 0 0:0:0:0 yes 4900.0000 800.0000
1 0 0 0 0:0:0:0 yes 4900.0000 800.0000
2 0 0 1 1:1:1:0 yes 4900.0000 800.0000
3 0 0 1 1:1:1:0 yes 4900.0000 800.0000
4 0 0 2 2:2:2:0 yes 4900.0000 800.0000
5 0 0 2 2:2:2:0 yes 4900.0000 800.0000
6 0 0 3 3:3:3:0 yes 4900.0000 800.0000
7 0 0 3 3:3:3:0 yes 4900.0000 800.0000
8 0 0 4 4:4:4:0 yes 4900.0000 800.0000
9 0 0 4 4:4:4:0 yes 4900.0000 800.0000
10 0 0 5 5:5:5:0 yes 4900.0000 800.0000
11 0 0 5 5:5:5:0 yes 4900.0000 800.0000
12 0 0 6 6:6:6:0 yes 4900.0000 800.0000
13 0 0 6 6:6:6:0 yes 4900.0000 800.0000
14 0 0 7 7:7:7:0 yes 4900.0000 800.0000
15 0 0 7 7:7:7:0 yes 4900.0000 800.0000
16 0 0 8 8:8:8:0 yes 3600.0000 800.0000
17 0 0 9 9:9:8:0 yes 3600.0000 800.0000
18 0 0 10 10:10:8:0 yes 3600.0000 800.0000
19 0 0 11 11:11:8:0 yes 3600.0000 800.0000
root@uranus:~#
DIe e-cores sind sicherlich 16 bis 19.
Aber die Idee mit einem kleinen Leistungstest würde natürlich auch klappen
.
Das funktioniert aber nur bei unterschiedlichen Taktraten der P/E Cores. Neuere noch unbekannte Modelle könnten gleiche Taktraten haben dann fällt das auseinander.
Bis dahin wird es sicherlich einen neueren Kernel geben, der das besser aufdröselt
!
--
System: Debian Bookworm, 6.5.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 4.0 Ghz., Radeon RX 5700 XT, 16 GB Ram, XFCE
-
schorsch_76
- Beiträge: 2543
- Registriert: 06.11.2007 16:00:42
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von schorsch_76 » 22.09.2022 11:53:06
mistersixt hat geschrieben: 22.09.2022 11:51:46
Bis dahin wird es sicherlich einen neueren Kernel geben, der das besser aufdröselt
!
Wünschen und hoffen .....
..... wäre mir zu unsicher aber deine Entscheidung
-
mistersixt
- Beiträge: 6601
- Registriert: 24.09.2003 14:33:25
- Lizenz eigener Beiträge: GNU Free Documentation License
Beitrag
von mistersixt » 22.09.2022 11:56:28
schorsch_76 hat geschrieben: 22.09.2022 11:53:06
mistersixt hat geschrieben: 22.09.2022 11:51:46
Bis dahin wird es sicherlich einen neueren Kernel geben, der das besser aufdröselt
!
Wünschen und hoffen .....
..... wäre mir zu unsicher aber deine Entscheidung
Man kann vermutlich/anscheinend auch an der Spalte "CORE" sehen (sofern man SMT eingeschaltet hat im BIOS): die Kerne 0-15 gehören immer paarweise zu einem Core, und bei 16-19 ist immer ein Core auch eine CPU (weil die ATOMs kein SMT haben).
--
System: Debian Bookworm, 6.5.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 4.0 Ghz., Radeon RX 5700 XT, 16 GB Ram, XFCE