Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Je kunt ook een cookievrije versie van de website bezoeken met minder functionaliteit. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

×

Help jij Tweakers Website van het Jaar te worden?

Tweakers is genomineerd voor beste website 2014 in de categorien Nieuws & Informatie, Community en Vergelijking. Stem nu en maak kans op mooie prijzen!

Door , , reacties: 37, views: 16.830 •

De ontwikkelaars van Fedora gaan in Fedora 18 de /tmp-directory voortaan standaard mounten via tmpfs, waarbij het werkgeheugen wordt gebruikt. Naast mogelijke prestatiewinsten gaan ssd's zo minder schrijfacties uitvoeren.

In vrijwel alle Linux-distributies worden tijdelijke bestanden, zoals logfiles en cachingbestanden, standaard weggeschreven naar een harde schijf of een solid state disk. Door de /tmp-directory echter te mounten via tmpfs kunnen dergelijke bestanden in het ram-geheugen worden bewaard.

Sommige Linux-gebruikers die een ssd in hun systeem hebben geplaatst, passen handmatig de mountpoints in het fstab-configuratiebestand aan zodat /tmp verwijst naar een ramdisk die met tmpfs is aangemaakt. Hierdoor worden de schrijfacties naar solid state drives beperkt, iets wat de levensduur van ssd's ten goede kan komen. Daarnaast kan er prestatiewinst geboekt worden doordat het werkgeheugen sneller is uit te lezen.

Een voorstel van Fedora-ontwikkelaar Lennart Poettering om in Fedora 18 de /tmp-folder standaard te mounten middels tmpfs, is door de Fedora Engineering Steering Committee aangenomen. Hierdoor zullen tijdelijke bestanden bij de aankomende Fedora 18-release, die naar verwachting in november zal uitkomen, voortaan in een ramdisk worden opgeslagen. De ontwikkelaars werken nog aan de juiste implementatie. Zo dienen bepaalde bestanden na een reboot bewaard te blijven, bijvoorbeeld data die in /var/tmp wordt opgeslagen.

Naast Fedora willen ook andere Linux-distributies tmpfs gaan implementeren. Onder andere Debian en Ubuntu hebben daartoe plannen, terwijl Arch Linux zijn gebruikers al adviseert om tmpfs te gebruiken.

Reacties (37)

Het zou fijn zijn als ze dat ook doen met /var/run en /var/lock. De bootscripts horen daarin desnoods subdirectories te kunnen aanmaken met de juiste rechten. Ik doe dit al een hele tijd op mijn Debian systeempjes en daar werkt dat ook fantastisch.

Uiteraard al je filesystems ook mounten met noatime!
Het grootste probleem lijkt me de hoeveelheid geheugen, je wil ook nog wat overhouden voor je programma's.
En alle programma's moeten zich gaan houden aan de nieuwe opslagregels, een behoorlijke onderneming.
My CD burning application writes huge .iso files to /tmp, and this breaks on tmpfs!
The application should be fixed to use /var/tmp.
My application writes temporary files to /tmp and they are gone after a reboot!
The application should be fixed to use /var/tmp. FHS recommends that /tmp is flushed on reboot, and that's what we do here.
My application writes huge user downloads to /tmp, and this breaks on tmpfs!
The application should be fixed to use XDG user-dir's Download directory, as exposed in GLib's g_get_user_special_dir(G_USER_DIRECTORY_DOWNLOAD)
http://fedoraproject.org/...tmp-on-tmpfs#Dependencies
Dat zijn maar wat voorbeelden natuurlijk uit de FAQ.
Hoeveel programma's er uiteindelijk aangepast moeten gaan worden kan ik ook niet zien.
En met nieuwe regels bedoel ik vanuit programma's gezien die nog niet gepdate zijn.

[Reactie gewijzigd door Soldaatje op 3 april 2012 18:50]

Dan zijn het nog steeds geen nieuwe regels. Die applicaties gaan er van uit dat /tmp persist na een reboot en dat is nooit gegarandeerd terwijl er wel een valide alternatief was.
Precies. De /tmp directory mag zelfs tijdens het gebruik worden geleegd indien noodzakelijk.

