Zvýšenie výkonu pri používaní SMP kernelu

20.10.2022 | 11:07 | redhawk1975 | redhawk1975

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 

    • RE: Zvýšenie výkonu pri používaní SMP kernelu 20.10.2022 | 11:55
      Avatar uid0 Debian  Používateľ

      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.

      Debian. apt-get into it…
      • RE: Zvýšenie výkonu pri používaní SMP kernelu 20.10.2022 | 18:51
        Avatar redhawk1975 Windows 11 nonsystemd edition  Používateľ

        ano.

        RT moze sposobovat problemy.

        Ono defacto vsetky kernely su generic len sa upravuju funkcie, su aj kernel AWS, Oracle a pod.

        Do or do not. There is to no try.​
    • RE: Zvýšenie výkonu pri používaní SMP kernelu 20.10.2022 | 12:28
      Avatar Livan Manjaro s XFCE  Používateľ

      Č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?

      • RE: Zvýšenie výkonu pri používaní SMP kernelu 20.10.2022 | 12:30
        Avatar Livan Manjaro s XFCE  Používateľ

        Low Latency kernely bývajú ponúkané, SMP som zatiaľ v Manjare ponúknutý nemal.

      • RE: Zvýšenie výkonu pri používaní SMP kernelu 20.10.2022 | 19:09
        Avatar redhawk1975 Windows 11 nonsystemd edition  Používateľ

        aky kernel je pouzity 

        uname -a

        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) 

        Do or do not. There is to no try.​
        • RE: Zvýšenie výkonu pri používaní SMP kernelu 20.10.2022 | 21:59
          Avatar Livan Manjaro s XFCE  Používateľ

          Ako som s úžasom zistil, používam SMP kernel

          Linux dell 6.0.2-2-MANJARO #1 SMP PREEMPT_DYNAMIC Sat Oct 15 13:31:58 UTC 2022 x86_64 GNU/Linux

          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.

    • RE: Zvýšenie výkonu pri používaní SMP kernelu 20.10.2022 | 15:00
      Avatar Miroslav Bendík Gentoo  Administrátor

      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.

      • RE: Zvýšenie výkonu pri používaní SMP kernelu 20.10.2022 | 19:00
        Avatar redhawk1975 Windows 11 nonsystemd edition  Používateľ

        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

        Do or do not. There is to no try.​
        • RE: Zvýšenie výkonu pri používaní SMP kernelu 20.10.2022 | 19:20
          Avatar redhawk1975 Windows 11 nonsystemd edition  Používateľ

          uname -a

          Linux acer 5.10.0-18-amd64 #1 generic Debian 5.10.140-1 (2022-09-02) x86_64 GNU/Linux

           

          Do or do not. There is to no try.​
    • RE: Zvýšenie výkonu pri používaní SMP kernelu 20.10.2022 | 23:21
      Avatar paldopice   Používateľ

      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.

      # cat /etc/debian_version 
      6.0.10
      # uname -a
      Linux server 2.6.32-5-amd64 #1 SMP Mon Feb 29 00:33:51 UTC 2016 x86_64 GNU/Linux
      
      # cat /etc/debian_version 
      9.13
      # uname -a
      Linux server 4.9.0-13-amd64 #1 SMP Debian 4.9.228-1 (2020-07-05) x86_64 GNU/Linux
      
      # cat /etc/debian_version 
      11.5
      # uname -a
      Linux server 5.10.0-18-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64 GNU/Linux