/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
tmp, tmpfs og swap
Fra : Thomas Jensen


Dato : 01-05-11 12:07

Hvis fx. et billedbehandlingsprogram tilføjer et filter til et billede,
og der derfor skal oprettes en midlertidig kopi af billedet, er det så
programmet eller Linux der afgør om kopien skal oprettes i hukommelsen
(ram) eller i tmp (hd)?

Min opfattelse er, at det er programmet der afgør det. Og, at hvis det
vælger at oprette kopien i hukommelsen, og der ikke er tilstrækkelig ram,
så sørger Linux for at tage swap i brug.

Men mange programmer ser ud til at bruge tmp til midlertidige filer -
altså som arbejdshukommelse - i stedet for at lade Linux styre det - er
det ikke dumt?

Jeg kan se fornuften i at bruge tmp til midlertidige filer som ikke
tilgås ret ofte - systemindstillinger, m.m. Men hvorfor bruge tmp som
arbejdshukommelse? For at kunne genskaber data i tilfælde af nedbrud?
Eller...?

Man kan selvfølgelig mounte tmp til tmpfs, og på den måde bruge ram før
harddisken (swap) tages i brug, men... hvorfor vælger nogen programmer at
bruge tmp som arbejdshukommelse, i stedet for at overlade det til
styresystemet hvad der skal bruges? Er der gode grunde til IKKE at mounte
tmp til tmpfs?

--
Thomas Jensen, Horsens

 
 
Kent Friis (01-05-2011)
Kommentar
Fra : Kent Friis


Dato : 01-05-11 15:56

Den 01 May 2011 11:07:11 GMT skrev Thomas Jensen:
> Hvis fx. et billedbehandlingsprogram tilføjer et filter til et billede,
> og der derfor skal oprettes en midlertidig kopi af billedet, er det så
> programmet eller Linux der afgør om kopien skal oprettes i hukommelsen
> (ram) eller i tmp (hd)?
>
> Min opfattelse er, at det er programmet der afgør det. Og, at hvis det
> vælger at oprette kopien i hukommelsen, og der ikke er tilstrækkelig ram,
> så sørger Linux for at tage swap i brug.
>
> Men mange programmer ser ud til at bruge tmp til midlertidige filer -
> altså som arbejdshukommelse - i stedet for at lade Linux styre det - er
> det ikke dumt?
>
> Jeg kan se fornuften i at bruge tmp til midlertidige filer som ikke
> tilgås ret ofte - systemindstillinger, m.m. Men hvorfor bruge tmp som
> arbejdshukommelse? For at kunne genskaber data i tilfælde af nedbrud?
> Eller...?

På en 32-bit maskine, er programmets tilgængelige memory (RAM + swap)
begrænset til i alt 2 GB. Filer derimod kan være meget større.

Det kunne være grunden til at mange downloads ender i en temp
mappe (/tmp eller browserens cache mappe). Plus hvis det alligevel skal
ned i en fil, så er det nemmere at skrive direkte til en fil og så
omdøbe den når download'en er færdig.

Andre programmer er i virkeligheden shell-scripts, som blot kalder
andre programmer. I shell-scripts er det nemt at arbejde med filer,
hvorimod at smide noget op i RAM ikke er så simpelt.

> Man kan selvfølgelig mounte tmp til tmpfs, og på den måde bruge ram før
> harddisken (swap) tages i brug, men... hvorfor vælger nogen programmer at
> bruge tmp som arbejdshukommelse, i stedet for at overlade det til
> styresystemet hvad der skal bruges? Er der gode grunde til IKKE at mounte
> tmp til tmpfs?

At du ikke har RAM nok?

Mvh
Kent
--
"The Brothers are History"
http://www.gianas-return.de/

(Thorbjørn Ravn (01-05-2011)
Kommentar
Fra : (Thorbjørn Ravn


Dato : 01-05-11 21:28

Thomas Jensen <lianergoist@sejlgarnet.dk> writes:

> Men mange programmer ser ud til at bruge tmp til midlertidige filer -
> altså som arbejdshukommelse - i stedet for at lade Linux styre det - er
> det ikke dumt?

Filer kan ses af flere programmer, det kan hukommelsesdele ikke uden
særlige krumspring. Der kan sættes låse mv på filer.

Filer overlever fra kørsel til kørsel.

Programmer har en endelig mængde hukommelse til rådighed (ulimit så vidt
jeg husker), og når det er nået får de ikke mere. Filer i /tmp tæller
ikke med i dette tal.

Og meget andet af samme skuffe.

Nogen operativsystemer lægger så /tmp i ram så det fungerer som en
ramdisk og man får det bedste af begge verdener.
--
Thorbjørn Ravn Andersen "... plus... Tubular Bells!"

Leif Neland (10-05-2011)
Kommentar
Fra : Leif Neland


Dato : 10-05-11 14:44

Den 01-05-2011 13:07, Thomas Jensen skrev:
> Hvis fx. et billedbehandlingsprogram tilføjer et filter til et billede,
> og der derfor skal oprettes en midlertidig kopi af billedet, er det så
> programmet eller Linux der afgør om kopien skal oprettes i hukommelsen
> (ram) eller i tmp (hd)?
>
> Min opfattelse er, at det er programmet der afgør det. Og, at hvis det
> vælger at oprette kopien i hukommelsen, og der ikke er tilstrækkelig ram,
> så sørger Linux for at tage swap i brug.
>
> Men mange programmer ser ud til at bruge tmp til midlertidige filer -
> altså som arbejdshukommelse - i stedet for at lade Linux styre det - er
> det ikke dumt?
>
Poul Henning Kamp har skrevet en artikel om at applikationsprogrammører
skal koncentrere sig om at skrive applikationer, og lade
systemprogrammørerne skrive operativsystemer.

Han mener at det er forkert at applikationsprogrammørerne bøvler med at
lave buffere, temporære filer og andre krumspring for at minimere
ram-forbruget. De skal lave deres ting, så de kører godt i et stort
adresserum, og så lade systemprogrammørerne ordne swap, virtual memory
osv, det har de meget bedre styr på.

http://cacm.acm.org/magazines/2010/7/95061-youre-doing-it-wrong/fulltext

(Jeg tror da det er det, han mener...)

Leif


Søg
Reklame
Statistik
Spørgsmål : 177416
Tips : 31962
Nyheder : 719565
Indlæg : 6407859
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste