Linux

Napredniji Tips & Tricks

overhead pet 11.1.2019 13:45

nisam ni ja vidoviti milan ali sam se javio u temu samo iz jednog razloga jer sam znao da ces se naljepiti ti pijavico koja ne zna razliku izmedju eufi i legacy moda a nisam fulao, dosao si i ovdje lupetati stvar o kojim pojma nemas kao i tamo, jinux juzeru.. samo sam ti bacio kost i evo tebe... prvo kreni od firmware i osnova prije nego bi na linux kernel

DanijelX ned 3.2.2019 19:47
overhead kaže...

Najveci hak za performanse sto mozete u linuxu napraviti je spustiti kernel u ZONE_DMA memoriju.

 

Po kojem principu bi to trebalo raditi nekakvu razliku s obzirom da je prostor ispod 16MB i dalje mapiran na iste one DDR RAM kekse koje koriste i ostali adresni rangeovi?

(ne racunajuci razne ROMove i ostale sitnice mapirane ispod 1mb koji su nebitni za ovu temu) 

 

 

overhead kaže...

Defaultno kernel se dekompresira i pokrece u 0x1000000 memorijskoj adresi (16MB), to je granica ZONE_DMA, znaci kernel radi u ZONE_NORMAL 16MB - 896MB

 

 Koliko se ja sjecam dekompresira se na adresni prostor od 1MB pa na vise, i blizu 1MB mu je i enty point. Barem je tako bilo u 2.6...

 

 

 

overhead pon 4.2.2019 09:33

grub loada kernel u 1mib, a on se dekompresira izmedju 1 i 16 mib u teoriji, u praksi izmedju 2 i 16mib

ako se dekompresira npr u 4mib, prostor izmedju 1 i 4 mib se alocira i dobe ga obicno moduli koje kernel loada nakon dekompresije, a moduli sami po sebi fragmentiraju kernel pogotovo ako su u nizim adresama

ispod 1mib je rom i rupa od ~300kb jer biosu ne treba 1 mib a kernel ne moze koristiti adrese ispod 1mib

relokacija usporava kernel, cini ga vecim i uzima vise runtime memorije. ako se ona ugasi, kernel se dekompresira u 16mib

d0nkey uto 5.2.2019 16:59

overhead lako se na google nalazi da ovo sto ti predlazes sa ZONE_DMA je beznacajno na x86-64, 64 bitni procesori nemaju vise potrebe za klasicno zoniranje - to se radi na x86.

A ako netko hoce brzi hak za performance, neka iskljuci fixove za meltdown i spectre s `nopti` i `nospectre_v2` kernel paramterima :P Ovo je napola sala jer smanjujete sigurnost time pa se informisite o tome, ali napola nije jer ja imam `nopti`

DanijelX uto 5.2.2019 22:57
overhead kaže...

ispod 1mib je rom i rupa od ~300kb jer biosu ne treba 1 mib a kernel ne moze koristiti adrese ispod 1mib

 

U biti ispod 1MB je 640kb slobodnog prostora koji se smije koristiti, sto je ostavstina onog prvog "real" moda x86 procesora. To je onih 640kb za koje je Bill Gates govorio da bi trebali biti dovoljni za bilo koga... 

 

overhead kaže...

relokacija usporava kernel, cini ga vecim i uzima vise runtime memorije. ako se ona ugasi, kernel se dekompresira u 16mib

 

Nije mi jasno zasto bi to vidljivo usporilo kernel? Relokacija se radi samo jednom po bootu racunala. A i onda se kopira samo desetak MB-a unutar memorije, a danasnja memorija radi brzinom od par tisuca MB/s, tak da to odradi u tren oka... A funkcija handle_relocations() je definitivno puno brza od jednog dekompresora, tak da si ni tu ne osjeti neka razlika

 

Zasto bi uzimao vise runtime memorije? Kernel ostaje funkcionalno indentican, jedina razlika je sto je u image kernela upakirana relokacijska tablica, al ona se odbacuje nakon ucitavanja ELF segmenata...

 

 

d0nkey kaže...

overhead lako se na google nalazi da ovo sto ti predlazes sa ZONE_DMA je beznacajno na x86-64, 64 bitni procesori nemaju vise potrebe za klasicno zoniranje - to se radi na x86.

 

Mislim da je danas uopce nebitno i za x86 i za x86-64. ZONE_DMA postoji zbog nekih prastarih periferija ciji DMA moduli su mogli mapirati samo 24-bitne adrese, sta znaci da mogu koristiti samo prvih 16MB adresnog prostora za kopiranje buffera. Zbog toga se taj dio memorije rezervirao za buffere tih periferija, no za moderni hardver to vise nije bitno, prilicno sam siguran da nijedna moderna periferija vise ne koristi 24-bitni DMA engine