Als een applicatie een bepaalde hoeveelheid data nodig heeft, hoort de applicatie te checken of die ruimte wel beschikbaar is. En als dat niet zo is, vooraf te mauwen.

Ik durf ook nog wel zo ver te gaan om te zeggen dat de /tmp directory helemaal niet voor dat soort gebruik is bedoeld. Dat zou eerder in /var/spool horen, want een write buffer is vergelijkbaar met een print, job of message queue.
Subdirs zijn een probleem.

/tmp heeft geen structuur dus als een programma er naar wil schrijven dan moet het zelf de directory aanmaken als het er een wil hebben.

Maar voor andere directories wordt de structuur vaak aangemaakt tijdens installatie en gaat het programma tijdens het draaien er vanuit dat bestanden en directories er gewoon zijn.

Met tmpfs verdwijnen ze bij een reboot. Dat kan problemen opleveren. Tuurlijk, dat kun je voorkomen met een init script dat ze aanmaakt, op ze tijdens een normale shutdown wegschrijft en dan bij boot weer terug zet maar dat vereist dat iemand het doet voor alle uitzonderings gevallen.

Op laptops doe ik dit al een hele tijd, het is echt veel sneller, en een langzame HD heeft er ook baat bij net zoals een SSD. Maar er blijven altijd een paar programma's die een script noodzakelijk maken.
De kernel regelt dat allemaal. Das geen enkel probleem. Applicaties gebruiken gewoon zoals altijd de standaard File IO, alleen op de achtergrond zal de kernel de data niet naar de HDD schrijven, maar volgens tmpfs eerst naar RAM.
Het grootste probleem lijkt me de hoeveelheid geheugen, je wil ook nog wat overhouden voor je programma's.
meh - als ik kijk naar de huidige grootte van mijn /tmp dir (20MB), dan verwacht ik hierin niet snel problemen.
Hier 2.8 Mb, op ubuntu.
Uiteraard al je filesystems ook mounten met noatime!
Relatime is tegenwoordig de standaard kernel instelling, en biedt nagenoeg dezelfde performance/efficiency voordelen. Handmatig atime overrulen is doorgaans niet meer nodig.

http://git.kernel.org/?p=...e8b44548a9405b2c1d587b5a2


edit: aangepast nav de correcte opmerking van Sfynx.

[Reactie gewijzigd door litemotiv op 3 april 2012 19:56]

[...]


Dat is geen goed advies, bij een hard fail van je systeem (stroom valt weg e.d.) kan je erg nare problemen krijgen door tijd-mismatches.
Dan is het gewoon een slecht filesystem als dat mogelijk is. Het enige wat deze optie doet is nl. gewoon de access times niet bijwerken. Ik mag toch even aannemen dat een filesystem journal o.i.d. niet afhankelijk is van een atime functionaliteit :')
Ben je niet in de war met async zonder write barriers o.i.d.?
Vaak is het helemaal niet nodig om de aTime te weten, dus voor bepaalde partities kan die wel degelijk uitmaken.

Je journaal heeft daar weinig me te maken, want het blijft een schrijf actie die geburen moet.
Het voordeel van relatime tov noatime is dat de waardes, maar n keer per 24 uur worden bijgewerkt ipv nooit meer zoals bij noatime. Of bij elke actie zoals standaard is. Dit is gedaan om legacy applicaties en scripties te laten werken ipv dingen mogelijk stuk te maken.
Sinds een jaar (Fedora 15) zijn /var/run, /var/lock, /dev/shm en nog een aantal directories met tijdelijke bestanden samengevoegd tot /run, welke inderdaad standaard op een tmpfs gezet is.

