Diskussion:Arbeiten mit tmpfs
Aus Gentoo Linux Wiki
"Dieser Tipp ist vor allem für alldiejenigen, bei denen eines der folgenden Merkmale zutrifft:
viel RAM viel Freizeit wenig zu tun keine Freunde insb. keine Freundin"
Wie alt ist der Autor dieser Zeilen? 15? Ein bißchen mehr Sachlichkeit im Wiki würde gut tun.
das script is ein bischen zum "drueber stolpern" da "$PORTAGE_TMPDIR" in der regel "leer" is.
ICH habe PORTAGE_TMPDIR nicht hinzugefuegt :)
Ich finde die Aussage, dass selbst mit psyco im letzten Skript keine Folgefehler auftreten schlicht und ergreifend falsch. Schließlig >GIBT< emerge mit psycho einfach Segmentation Faults zurück, die mit Sicherheit >nicht< durch die Tatsache behoben werden, dass /var/tmp/ bzw /var/tmp/portage jetzt im Ram liegt. Daher habe ich das rauseditiert.
--Paniq 01:33, 4. Dez 2005 (GMT)
Inhaltsverzeichnis |
[Bearbeiten] Artikel mit Lust gelesen
Ich finde der Artikel ist einfach Genial geschrieben. Dickes und dreifaches PLUS für den Autor ! Warum sollte man das Thema Linux denn immer soooo HOWTO'isch ernst nehmen :) Danke
[Bearbeiten] Aufräumen?
Wie wärs, wenn mal die ganzen Kommentare auf der Wiki-Seite über Sinn von tmpfs in die Diskussion verschoben wird? Ich finde, das hat auf einer Wikiseite nix zu suchen.
[Bearbeiten] Sinnvoll, tmpfs zu nutzen?
[Bearbeiten] Tjo..
Meldet euch bitte ganz unten, ob euch das etwas mehr Performance gab.
--inbreed 09:40, 28. Dez 2004 (GMT)
[Bearbeiten] kurz vor ganz unten
Aufgrund einer Frage schrieb ich ein kleines Script dazu, welches vor dem Emergen tmpfs mountet, emerged, dann umounted ... und alles so gut ;)
das Skript ( ich habe kaum Ahnung von bash, oder bash0rn..;) ) sei in einem deiner bin-path zu erstellen, für alle die k/a haben: /usr/local/bin oder /usr/bin z.B.!
Dort: $EDITOR temerge Inhalt:
#!/bin/bash
if [ ! -d $PORTAGE_TMPDIR ]
then
mkdir -vp $PORTAGE_TMPDIR
fi
mount -t tmpfs tmpfs $PORTAGE_TMPDIR;
echo -e "Mounting 50% of physical RAM to $PORTAGE_TMPDIR...\t done\n";
sleep 1;
echo -e "emerging ${*} ....\n";
emerge $*;
cd ;
umount -f $PORTAGE_TMPDIR;
echo -e "\nUnmounting tmpfs....\t done\n";
speichern, chmod u+x und föddisch, temerge -p e erzeigt dann (bei mir):
mounting 50% of physical RAM to /var/tmp/portage... done emerging -p e .... These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild N ] media-libs/edje-9999 [ebuild N ] x11-wm/e-9999 unmounting tmpfs.... done
und ja, für nen --pretend ists egal, emerge vim z.b. würde deutlich mehr Sinn ergeben.
hf!
[Bearbeiten] ganz unten
doedel : bei mir habe ich es nur mit xpaint getestet, aber man sieht es auch schon:
Wed Sep 13 22:40:31 2006 >>> media-gfx/xpaint-2.7.7
merge time: 4 minutes.
Wed Sep 13 23:59:28 2006 >>> media-gfx/xpaint-2.7.7
merge time: 2 minutes and 52 seconds.
AMD Athlon XP 1800+/512MB Ram
inbreed : mir brachte es ca. 50-70%
prrrem : yeah, Auf einem Athlon XP 2500+ und vanilla-2.6.10 ca. 30%
jackdachef: klasse :) bei mir brachte es in Verbindung mit ccache zwischen 30-50% (oder mehr)
nicro: wow, über 40% schneller auf einem Athlon TB 900/512 MB SDRAM mit lahmer 2,5" HDD.
mike: extreme Beschleunigung von großen Paketen auf Pentium-M 730 1.60GHz
- vorher: Tue Jun 7 22:35:51 2005 >>> x11-libs/qt-3.3.4-r4
- merge time: 1 hour, 7 minutes and 25 seconds.
- nacher: Sun Jun 19 13:40:40 2005 >>> x11-libs/qt-3.3.4-r5
- merge time: 31 minutes and 46 seconds.
knorke: juhuu, 2.5% im besten fall für tmpfs. den worst case will ich gar nicht erst testen... :( he mike, ist der 50% gewinn nicht einfach nur auf ccache und cache zurückzuführen?!?
[Bearbeiten] noch weiter unten
Eine kleine Anmerkung meinerseits noch:
temerge laesst sich einwandfrei mit distcc, ccache usw kombinieren, ohne das irgenwelche Folgefehler auftreten.
--inbreed 17:21, 1. Jul 2005 (GMT)
Und wieviel Speed bringt das dann?
--pslizer 14:12, 27. Jul 2005 (GMT)
Mehr! wieviel genau kannich leidern icht angeben.. da ich seitn paar monaten eigentlich nix zu emergen hatte...
--inbreed 13:16, 10. Sep 2005 (GMT)
Wie sieht es aus mit dem Verhältnis Ram <-> tmpfs ? Was ist empfehlenswert, was nicht? (Es bringt ja nichts wenn man 99% tmpfs hat und nur noch 1% ram rest... wo ist der Grenzwert?
Ich habe bei mir 1GB angegeben und mounte das automatisch bei Systemstart. Ich habe aber auch nur 1GB Arbeitsspeicher. tmpfs benutzt allerdings immer nur soviel Speicher wie es durch den Inhalt brauch, außerdem wird es auch irgendwann ausgelagert in den Swap-Bereich falls es nicht benötigt wird.
--utgamer 18:35, 10. Nov 2005 (GMT)
Das Skript "temerge" unter der Überschrift "kurz vor ganz unten" ist fehlerhaft (es mounted nicht), ich habe ein anderes geschrieben, dazu muß nur eine ".keep" Datei in "/var/tmp/portage" erstellt werden, falls die Datei nicht vorhanden ist.
#!/bin/bash
# http://de.gentoo-wiki.com/Arbeiten_mit_tmpfs
file=/var/tmp/portage/.keep
if [ -e $file ]
then
mount -t tmpfs tmpfs -o size=850M /var/tmp/portage
echo Mounting 850MB of physical RAM to /var/tmp/portage
echo -e "emerging ${*} ....\n"
emerge $*
cd
umount /var/tmp/portage
echo "/var/tmp/portage is unmounted"
fi
Unter if wird getested, ob die ".keep" Datei vorhanden ist, wenn "wahr" wird gemounted, emerge ausgeführt und wieder unmounted.
Die Geschwindigkeit habe ich nicht gemessen, aber es ist schneller. :)
Frage Irgendwie funktionierts bei mir nicht. !!! ERROR: dev-util/bdelta-0.1.0 failed. !!! Function src_compile, Line 24, Exitcode 2 !!! emake failed !!! If you need support, post the topmost build error, NOT this status message. Keine Ahnung ob das mehrere haben, vielleicht solltest du das noch mit aufnehmen, woran das liegt.
DarkSpir: Uhm, ja. Was man noch beachten sollte: Kommt nicht auf die Idee, OpenOffice mit tmpfs zu kompilieren. Ich benutze verschämt hier das Binary, weil das Kompilieren sich auf meinem Pentium Mobile 1600 Centrino über 5 Stunden hinweg zieht und mehrere Gigabyte in /var/tmp/portage haben möchte.
[Bearbeiten] Sinnhaftigkeit eines Shell-Skripts á la temerge
Hallo!
Ich bin neu hier, benutze Gentoo jedoch schon seit vielen Jahren.
Was ich mich frage: warum wird hier eigentlich ein Shell-Skript wie temerge angeboten? Ich halte das für wenig sinnvoll, da tmpfs nur den Speicher belegt, den das Dateisystem innerhalb tmpfs zu einem bestimmten Zeitpunkt tatsächlich belegt. Wenn man es also in /etc/fstab beim Systemstart einbindet braucht man sich nicht weiter um einen Skript wie temerge kümmern.
In der Tat habe ich den Spieß einfach umgedreht: ich habe ein Verzeichnis /var/tmp/local/portage angelegt und ein sehr einfaches bash-Skript mit dem Inhalt
PORTAGE_TMPDIR="/var/usr/local/portage" emerge $*
unter /usr/local/bin/emerge-local angelegt, mit welchem ich Packete wie wxGTK, wine und OpenOffice.org kompiliere. Der Rest funktioniert mit tmpfs (mit 1 GB Größe: size=1G).
Außerdem wurde ein weiterer Aspekt im Artikel überhaupt nicht bedacht: Fragmentierung. In dem man die temporären Dateien eines emerge-Prozesses nie auf die Festplatte schreibt, und nur die fertigen Dateien auf die Festplatte kopiert werden, wird sich der Grad der Fragmentierung mit der Zeit nicht so stark verschlechtern als wenn ständig temporäre Dateien wieder gelöscht werden *nachdem* die fertigen Dateien in das selbe Dateisystem kopiert wurden.
Gruß, Andreas.
