Slo-Tech - Minuli teden se je pokazalo, da obstajajo zelo utemeljeni razlogi, da testnih verzij programske opreme, četudi nosi oznako rc (release candidate), ni modro uporabljati na produkcijskih sistemih. V nedeljo, 28. februarja, je Linus Torvalds izdal prvo verzijo rc Linuxovega jedra 5.12, kar je po navadi precej dolgočasen dogodek. Če se v verziji rc najdejo kakšni večji hrošči, se ti popravijo in izide naslednja verzija rc, sicer postane verzija končna. To pot pa je imelo jedro 5.12-rc1 katastrofalnega hrošča.
Težava je bila tako resna, da je jedro dobilo oznako 5.12-rc1-dontuse, Torvalds pa je izrecno odsvetoval uporabo in hrošča označil kot double ungood. V kodo se je ob čiščenju prikradel na prvi pogled nenevaren hrošč, ki je okvaril delovanje izmenjalnih datotek (swap). Po navadi se v Linuxu v ta namen uporablja ločena particija (swap partition), ki je hrošč ne prizadene, zato ga niso odkrili takoj. Kdor pa uporablja datoteke za swap, mu bo hrošč pojedel podatke na disku. Zaradi hrošča bo operacijski sistem zapisoval podatke iz prepolnega polnilnika na naključna mesta na disku in ne v datoteko swap. Rezultat je razsut datotečni sistem, kar lahko okvari vse datoteke na isti particiji.
Torvalds je ob tem spomnil, da so bile doslej verzije rc dovolj stabilne, da so jih ljudje čedalje pogosteje uporabljali, čeprav gre še vedno za testno kodo. Popravek je sledil v nekaj dneh. Zaradi hrošča je nova verzija rc2 izšla predčasno.
Morda bo novica pomagala komu, ki iz nekega razloga uporablja še neizdane kernele kar na delovni mašini in poleg tega uporablja kombinacijo swapa v datoteki, za vse druge pa to odkritje spada bolj pod trivialne zanimivosti...
Hrošča Goldsteina smo zatrli v kali, preden je naredil doubleplus ungood. Nothing to see here, chocolate rations are up 10% again...
Antifašizem je danes poslednje pribežališče ničvredneža, je ideologija ničesar
in neizprosen boj proti neobstoječemu sovražniku - v zameno za državni denar
in neprofitno najemno stanovanje v središču Ljubljane. -- Tomaž Štih, 2021
RC na produkciji, mogoče pa le nisi primeren za to službo...
Cela ta zgodba je IMO totalna neumnost in precej vsakdanja zadeva za RC in sveža jedra. Običajno se podatki ne izgubljajo na tako absurden način oz. se to odpravi preden se koda tagira.
S produkcijo pa to nima prav nobene zveze. RC jeder niti ArchLinux uporabniki ne jemljejo resno. Najbolj sveže x86 jedro za produkcijsko rabo je 5.4.y ...
Res je, swap je že sam po sebi neželen obliž. Kaj danes, v časih gigabajtnih DDR3/DDR4 palčk, običajni uporabniki počnejo s swapom, ni jasno. Še zadnji RPi ima gigabajt pomnilnika. Niso to Windowsi, kjer rabiš pol gigabajta paging fajla, da sploh deluje vsa funkcionalnost sistema. Pa še vedno imam na polovici Win mašin paging raje izklopljen, ni vredno praskanja po disku (s stališča RAMa sta trdi disk in SSD čisto enako počasna).
Z nepotrebno vklopljenim swapom se dvigne verjetnost okvare podatkov v (v)RAMu, ker je v povprečju pomnjenih nekaj več podatkov in to deloma na izjemno počasnem mediju. Odvisnosti so sicer nelinearne, ampak hitro se opazi, da vRAM lahko stvari kvečjemu poslabša, razen seveda skupne kapacitete. Download more RAM!
Res je, swap je že sam po sebi neželen obliž. Kaj danes, v časih gigabajtnih DDR3/DDR4 palčk, običajni uporabniki počnejo s swapom, ni jasno. Še zadnji RPi ima gigabajt pomnilnika. Niso to Windowsi, kjer rabiš pol gigabajta paging fajla, da sploh deluje vsa funkcionalnost sistema. Pa še vedno imam na polovici Win mašin paging raje izklopljen, ni vredno praskanja po disku (s stališča RAMa sta trdi disk in SSD čisto enako počasna).
Z nepotrebno vklopljenim swapom se dvigne verjetnost okvare podatkov v (v)RAMu, ker je v povprečju pomnjenih nekaj več podatkov in to deloma na izjemno počasnem mediju. Odvisnosti so sicer nelinearne, ampak hitro se opazi, da vRAM lahko stvari kvečjemu poslabša, razen seveda skupne kapacitete. Download more RAM!
Fedora mašina, 16GB rama. Trenutno prižgan RDP client, firefox z recimo 12 tabi in thunderbird: MiB Mem : 15895,4 total, 9648,0 free, 4140,3 used, 2107,2 buff/cache MiB Swap: 20478,0 total, 16227,1 free, 4250,9 used. 10955,8 avail Mem Trenutno torej uporabljenih 4GB swapa, čeprav je 10GB prostega RAM-a. Torej to ni le neka čudna lastnost Windowsa.
Niso to Windowsi, kjer rabiš pol gigabajta paging fajla, da sploh deluje vsa funkcionalnost sistema. Pa še vedno imam na polovici Win mašin paging raje izklopljen, ni vredno praskanja po disku (s stališča RAMa sta trdi disk in SSD čisto enako počasna).
kaj nabijaš.Če je dovolj RAMa, Windowsi lepo delajo z 16 MB swapa. Izklop pa ni priporočljiv, ker se mu pol res včasih mal zmeša...
"Life is hard; it's even harder when you're stupid."
Niso to Windowsi, kjer rabiš pol gigabajta paging fajla, da sploh deluje vsa funkcionalnost sistema. Pa še vedno imam na polovici Win mašin paging raje izklopljen, ni vredno praskanja po disku (s stališča RAMa sta trdi disk in SSD čisto enako počasna).
kaj nabijaš.Če je dovolj RAMa, Windowsi lepo delajo z 16 MB swapa. Izklop pa ni priporočljiv, ker se mu pol res včasih mal zmeša...
Swap je tudi na Linuxu priporočljiv, ampak se priporoča swap particija.
Res je, swap je že sam po sebi neželen obliž. Kaj danes, v časih gigabajtnih DDR3/DDR4 palčk, običajni uporabniki počnejo s swapom, ni jasno. Še zadnji RPi ima gigabajt pomnilnika. Niso to Windowsi, kjer rabiš pol gigabajta paging fajla, da sploh deluje vsa funkcionalnost sistema. Pa še vedno imam na polovici Win mašin paging raje izklopljen, ni vredno praskanja po disku (s stališča RAMa sta trdi disk in SSD čisto enako počasna).
Z nepotrebno vklopljenim swapom se dvigne verjetnost okvare podatkov v (v)RAMu, ker je v povprečju pomnjenih nekaj več podatkov in to deloma na izjemno počasnem mediju. Odvisnosti so sicer nelinearne, ampak hitro se opazi, da vRAM lahko stvari kvečjemu poslabša, razen seveda skupne kapacitete. Download more RAM!
Fedora mašina, 16GB rama. Trenutno prižgan RDP client, firefox z recimo 12 tabi in thunderbird: MiB Mem : 15895,4 total, 9648,0 free, 4140,3 used, 2107,2 buff/cache MiB Swap: 20478,0 total, 16227,1 free, 4250,9 used. 10955,8 avail Mem Trenutno torej uporabljenih 4GB swapa, čeprav je 10GB prostega RAM-a. Torej to ni le neka čudna lastnost Windowsa.
Zanimivo, jaz na svoji Fedori še nisem opazil da bi bilo kdaj kaj na swap-u. Ali je to morda kaj z hibernacijo?
Res je, swap je že sam po sebi neželen obliž. Kaj danes, v časih gigabajtnih DDR3/DDR4 palčk, običajni uporabniki počnejo s swapom, ni jasno. Še zadnji RPi ima gigabajt pomnilnika. Niso to Windowsi, kjer rabiš pol gigabajta paging fajla, da sploh deluje vsa funkcionalnost sistema. Pa še vedno imam na polovici Win mašin paging raje izklopljen, ni vredno praskanja po disku (s stališča RAMa sta trdi disk in SSD čisto enako počasna).
Z nepotrebno vklopljenim swapom se dvigne verjetnost okvare podatkov v (v)RAMu, ker je v povprečju pomnjenih nekaj več podatkov in to deloma na izjemno počasnem mediju. Odvisnosti so sicer nelinearne, ampak hitro se opazi, da vRAM lahko stvari kvečjemu poslabša, razen seveda skupne kapacitete. Download more RAM!
Neumnost. Imam 32Gb RAMA, KVM, virtualka 8Gb rama, gnome 3 (ja, ja, prvic in zadnjic) zraven pozenem se recimo goland, codium (dejansko se moram tega sranja znebiti), nekaj browserjev (ne tabov, locenih instanc), evolution, pa sem na dobri poti, da se bo oglasil oomkiller (ki ga je nek kreten naredil virtualkam sovraznega in ubije ravno tisto, kar me najbolj boli, sem ga ukrotil ampak wtf).
Razlog za tako pozresnost pa je, da je ves software, se posebaj javanski spisan totalno v kurcu ("hej saj imam garbage collector, zakaj bi pa pazil kaj delam"), zraven so v kurcu spisane se web strani, skratka java* golta ram in res se mi ne da z vsakim softwarom ukvarjat in ga tweakat zato, da ne bo pretirano pozresen.
Razlog za tako pozresnost pa je, da je ves software, se posebaj javanski spisan totalno v kurcu ("hej saj imam garbage collector, zakaj bi pa pazil kaj delam"),
Problem je implementacija Jave same, ker rama ne vrne sistemu (v imenu performanc). Recimo, če uporabiš OpenJ9 namesto HotSpot je malo manj požrešno.
Razlog za tako pozresnost pa je, da je ves software, se posebaj javanski spisan totalno v kurcu ("hej saj imam garbage collector, zakaj bi pa pazil kaj delam"),
Problem je implementacija Jave same, ker rama ne vrne sistemu (v imenu performanc). Recimo, če uporabiš OpenJ9 namesto HotSpot je malo manj požrešno.
Fedora mašina, 16GB rama. Trenutno prižgan RDP client, firefox z recimo 12 tabi in thunderbird: MiB Mem : 15895,4 total, 9648,0 free, 4140,3 used, 2107,2 buff/cache MiB Swap: 20478,0 total, 16227,1 free, 4250,9 used. 10955,8 avail Mem Trenutno torej uporabljenih 4GB swapa, čeprav je 10GB prostega RAM-a. Torej to ni le neka čudna lastnost Windowsa.
Tipičen primer, kjer swap lahko samo bremza in ne more pomagati. Linux ga vseeno uporablja za starejše podatke v RAMu za primer, da bi na hitro moral nasloviti veliko pravega RAMa in da takrat ne bo treba čakati prepisovanja na disk. Kernel parameter "swappiness" nelinearno nastavlja razmerje in se med distribucijami razlikuje (bi rekel da zato @LightBit opaža drugačno obnašanje - lahko objavita vrednosti /proc/sys/vm/swappiness pa vidimo).
Če ne potrebuješ več kot 16GB v vsakem trenutku, lahko swap izklopiš in prišparaš plac, kako milisekundo tu in tam ter kako minutko na bateriji. Vprašanje je bolj, ali moderni brskalniki res rabijo vse te gigabajte pomnilnika in kako? V zgornjem primeru Firefox recimo žre 6GB od 8GB uporabljenega pomnilnika. Po drugi strani se na računalniku s 4GB RAMa in 2GB swapa tudi z 12 zavihki verjetno še ne bi ravno usul. Delal bi pa počasneje, ker bi si (lahko) privoščil manj pomnilnika, morda tudi zaradi pogostejšega swappanja.
Danes imamo tako na eni strani brskalnike, ki s svojo "optimizacijo" razkošno žrejo gigabajte pomnilnika (in so v vsesplošni uporabi), na drugi strani pa privzeto vklopljene paging mehanizme, ki samo navidezno ustvarijo več delovnega pomnilnika. Obe optimizaciji skupaj sta kontraproduktivni. Smiselno bi bilo, da bi brskalniki imeli svoje mehanizme za ostranjevanje (paging), hec pa je v tem, da jih že imajo, samo jih izgleda da ne znajo več uporabljat (predpomnilnik na disku oz. disk cache).
@Samael: govorimo o primeru desktop distrojev, ne serverskih. Pa tudi sicer ne pravim, da swap ni uporaben, samo da ne bi rabil biti ama čisto povsod vklopljen. Tudi @novichok ga rabi in bi mu v hipotetičnem nasprotnem primeru svetoval vklop, takoj za nasvetom, da očitno za svoje delo rabi še več RAMa. Ali pa karierni zavoj kak nivo programske abstrakcije niže, zna biti dobro za živce.
Razlog za tako pozresnost pa je, da je ves software, se posebaj javanski spisan totalno v kurcu ("hej saj imam garbage collector, zakaj bi pa pazil kaj delam"),
Problem je implementacija Jave same, ker rama ne vrne sistemu (v imenu performanc). Recimo, če uporabiš OpenJ9 namesto HotSpot je malo manj požrešno.
Naah, ne more preziveti ubitja procesa.
To itak. Samo ko kakšen program začasno rabi veliko rama, ga potem sicer GC pobere, ampak ga HotSpot ne vrača sistemu (morda čez dalj časa).
Razlog za tako pozresnost pa je, da je ves software, se posebaj javanski spisan totalno v kurcu ("hej saj imam garbage collector, zakaj bi pa pazil kaj delam"),
Problem je implementacija Jave same, ker rama ne vrne sistemu (v imenu performanc). Recimo, če uporabiš OpenJ9 namesto HotSpot je malo manj požrešno.
Naah, ne more preziveti ubitja procesa.
To itak. Samo ko kakšen program začasno rabi veliko rama, ga potem sicer GC pobere, ampak ga HotSpot ne vrača sistemu (morda čez dalj časa).
Kot je @LightBit prej pravilno ugotovil, je swap povezan tudi s hibernacijo in drugimi optimizacijami za baterijsko napajane sisteme. Na izrabo swapa vpiva tudi dejanska količina RAMa, velikost swapa in koliko je trenutno skupaj izrabljenega pomnilnika (oziroma razmerja med njimi).
lahko objavita vrednosti /proc/sys/vm/swappiness pa vidimo
Pri meni je 60.
Pri meni tudi 60.
Mogoče imaš dalj časa prižgano. Kakor sem bral lahko kakšne stvari, ki se redko rabijo, čez čas premaknejo na swap. Potem je več prostora za "žive" stvari (tudi FS cache in tmpfs).
Tako da se mi zdi swap vsekakor koristen. Naj OS sam optimizira kaj se pogosto rabi in kaj ne. Poleg tega SSD ni dobro preveč nafilat in je swap particija lahko kot dodatna varovalka, če je večinoma prazen. Ok, bolj slaba, ampak ni stran vržen prostor.
Se pravi bodo potrebne spremembe, če bomo hoteli imeti enkrat 1TB RAM, no saj ko se inštalira ne določiš swap particije pa je, samo sem vedno izbral samodejno postavitev.
Na Polknah sem ukinil hibernacijo potem zbriše okoli 4GB se mi zdi, na Ubuntu je pa swap velik 2GB, potem se nisem več ukvarjal z ročnim particijam.
Imam oba sistema, vsak na svojem SSDju, no trenutno počiva zaradi strojne zablode, še nevem kaj naj dam notri.
Samo Windows ima za hibernacijo ločeno datoteko(iz glave hyberfil.sys) - to ni enako swap. Načeloma bi ta datoteka morala biti tako velika kolikor imaš fizičnega RAM-a.
Js sm šu za foro delat softverski RAID 1 s 7200 diski na čist prešvoh CPU-ju pol pa hočem še dve virtualki gor lavfat. swapoff občutno pohitri stvari ob npr. posodabljanju, tako da je sedaj kar stalno izklopljen swap. Na VPSjih kjer nimam dovolj rama ga pa še uporabljam. Nisem pa vedel da sploh lahko deluje kot file.
Take that, dirty Linux hippies! Take that, Thieving Macintosh Republicans! XD
Razlog za tako pozresnost pa je, da je ves software, se posebaj javanski spisan totalno v kurcu ("hej saj imam garbage collector, zakaj bi pa pazil kaj delam"),
Problem je implementacija Jave same, ker rama ne vrne sistemu (v imenu performanc). Recimo, če uporabiš OpenJ9 namesto HotSpot je malo manj požrešno.
Seveda ga vrne, sam večina java programerjev in adminov tega ne zna nastaviti ali ročno sprožiti.
Sicer je pa to tak rana vseh sodobnih jezikov, ki delajo avtomatski "memory management". Mularija danes pa sploh ne ve, kaj je to malloc, free in pointerji...
Tako ali tako so vsi javascript code monkeyi...
"Life is hard; it's even harder when you're stupid."
Še bolje bo podalševanje spomina s kompresiranjem. V večini primerov bo boljša pot (ZRAM / ZSWAP). To se kar dosti uporablja v kategoriji, kjer spomina ni v izobilju (mobilni telefoni, embedded Linux, Armbian default praktično od dneva nič). Še vedno imaš na koncu opcijsko swap datoteko kot zadnjo možnost.
Razlog za tako pozresnost pa je, da je ves software, se posebaj javanski spisan totalno v kurcu ("hej saj imam garbage collector, zakaj bi pa pazil kaj delam"),
Problem je implementacija Jave same, ker rama ne vrne sistemu (v imenu performanc). Recimo, če uporabiš OpenJ9 namesto HotSpot je malo manj požrešno.
Seveda ga vrne, sam večina java programerjev in adminov tega ne zna nastaviti ali ročno sprožiti.
Saj ročno klicanje GC ni priporočeno. Je pa res da je veliko crapwara vsepovsod, ki razsipa. Menim da bi vsak programer vsaj C moral malo znat, da razume ozadje.
So pa vidim da tudi opcije: -XX:MaxHeapFreeRatio=70 (Maximum percentage of heap free after GC to avoid shrinking) -XX:MinHeapFreeRatio=40 (Minimum percentage of heap free after GC to avoid expansion)
Saj ročno klicanje GC ni priporočeno. Je pa res da je veliko crapwara vsepovsod, ki razsipa. Menim da bi vsak programer vsaj C moral malo znat, da razume ozadje.
So pa vidim da tudi opcije: -XX:MaxHeapFreeRatio=70 (Maximum percentage of heap free after GC to avoid shrinking) -XX:MinHeapFreeRatio=40 (Minimum percentage of heap free after GC to avoid expansion)
Admin bi ga čisto lahko sprožil v času nizke obremenitve. Brez nekih hudig posledic.
Sam že vzpostavitev nadzora (MONITORING) je za večino adminov rocket science, kaj šele, da bi znali meriti porabo pomnilnika Java VM in ustrezno ukrepati.
Restart serverjev je ponavadi najboljša rešitev za njih .
"Life is hard; it's even harder when you're stupid."
Razlog za tako pozresnost pa je, da je ves software, se posebaj javanski spisan totalno v kurcu ("hej saj imam garbage collector, zakaj bi pa pazil kaj delam"),
Problem je implementacija Jave same, ker rama ne vrne sistemu (v imenu performanc). Recimo, če uporabiš OpenJ9 namesto HotSpot je malo manj požrešno.
Seveda ga vrne, sam večina java programerjev in adminov tega ne zna nastaviti ali ročno sprožiti.
Sicer je pa to tak rana vseh sodobnih jezikov, ki delajo avtomatski "memory management". Mularija danes pa sploh ne ve, kaj je to malloc, free in pointerji...
Tako ali tako so vsi javascript code monkeyi...
Koda ki je zamočila, je spisana ravno v c ju in ne od amaterjev. Upravljanje z pomnilnikom sploh v ne trivialnih sistemih je raketna znanost. Gc vsaj kdaj počisti, večina programerjev pa ne znamo.
Niso to Windowsi, kjer rabiš pol gigabajta paging fajla, da sploh deluje vsa funkcionalnost sistema. Pa še vedno imam na polovici Win mašin paging raje izklopljen, ni vredno praskanja po disku (s stališča RAMa sta trdi disk in SSD čisto enako počasna).
kaj nabijaš.Če je dovolj RAMa, Windowsi lepo delajo z 16 MB swapa. Izklop pa ni priporočljiv, ker se mu pol res včasih mal zmeša...
Swap je tudi na Linuxu priporočljiv, ampak se priporoča swap particija.
Res je, swap je že sam po sebi neželen obliž. Kaj danes, v časih gigabajtnih DDR3/DDR4 palčk, običajni uporabniki počnejo s swapom, ni jasno. Še zadnji RPi ima gigabajt pomnilnika. Niso to Windowsi, kjer rabiš pol gigabajta paging fajla, da sploh deluje vsa funkcionalnost sistema. Pa še vedno imam na polovici Win mašin paging raje izklopljen, ni vredno praskanja po disku (s stališča RAMa sta trdi disk in SSD čisto enako počasna).
Z nepotrebno vklopljenim swapom se dvigne verjetnost okvare podatkov v (v)RAMu, ker je v povprečju pomnjenih nekaj več podatkov in to deloma na izjemno počasnem mediju. Odvisnosti so sicer nelinearne, ampak hitro se opazi, da vRAM lahko stvari kvečjemu poslabša, razen seveda skupne kapacitete. Download more RAM!
Fedora mašina, 16GB rama. Trenutno prižgan RDP client, firefox z recimo 12 tabi in thunderbird: MiB Mem : 15895,4 total, 9648,0 free, 4140,3 used, 2107,2 buff/cache MiB Swap: 20478,0 total, 16227,1 free, 4250,9 used. 10955,8 avail Mem Trenutno torej uporabljenih 4GB swapa, čeprav je 10GB prostega RAM-a. Torej to ni le neka čudna lastnost Windowsa.
Zanimivo, jaz na svoji Fedori še nisem opazil da bi bilo kdaj kaj na swap-u. Ali je to morda kaj z hibernacijo?
Pa nehajte že z temi medovernet idejami. Os in arhitektura ti zagotavljata naslovni prostor, če ni rama je skrajna rešitev disk. Za povrh je pa z gpujem zadeva še rahlo bolj zakomplicirana.