Ik vraag me eigenlijk af waarom dit nieuws is. Het is mooi dat /tmp standaard een tmpfs is inderdaad, maar dat is al veel langer mogelijk op andere distributies. In Debian wordt het bijvoorbeeld al enige tijd aangeboden als een optie in de installer (is op bestaande installaties aan te zetten in /etc/default/rcS). Ubuntu heeft deze optie ook al overgenomen.
Zo dienen bepaalde bestanden na een reboot bewaard te blijven, bijvoorbeeld data die in /var/tmp wordt opgeslagen.
Ik zie het probleem niet. Volgens de FHS is /tmp bedoeld voor tijdelijke bestanden die na reboot weg kunnen (zijn) en /var/tmp voor tijdelijke bestanden die beter tussen reboots bewaard kunnen worden. tmpfs is dus uitermate geschikt voor /tmp (want na reboot weg). Wat /tmp als tmpfs vervolgens voor problemen zorgt met /var/tmp is mij dan ook onduidelijk. (behalve progs die bestanden in /tmp plaatsen terwijl ze in /var/tmp horen)
terwijl Arch Linux zijn gebruikers al adviseert om tmpfs te gebruiken.
Niet alleen adviseert. Paar maanden terug was er al een "filesystem" update waarin deze wijziging voor /etc/fstab zat. Bij een update wordt het dus geadviseerd (bestaande /etc/fstab wordt natuurlijk niet overschreven tijdens update, net zoals elke andere file in /etc wordt de nieuwe opgeslagen met de .pacnew extensie). Bij nieuwe installaties is het dus ook al het geval dat /tmp als tmpfs wordt gemount.
Is dit niet wat contra-intutief? Die map wordt juist dikwijls gebruikt om even iets kwijt te kunnen wat niet lekker in het geheugen past...
En daar is het juist niet voor. Geheugenbeheer is voor de Linux kernel. En de eindgebruiker bepaalt de grootte van de /tmp partitie en de grootte van de swapfile/-partitie. Het is dom om als softwareontwikkelaar aan te nemen dat /tmp groter is dan het beschikbare geheugen. Dat hoor je te checken voordat je ergens naar schrijft. En kan het niet? Dan moet de software waarschuwen. Heel simpel. Kennelijk wil de gebruiker niet dat er zoveel tijdelijke data wordt weggeschreven.
Volgens mij heb je daarvoor juist een swap partitie
Daarnaast kan er prestatiewinst geboekt worden doordat het werkgeheugen sneller is uit te lezen.
Als dergelijke dingen vaak uitgelezen worden, dan belandt dat toch wel in de filesystem cache als het goed is (ZFS gebruikt bijvoorbeeld standaard zelfs alles - 1GB aan RAM voor de ARC). Een beetje een oplossing in het straatje van je swap file op een RAM disk plaatsen :')
Is er iets dergelijks mogelijk in windows7? Heb hier een laptop met ssd (aanrader!) en vind dit wel interessant.
Met een RAM-disk en een (symbolic) link vanuit %temp% of %windir%\Temp moet je een heel eind kunnen komen. Let er dan wel op dat je dan bij elke boot de RAM-disk daadwerkelijk opstart, anders kun je problemen krijgen. :)

@hieronder: als gebruiker kun je niet kiezen of dit attribuut gebruikt wordt. Verder heb je dan alsnog een disk-write, waardoor de levensduur van een SSD weer achteruit gaat. Minimaal, maar toch...

[Reactie gewijzigd door Feanathiel op 4 april 2012 10:57]

In principe niet nodig. Windows heeft een FILE_ATTRIBUTE_TEMPORARY attribuut wat aangeeft dat een file temporary is, onafhankelijk waar die precies staat. Dat werkt dus ook buiten %TEMP%

[Reactie gewijzigd door MSalters op 3 april 2012 22:37]

Ben benieuwd wat er gebeurd als je nu een DVD brand van 4.7 GB met 4 GB RAM. Zou hij dan gewoon SWAP gebruiken omdat /tmp dan gewoon te klein is? Dan ben je gewoon weer terug bij af. Want ik mag aannemen dat er in deze situatie er vanuit gegaan wordt dat er geen HDD aangesloten is maar alleen SSD?
Swap gebruiken is niet per definitie slecht. Op de achtergrond kunnen er processen draaien die IDLE zijn (bv. een server die wacht op een verbinding), het geheugen wat dit process gebruikt kan in swap worden gezet, omdat het niet direct nodig is en dus beter besteed kan worden door andere programma's.

