Zvýšenie výkonu pri používaní SMP kernelu
Väčšina užívateľov používa generic verziu ale existuje ich viac. Pre prácu z audiom mnohí používajú realtime kernel alebo low-latency kernel.
Vzhľadom k tomu, že je už niekoľko rokov bežné mať v počítači viacjadrové procesory, je vhodné porozmýšľať nad používaním iného, než generického jadra.
Nie vždy je však vhodné používať jadro s vysokou prioritou, ako je low-latency či realtime. Ktoré sú väčšinou postavené na generickom jadre ale s úpravou na prioritu prístupov,
Generické jadro používa Asymmetric MultiProcessing (ASMP). a tým pádom sa požiadavky prideľujú jadrám alebo vláknam v procesore náhodne a často idú prvému jadru veľké množstvá dopytov.
Vľavo ASMP a vpravo SMP vyťažovanie procesoru (4 jadrový)
Vo väčšine distribúcií je zmena z generic jadra na smp relatívne jednoduchá. V MX linuxe je to možné priamo cez MXPI a je použité najnovšie jadro pre antix.
SMP - Symmetrical MultiProcessing kernel je vhodný pre viacjadrové procesory. Testované to bolo na 4 a viacjadrových procesoroch, z mojej skúsenosti však to už má zmysel aj na dvojjadrovom procesore alebo na počítačoch s dvomi jednojadrovými procesormi.
Implementované funkcie SMP ma linuxové jadro od verzie 2.2 a podporuje procesor Intel Pentium Pro.
SMP kernel sa odporúča pre zvýšenie výkonu viacjadrových procesorov a pri používaní SATA alebo SCSI diskov, poprípade pri vyššom vyťažovaní multiprocesorových zostáv.
Podstatne zlepšuje paralelizáciu procesov (POSIX vlákna, Multiple I/O APIC, PVM / MPI Message Passing Libraries atd.) Priamu podporu má v Darktable, GIMP či v iných výpočtovo náročných programoch.
Výpis z inxi pri vyťažovaní procesoru počas testu Phoronix phoronix-test-suite benchmark multicore
Ako vidieť pri jadre 5.10.0-18-amd64 x86_64 je procesor vytlačený nad 3GHz kdežto pri ASMP iba na 1,4GHz čo sa prejavuje aj pri teplote procesoru.
ASMP:
inxi -Fxxx System: Host: mx Kernel: 5.10.0-18-amd64 x86_64 bits: 64 compiler: gcc v: 10.2.1 Desktop: Xfce 4.16.0 tk: Gtk 3.24.24 info: xfce4-panel wm: xfwm 4.16.1 vt: 7 dm: LightDM 1.26.0 Distro: MX-21.2.1_x64 Wildflower October 20 2021 base: Debian GNU/Linux 11 (bullseye) Machine: Type: Desktop Mobo: ASUSTeK model: F2A85-M v: Rev X.0x serial: <superuser required> BIOS: American Megatrends v: 6508 date: 07/11/2014 CPU: Info: Quad Core model: AMD A10-5700 APU with Radeon HD Graphics bits: 64 type: MCP arch: Piledriver rev: 1 cache: L2: 2 MiB flags: avx lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm bogomips: 27336 Speed: 3417 MHz min/max: 1400/3400 MHz boost: enabled Core speeds (MHz): 1: 3417 2: 3417 3: 2892 4: 3307
SMP:
$ inxi -Fxxx System: Host: mx Kernel: 5.10.142-antix.2-amd64-smp x86_64 bits: 64 compiler: gcc v: 10.2.1 Desktop: Xfce 4.16.0 tk: Gtk 3.24.24 info: xfce4-panel wm: xfwm 4.16.1 vt: 7 dm: LightDM 1.26.0 Distro: MX-21.2.1_x64 Wildflower October 20 2021 base: Debian GNU/Linux 11 (bullseye) Machine: Type: Desktop Mobo: ASUSTeK model: F2A85-M v: Rev X.0x serial: <superuser required> BIOS: American Megatrends v: 6508 date: 07/11/2014 CPU: Info: Quad Core model: AMD A10-5700 APU with Radeon HD Graphics bits: 64 type: MCP arch: Piledriver rev: 1 cache: L2: 2 MiB flags: avx lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm bogomips: 27338 Speed: 1407 MHz min/max: 1400/3400 MHz boost: enabled Core speeds (MHz): 1: 1407 2: 1407 3: 1407 4: 1407
Pri používani na testovanom PC bol aj výkon vo viacvláknových benchmarkov vyšší, pri použití SMP jadra, o 12-15%, čo je zisk výkonu zadarmo.
Pri syntetických testoch v HardInfo, klesol výsledok pri použití SMP v GPU Drawing o 250 bodov z 4231,38 na 3981,45, ale naopak sa výrazne zlepšili testy CPU Zlib na 0,55s z 1,18s a FPU FFT na 1,57s z 2,98s
Pre pridávanie komentárov sa musíte prihlásiť.
ak sa nemylim, tak na low latency sa pouziva generic kernel, ale treba zapnut threadirqs a mat to spravne nakonfigurovane... ja som to osobne skusal a pre zvysene naroky na audio to bolo citelne zlepsenie a v ostatnej prevadzke som nezaznamenal ziadne problemy. spominam si nieco o tom, ze plny realtime nemusi byt najbezpecnejsia volba pre desktopove/interaktivne pouzitie.
ano.
RT moze sposobovat problemy.
Ono defacto vsetky kernely su generic len sa upravuju funkcie, su aj kernel AWS, Oracle a pod.
Čiže ak som to správne pochopil, SMP kernel môže v určitých situáciách zdvihnúť výkon, inde však môže byť na škodu. Zaujíma ma, ako si napríklad v Manjare viem sprístupniť SMP kernel? Musí mi ho vytvoriť maintainer distribúcie alebo si ho viem upraviť či nájsť sám?
Low Latency kernely bývajú ponúkané, SMP som zatiaľ v Manjare ponúknutý nemal.
aky kernel je pouzity
manjaro by malo mat SMP PREEMPT aspon v kerneli 5.9 ako som naposledy testoval
ale je mozne stiahnut kernel z kernel.org.
Inak tam su len rozdiely v preempt a spinlock funkciach (zjednodusene)
Ako som s úžasom zistil, používam SMP kernel
aniž by som to tušil. Problém je, že v zozname dostupných kernelov nie je uvedené, že sa jedná o SMP kernel, dá sa tam dočítať iba to, či je to LTS, EOL alebo low latency kernel.
Momentík, to niekto vážne kompiluje amd64 kernel bez SMP? Nemám momentálne poruke žiadnu nekompilovanú distribúciu ale keď tak hľadám po internete výpis uname -a tak hádam všade je SMP.
ano debian ma by default generic kernel s multiprocesorovou podporou ale s ASMP rovnako to prebera antix, MX, Ubuntu.
SMP je tam potlacene aby prioritu malo jadro 0 a az potom 1,2,3 (4 core) je to kvoli Intelu
uname -a
Linux acer 5.10.0-18-amd64 #1 generic Debian 5.10.140-1 (2022-09-02) x86_64 GNU/Linux
Vsetko totalne bludy.
Väčšina užívateľov používa generic verziu ale existuje ich viac.
Genericke jadro neexistuje - existuje akurat tak vanilla jadro, ktore pouzivaju distribucie a kompiluju si ho podla svojich potrieb/predstav a pripadne si ho este patchuju.
Vzhľadom k tomu, že je už niekoľko rokov bežné mať v počítači viacjadrové procesory...
... a tie jadra aj v systeme vidis, tak to SMP jadro uz asi aj niekolko rokov pouzivas.
Generické jadro používa Asymmetric MultiProcessing (ASMP)
Nie nepoziva, linuxove jadro je SMP.
a tým pádom sa požiadavky prideľujú jadrám alebo vláknam v procesore náhodne a často idú prvému jadru veľké množstvá dopytov.
To si si vycucal z prsta? ASMP kernel riesi kazdy procesor (core) samostatne, kazdy ma svoju pamat, na jednom procesore bezi kernel, druhy riesi I/O operacie, atd.
Vľavo ASMP a vpravo SMP vyťažovanie procesoru (4 jadrový)
Pekny obrazok. Rovnaky ti viem urobit aj na rovnakom jadre. Napr. tak, ze pustim rozne procesy (obr. vlavo) alebo vytazim webovy server (obr. vpravo), a oba budu rovnake, ako tvoje.
Vo väčšine distribúcií je zmena z generic jadra na smp relatívne jednoduchá.
Vo vsetkych dnesnych klasickych distribuciach uz je davno SMP kernel, takze netreba nic menit.
SMP - Symmetrical MultiProcessing kernel je vhodný pre viacjadrové procesory. Testované to bolo na 4 a viacjadrových procesoroch, z mojej skúsenosti však to už má zmysel aj na dvojjadrovom procesore alebo na počítačoch s dvomi jednojadrovými procesormi.
No ved bez toho SMP kernelu by ti tie jadra ani nesli, ze?
Implementované funkcie SMP ma linuxové jadro od verzie 2.2 a podporuje procesor Intel Pentium Pro.
Ukaz mi linuxove ASMP jadro.
Výpis z inxi pri vyťažovaní procesoru počas testu Phoronix phoronix-test-suite benchmark multicore
Ako vidieť pri jadre 5.10.0-18-amd64 x86_64 je procesor vytlačený nad 3GHz kdežto pri ASMP iba na 1,4GHz čo sa prejavuje aj pri teplote procesoru.
Ako vidiet, pouzil si dve rozdielne jadra, takze sa aj spravaju rozdielne. Schvalne, skus si diffnut ich konfigy.
ano debian ma by default generic kernel s multiprocesorovou podporou ale s ASMP rovnako to prebera antix, MX, Ubuntu.
Debian ma SMP jadro uz minimalne od verzie Etch (2.6.18-6-686) - v kerneli nie je jedina zmienka o ASMP.
SMP je tam potlacene aby prioritu malo jadro 0 a az potom 1,2,3 (4 core) je to kvoli Intelu
Nic tam nie je potlacene, vsetky jadra su si rovnocenne. Skus sa ten htop pozerat dlhsie.
uname -a
Linux acer 5.10.0-18-amd64 #1 generic Debian 5.10.140-1 (2022-09-02) x86_64 GNU/Linux
Uhm vazne? Generic? Zeby to oznacovalo len nejake genericke, rozumej defaultne jadro v danej distribucii? Ved v tom "nazve" jadra moze byt cokolvek, co si tam pri kompilacii napises.