i7-12700 --> Prozess an P-Cores "binden"?

Hast Du Probleme mit Hardware, die durch die anderen Foren nicht abgedeckt werden? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

i7-12700 --> Prozess an P-Cores "binden"?

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

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Re: i7-12700 --> Prozess an P-Cores "binden"?

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

Benutzeravatar
schorsch_76
Beiträge: 2542
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: i7-12700 --> Prozess an P-Cores "binden"?

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.

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Re: i7-12700 --> Prozess an P-Cores "binden"?

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

Benutzeravatar
Tintom
Moderator
Beiträge: 3033
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: i7-12700 --> Prozess an P-Cores "binden"?

Beitrag von Tintom » 22.09.2022 11:46:11

Ungetestet:

Zum Unterschied von P-Cores und E-Cores: https://stackoverflow.com/questions/711 ... ake-system

Den Prozess kannst du dann mittels taskset manuell an die jeweilige CPU delegieren

Benutzeravatar
schorsch_76
Beiträge: 2542
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: i7-12700 --> Prozess an P-Cores "binden"?

Beitrag von schorsch_76 » 22.09.2022 11:48:23

mistersixt hat geschrieben: ↑ zum Beitrag ↑
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.

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Re: i7-12700 --> Prozess an P-Cores "binden"?

Beitrag von mistersixt » 22.09.2022 11:51:46

schorsch_76 hat geschrieben: ↑ zum Beitrag ↑
22.09.2022 11:48:23
mistersixt hat geschrieben: ↑ zum Beitrag ↑
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

Benutzeravatar
schorsch_76
Beiträge: 2542
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: i7-12700 --> Prozess an P-Cores "binden"?

Beitrag von schorsch_76 » 22.09.2022 11:53:06

mistersixt hat geschrieben: ↑ zum Beitrag ↑
22.09.2022 11:51:46
Bis dahin wird es sicherlich einen neueren Kernel geben, der das besser aufdröselt :-) !
Wünschen und hoffen ..... :mrgreen: ..... wäre mir zu unsicher aber deine Entscheidung ;)

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Re: i7-12700 --> Prozess an P-Cores "binden"?

Beitrag von mistersixt » 22.09.2022 11:56:28

schorsch_76 hat geschrieben: ↑ zum Beitrag ↑
22.09.2022 11:53:06
mistersixt hat geschrieben: ↑ zum Beitrag ↑
22.09.2022 11:51:46
Bis dahin wird es sicherlich einen neueren Kernel geben, der das besser aufdröselt :-) !
Wünschen und hoffen ..... :mrgreen: ..... 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

Antworten