Daarnaast heeft tmpfs volgensmij ook een limiet. Standaard kan tmpfs maar X% (meen 10) van grote van RAM gebruiken (no id of dat met of zonder swap is). Je hebt dan dus limiet op tmpfs waardoor normaliter je swap dus niet gebruikt hoeft te worden (tenzij je al tegen limiet van RAM aanzit puur uit draaiende programma's). Op het moment dat brandprogramma dus een bestand van 4.7GB in /tmp wil zetten (WTF? waarom kan dat niet in delen?) ga je waarschijnlijk over de max. grote van /tmp heen en doet hij het helemaal niet.

@hieronder
Ik bedoelde ook dat die limiet de bovengrens is en dat er alleen gereserveerd wordt wat ook daadwerkelijk in gebruik is, dus de grote van /tmp.

[Reactie gewijzigd door RobertMe op 4 april 2012 13:49]

Standaard kan tmpfs maar X% (meen 10) van grote van RAM gebruiken
Standaard grootte is 50%. Uit "man mount":
Mount options for tmpfs
size=nbytes
Override default maximum size of the filesystem. The size is given in bytes, and rounded up
to entire pages. The default is half of the memory. The size parameter also accepts a suffix
% to limit this tmpfs instance to that percentage of your physical RAM: the default, when
neither size nor nr_blocks is specified, is size=50%
En het is niet zo dat ie dan ook maar gelijk de helft van het geheugen pakt; het is meer een bovengrens van wat er gealloceerd kan worden.
De daadwerkelijk ingenomen RAM-ruimte bestaat uit de bestanden die op het tmpfs-filesysteem staan.
Daarom kan je ook rustig 10 tmpfs-filesystems van 50% aanmaken; zolang ze ze goed als leeg zijn, maakt dat niets uit. En zelfs als ze wel vol zijn is er niets aan de hand, omdat de memory manager de swapruimte kan gebruiken om overloop in te parkeren.
Je hebt dan dus limiet op tmpfs waardoor normaliter je swap dus niet gebruikt hoeft te worden
De grootte van tmpfs heeft niets te maken met het al of niet gebruiken van swap. De virtual-memory manager bepaalt of en wanneer er swap ingeschakeld wordt. Je kunt dit wel beinvloeden d.m.v. swappiness, waarbij geldt: 0 = zo min mogelijk, 100 = zo veel mogelijk, default = 60.
Lijkt me erg inefficient van een brandprogramma om je DVD van 4.7 GB (die je al op je HDD hebt staan ergens) eerst te kopieren naar /tmp voordat ie gaat branden...
Ik neem aan dat het programma hooguit "stukjes" van die DVD in /tmp zet.
(Zelfde zou volgens mij moeten gelden voor een download)
About time vind ik. Doe dit al jaren op al mijn installaties van verschillende Linux distro's.
Tweakers, vermeld is even netjes (zoals het hoort) de bron in het artikel. Dat is dus overduidelijk phoronix.
t.net doet al jaren niet meer aan bronvermeldingen.
Lezen is moeilijk...
in het artikel
Dus een vermelding in de tekst zoals dit. Wat t.net al jaren doet.
Ik vind het best wel zinloos deze wijziging. In bedrijfsomgevingen heb je lokaal nauwelijks storage en dus meer dan genoeg aan een paar 10K/15K sas disken puur om van op te starten. Die staan de hele dag niks te doen. Applicaties en storage komt op externe storage te staan en eventueel server van SAN booten, heb je lokaal helemaal geen storage in je server.

Dit lijkt mij echt een aanpassing voor de thuisgebruiker en die zal zo nu en dan zeker de fout maken bestanden in /tmp op te slaan. Na reboot.. oeps weg. Er zal vast ergens een slecht geschreven applicatie te vinden zijn die enorm veel in tmp schrijft, maar om daarvoor nou (deeltje van) structuur van je OS om te gooien :? Dit is ook precies waar Sun jarenlang heel veel kritiek over heeft gehad, die dachten ook slim te zijn met tmpfs in memory. Geschiedenis herhaald zich.

Op dit item kan niet meer gereageerd worden.



Populair:Apple iPhone 6Samsung Galaxy Note 4Assassin's Creed UnityFIFA 15Nexus 6Call of Duty: Advanced WarfareApple WatchWorld of Warcraft: Warlords of Draenor, PC (Windows)Microsoft Xbox OneAsus

© 1998 - 2014 Tweakers.net B.V. Tweakers is onderdeel van De Persgroep en partner van Computable, Autotrack en Carsom.nl Hosting door True

Beste nieuwssite en prijsvergelijker van het jaar 2013