
Roznica IPC miedzy p-core i e-core w cpu intela (linux) (Ogólne)
Udalo mi sie w koncu zrobic testy wolnych i szybkich rdzeni w tym samym cpu Sa to 2 testy p-core i e-core z i5-12600K. Ten cpu ma 6 szybkich p-cores z HT i 4 wolne e-cores, lacznie 16 logicznych cpu (6*2 + 4). Do testu wymagany jest dodatkowy tool taskset, ktory ustawia affinity mask dla danego procesu. Dzieki temu mozna przypisac konkretny rdzen do konkretnego zadania. Sama skladnia jest specyficzna dla taskset i nie mozna go uzyc byle gdzie, tutaj musi byc przed bc.
Liste corow sie robi tak:
$ lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE MAXMHZ MINMHZ MHZ
0 0 0 0 0:0:0:0 yes 4900.0000 800.0000 800.0000
1 0 0 0 0:0:0:0 yes 4900.0000 800.0000 800.0000
2 0 0 1 4:4:1:0 yes 4900.0000 800.0000 800.1410
3 0 0 1 4:4:1:0 yes 4900.0000 800.0000 800.0000
4 0 0 2 8:8:2:0 yes 4900.0000 800.0000 800.0000
5 0 0 2 8:8:2:0 yes 4900.0000 800.0000 800.0000
6 0 0 3 12:12:3:0 yes 4900.0000 800.0000 800.0000
7 0 0 3 12:12:3:0 yes 4900.0000 800.0000 800.0000
8 0 0 4 16:16:4:0 yes 4900.0000 800.0000 800.0640
9 0 0 4 16:16:4:0 yes 4900.0000 800.0000 800.0000
10 0 0 5 20:20:5:0 yes 4900.0000 800.0000 800.0000
11 0 0 5 20:20:5:0 yes 4900.0000 800.0000 800.0000
12 0 0 6 28:28:7:0 yes 3600.0000 800.0000 800.0000
13 0 0 7 29:29:7:0 yes 3600.0000 800.0000 3600.1150
14 0 0 8 30:30:7:0 yes 3600.0000 800.0000 800.0000
15 0 0 9 31:31:7:0 yes 3600.0000 800.0000 800.0000
Po maxmhz widac ktory jest szybki a ktory nie ale p-cory maja tez swoja tabelke w bios i nie kazdy skacze w turbo na maxa. U mnie to sa 0 i 1, pozostale w stresie boostuja ciut mniej, no ale to ma znaczenie w multi, przy single to bez roznicy praktycznie.
Test zostal przeprowadzony na maszynie z najnowszym ubuntu lts:
12th Gen Intel(R) Core(TM) i5-12600K, 6.8.0-57-generic, Ubuntu 24.04.2 LTS
Test najszybszego p-core czyli #0 (0-11):
$ time echo "scale=5000; a(1)*4" | taskset -c 0 bc -l
real 0m9.545s
user 0m9.542s
sys 0m0.004s
Wynik jest praktycznie taki sam jak przy tescie bez taskset, scheduler sam ustawia najszybszy dostepny, ale przy e-core jest juz ciekawiej
Test wolnego e-core #12 (12-15):
$ time echo "scale=5000; a(1)*4" | taskset -c 12 bc -l
real 0m15.401s
user 0m15.395s
sys 0m0.007s
Poniewaz wyniki testu sa porownywalne dla wersji gnu bc, to osiagi e-cores sie mieszcza gdzies pomiedzy i7-3770 (real 0m15.986s) a Intel(R) Xeon(R) CPU E5-2697 v3 @ 2.60GHz (real 0m15.289s). Nie jest zle Zas p-cores, to juz konkretne bestie - wynik ponizej 10s to miejsce #2 za mistrzem AMD Ryzen 7 PRO 6850U with Radeon Graphics (real 8.00s).
Aczkolwiek mam pewne watpliwosci czy aby na pewno byl uzyty wlasciwy bc w tym tescie. Test zweryfikowany, koszerna wersja gnu bc v1.08.1.
Prawilne wersje to gnu, zoptymalizowne nie sa porownywalne i ich wyniki nalezy traktowac jako ciekawostke. Nizej info jak sprawdzic wersje:
$ bc -v
bc 1.07.1
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006, 2008, 2012-2017 Free Software Foundation, Inc.
Jesli jest inna niz 1.xx lub nie zawiera tagu 'Free Software Foundation', to znaczy ze niekoszerna