Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?
29.04.2017, 13:11:41

Einloggen mit Benutzername, Passwort und Sitzungslänge

Mitglieder
Statistiken
  • Beiträge insgesamt: 455540
  • Themen insgesamt: 36762
  • Heute online: 469
  • Am meisten online: 679
  • (03.04.2017, 15:20:01)
Benutzer Online

Autor Thema: [erledigt] Wie verlege ich tmp ins RAM  (Gelesen 644 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

[erledigt] Re: Wie verlege ich tmp ins RAM
« Antwort #15 am: 17.02.2017, 13:59:14 »
Zitat
Wäre sehr schön, wenn du mir verraten könntest, wie du das angestellt hast.
Ich habe in der fstab folgende Zeile eingetragen:
tmpfs                             /tmp                   tmpfs        nosuid            0       0Habe ich aus dem UU-Wiki:
https://wiki.ubuntuusers.de/SSD/Auslagerung/#Verlagerung-von-tmp

Re: Wie verlege ich tmp ins RAM
« Antwort #16 am: 17.02.2017, 14:31:25 »
Die Sache mit tmpfs ist so ein Thema wo extremst viele Un- und Halbwahrheiten im Umlauf sind. In einem Mix aus schlichtweg falschen Aussagen, veralteten Infos, Halbwahrheiten finden sich da mehr fragwürdige als hilfreiche Infos. Mal ein paar Dinge angesprochen. Ich bin in den meisten Fällen ein Gegner davon irgendwas als tmpfs zu mounten, im Fall von /tmp definitiv.

1. Performance-Gewinn ist mehr als fragwürdig
Ähnlich wie beim Thema Swap halte ich nichts davon es besser wissen zu wollen als der Kernel und dessen Entwickler, oder moderne Compiler und deren Entwickler. Wenn man genug RAM zur Verfügung hat um etwas als tmpfs mounten zu können, dann checkt der Kernel das auch selbst und verwendet entsprechend Kernel Buffer dafür. Allerdings hat er dann selbst die Kontrolle das flexibel je nach Belastung und Situation zu machen. Tmpfs ist auch nur buffer cache ohne Rückschreibemöglichkeit, keine Magie. Wenn es die Performance eines Systems steigert und Platz frei ist werden die Daten ohnehin wieder aus dem Cache und nicht der Platte gelesen. Das EINZIGE was man technisch wirklich spart wenn /tmp als tmpfs gemountet ist sind Schreibvorgänge in /tmp die nicht mehr gelesen werden, und das bringt quasi nichts. Es spart auch keine nennenswerten Ressourcen weil diese über Direct Memory Access erfolgen, man zwickt also keine Leistung vom CPU ab und spart sich quasi keine wenn man es als tmpfs mountet. Die Benchmarks die Poettering & Co damals angeführt haben sind völlig ungeeignet um eine Performance Vorteil zu belegen, ebendas ist mMn nie erfolgt und leuchtet technisch auch nicht wirklich ein. Das ist eig klar ersichtlich für jeden der sich damit befasst und wurde auch von mehreren Fedora Developern bestätigt.
TMPFS macht nichts als das was eh schon gemacht wird aber weniger flexibel. Man nimmt dem Kernel ein Stück die Möglichkeit selbst zu entscheiden.

2. Es bring ohne Nutzen unnötige Komplexität und Beschränkungen des Systems ins Spiel

Der Platz in einem Verzeichnis (/tmp) wird dadurch plötzlich durch eine andere eigentlich nicht verwandte Größe beschränkt, nämlich einen Prozentsatz des RAMs. Wieso führt man eine zusätzliche Beschränkung ein für die man keine Garantie hat und die schwieriger zu überblicken ist und mit anderen Teilen des Systems konkurriert? Nicht nur gibt es keinen Standard der irgendwie sagen würde dass Daten die in /tmp geschrieben werden nur so oder so groß sein sollten (geschweige denn einen der das irgendwie ins Verhältnis zum RAM setzt), es gibt ja noch nicht mal irgendwelche Richtlinien oder Empfehlungen diesbezüglich. Wie viel Platz man auf seiner Root Partition hat weiß man idR und wenn etwas schief läuft (eine Anwendung /tmp auffüllt) bekommt man einfach das Fehlverhalten von nicht ausreichendem HDD Speicher, was unproblematisch ist. Mit tmpfs schreibt er aber Memory voll, wobei am Ende immer Linux' Out-Of-Memory Killer steht, was unangenehme Folgen haben kann. Zugegeben beides auf dem Desktop vllt nicht allzu relevant aber wieder technisch das Gegenteil von intuitiv. Ist auch wenig intuitiv aus Sicht eines Programmierers der Anwendungen schreibt (da wird ja entschieden wann ins /tmp geschrieben wird). Ein Anwendungsfall wäre ja zB gerade wenn man Daten NICHT im RAM haben will, vllt weil man weiß dass sie groß aber nicht performancerelevant sind, sonst könnte man ja einen Buffer im Memory zuteilen statt auf die Platte zu schreiben. Mit tmpfs landet es aber genau dort (???). Unsinn irgendwie.

3. Es ist dummes Design weil es (nicht-so-spezielle) Spezialfälle nicht berücksichtigt.
3.1 Zb Virtuelle Maschinen mit recht wenig RAM, was sehr häufig vorkommt, auch in der Industrie. Hier ist /tmp plötzlich VIEL kleiner als es auf der Platte wäre, uU zu klein als dass Programme damit rechnen könnten. Je nach Anwendung sind VMs mit 512 oder 1GB RAM nicht selten, /tmp im tmpfs ist hier von Haus aus so klein wie im Normalfall auf einer bis oben hin voll gestopften und überfüllten Root Partition.
3.2 Es kann einzelne (wenige) Anwendungen fehlerhaft machen, beim Einführen dieses tollen "Features" mussten einige gefixt werden. Man kann zwar davon ausgehen dass das heute bei 99% der 'bekannten' Programme kein Problem ist, erwähnen kann man es trotzdem, gerade weil ich eben in tmp->tmpfs keinen Vorteil sehe.

Re: Wie verlege ich tmp ins RAM
« Antwort #17 am: 17.02.2017, 14:42:13 »
In so fern finde ich es bewundernswert, dass der Sinn dahinter auch dann als Blödsinn identifiziert werden kann, wenn er überhaupt nicht bekannt ist.
Ist hier durchaus üblich, daß auch über den Tellerrand geschaut wird.
Selten funktioniert es nach dem Motto: Frage oben einwerfen, unten kommt die Antwort heraus.

Es geht darum, daß dieses Forum für alle Mint-Anwender gedacht ist und eine unkommentierte Anleitung durchaus als Aufforderung verstanden werden kann, sie auch zu befolgen. Erfahrungsgemäß tun das manche auch, oft ohne zu wissen was sie tun, ob die Anleitung nun gut oder schlecht, richtig oder falsch ist.

Deswegen finde ich eine Abwägung von Sinn und Unsinn, Vor- und Nachteilen sehr berechtigt und in diesem Fall sogar auch notwendig.
« Letzte Änderung: 17.02.2017, 15:15:32 von aexe »

Re: Wie verlege ich tmp ins RAM
« Antwort #18 am: 17.02.2017, 15:03:25 »
.. und auch den praktischen Sinn dahinter nicht genannt.
Fragt sich dann, warum nicht!? ;)

Re: Wie verlege ich tmp ins RAM
« Antwort #19 am: 17.02.2017, 16:13:57 »
Fragt sich dann, warum nicht!?
Ich hatte eine solche Diskussion, welche nicht zielführend ist, voraus gesehen... und weil ich nur eine technische Frage hatte und nicht eine Diskussion über meine Gründe wollte.


Deswegen finde ich eine Abwägung von Sinn und Unsinn, Vor- und Nachteilen sehr berechtigt
Da gebe ich dir uneingeschränkt recht. Eine Abwägung von Sinn und Unsinn ist berechtigt, setzt aber voraus, dass man den Sinn kennt. Diesen habe ich bewusst nicht genannt, um solche Diskussionen zu vermeiden.
Wenn aber der Sinn nicht bekannt ist, wogegen wägt man dann ab?? Man kann doch nicht eine Sache mit sich selbst vergleichen!

Und selbst in dem Fall, dass der Sinn bekannt ist und kommentiert werden kann, denke ich, dass eine technische Frage auch zuerst beantwortet werden sollte, unabhängig davon, ob die Antwort noch mit einem Kommentar versehen wird.
Der Kommentar allein beantwortet doch schließlich die technische Frage nicht!


Es bring ohne Nutzen unnötige Komplexität
Vielen Dank für die Ausführungen, aber woher ist denn bekannt, dass es keinen Nutzen bringt?
Wie schon in anderen Beiträgen klargestellt wurde, ist tmp kein Auslagerungsordner des OS sondern wird vom Anwendungsprogramm genutzt, d. h. es ist unerheblich wie viel RAM ich habe. Wenn der Programmierer es so wollte, dann schreibt das Programm nach tmp und ich kann das auch nicht verhindern!
Ich kann aber durchaus verhindern, dass diese Dateien auf die HDD/SSD gelangen und das ist m. e. nur mit der Ramdisk möglich.

Wenn ich also (egal aus welchem Grund) verhindern möchte, dass irgendwelche Programme irgend etwas auf HDD/SSD pinseln, dann ist es nicht nur sinnvoll, sondern auch erforderlich!


Ich habe in der fstab folgende Zeile eingetragen:
Danke DOC, dass hatte ich auch schon getan und es hat vermutlich sogar funktioniert.

Ich hatte mich aber täuschen lassen, weil nach dem Herunterfahren immer noch Daten in tmp gelegen haben. Vermutlich ist es aber so, dass nach dem Einrichten der Ramdisk nur neue Dateien hier abgelegt werden, d. h. die Dateien, welche schon auf der HDD liegen, werden nicht übernommen. Nachdem ich die nun manuell gelöscht habe, ist tmp beim ausgeschaltetem OS jeweils sauber, was darauf schießen lässt, dass die Auslagerung in die Ramdisk durchaus funktioniert.

Was mir immer noch unklar ist:
- ich hätte vermutet, dass ich in der Ramdisk die Dateien aus tmp wiederfinde. Das ist aber nicht so.
- wenn ich die freie Größe von tmp abfrage, dann wird die freie Größe der Partition genannt und nicht der freie Bereich der Ramdisk, was ich erwartet hätte.

Möglicherweise hat dazu jemand noch eine Antwort.

« Letzte Änderung: 17.02.2017, 16:24:31 von Teddibär »

Re: Wie verlege ich tmp ins RAM
« Antwort #20 am: 17.02.2017, 16:28:59 »
Ich hatte eine solche Diskussion, welche nicht zielführend ist, voraus gesehen...
Nun weitest du sie aber selber hemmungslos aus … ;)
Und selbst in dem Fall, dass der Sinn bekannt ist und kommentiert werden kann, denke ich, dass eine technische Frage auch zuerst beantwortet werden sollte, unabhängig davon, ob die Antwort noch mit einem Kommentar versehen wird.
Der Kommentar allein beantwortet doch schließlich die technische Frage nicht!
Diese ist sehr einfach durch eine gezielte Suche, zB  im Forum, im UU-Wiki oder sonstwo im Netz zu beantworten.
Eine qualifizierte Beurteilung findest du aber so leicht nicht.

Es ist schlichtweg unmöglich von vornherein zu bestimmen, welche Antworten auf Fragen gegeben werden.
Man muss nehmen, was kommt.
« Letzte Änderung: 17.02.2017, 16:36:20 von aexe »

Re: Wie verlege ich tmp ins RAM
« Antwort #21 am: 17.02.2017, 16:37:43 »
Fragt sich dann, warum nicht!?
Ich hatte eine solche Diskussion, welche nicht zielführend ist, voraus gesehen... und weil ich nur eine technische Frage hatte und nicht eine Diskussion über meine Gründe wollte.
Kann ich verstehen, aber das ist nun mal eine Community, ein Forum, und keine bezahlte Dienstleistung. Das Leute das Thema auch mal breiter diskutieren wirst du schon hinnehmen müssen.
Deine Frage wurde ja auch beantwortet und hat damit nicht darunter gelitten. Aber ja, es war vllt etwas OT.

Zitat
Und selbst in dem Fall, dass der Sinn bekannt ist und kommentiert werden kann, denke ich, dass eine technische Frage auch zuerst beantwortet werden sollte, unabhängig davon, ob die Antwort noch mit einem Kommentar versehen wird.
Der Kommentar allein beantwortet doch schließlich die technische Frage nicht!
Geb ich dir recht, aber wiegesagt, beschweren musst du dich jetzt auch nicht, dein Ton ist so als ob du uns zahlst und wir nicht ordentlich unsre Arbeit machen. Deine Frage ist beantwortet und es gibt noch Zusatzinfos die unmittelbar ans Thema angeknöpft sind. Wozu das Genörgel?
Zitat
Wie schon in anderen Beiträgen klargestellt wurde, ist tmp kein Auslagerungsordner des OS sondern wird vom Anwendungsprogramm genutzt, d. h. es ist unerheblich wie viel RAM ich habe.
Verstehe nicht was du damit sagen willst. Wer sagt denn etwas anderes? Genau davon spreche ich ja. Aber Memory Management für Anwendungen betreibt nunmal der Kernel. Wieviel RAM du hast ist nicht prinzipiell unerheblich für dein Vorhaben, aus oben angeführten Gründen.
Zitat
Wenn der Programmierer es so wollte, dann schreibt das Programm nach tmp und ich kann das auch nicht verhindern!
Nein sollst du auch nicht, sonst würde das Programm ja uU nicht mehr funktionieren.
Zitat
Ich kann aber durchaus verhindern, dass diese Dateien auf die HDD/SSD gelangen und das ist m. e. nur mit der Ramdisk möglich.  Wenn ich also (egal aus welchem Grund) verhindern möchte, dass irgendwelche Programme irgend etwas auf HDD/SSD pinseln, dann ist es nicht nur sinnvoll sondern auch erforderlich!
Dass Programme etwas auf die HDD pinseln verhinderst du damit nicht allgemein, sondern dass sie etwas nach /tmp pinseln, was ja nicht der einzige Ort ist an dem sie schreiben dürfen.
Willst du eigentlich mit Gewalt ein Geheimnis daraus machen was du vorhast  ;D
Zitat
Vielen Dank für die Ausführungen, aber woher ist denn bekannt, dass es keinen Nutzen bringt?
Weil es nun mal technisch kaum Fälle gibt wo es einen spürbaren Vorteil bringt egal in welcher Hinsicht. Es gibt kaum Fälle in denen du Performance verbesserst und halbwegs moderene SSDs profitieren nicht mehr im signifikanten Bereich von weniger writes. Wenn du ein Geheimnis daraus machen willst oder es nicht diskutieren willst, belasse ich es aber dabei.

[

Re: Wie verlege ich tmp ins RAM
« Antwort #22 am: 18.02.2017, 09:00:21 »
Was mir immer noch unklar ist:
- ich hätte vermutet, dass ich in der Ramdisk die Dateien aus tmp wiederfinde. Das ist aber nicht so.
Antwort #4 gelesen?

Re: Wie verlege ich tmp ins RAM
« Antwort #23 am: 18.02.2017, 11:10:36 »
Was mir immer noch unklar ist:
- ich hätte vermutet, dass ich in der Ramdisk die Dateien aus tmp wiederfinde. Das ist aber nicht so.
- wenn ich die freie Größe von tmp abfrage, dann wird die freie Größe der Partition genannt und nicht der freie Bereich der Ramdisk, was ich erwartet hätte.

Möglicherweise hat dazu jemand noch eine Antwort.
Du hast mit diesen zwei Statements in der fstab zwei voneinander völlig unabhängige "Ramdisks" erstellt:
tmpfs   /media/ramdisk   tmpfs   defaults,size=15%   0   0
tmpfs   /tmp   tmpfs   nosuid,size=15%   0   0

Sowohl /media/ramdisk als auch /tmp sind hier als Mountpoints deklariert, die jeweils auf eine eigene Ramdisk zeigen. Für Dein Vorhaben wäre der Mountpoint  /media/ramdisk gar nicht notwendig. Schau einfach nach dem Boot im Terminal mit "df" nach, dann siehst Du, dass der Mountpoint /tmp vom Typ tmpfs ist. Ohne den fstab-Eintrag müsste /tmp auf der Harddisk liegen, erkennbar am Device, z.B. /dev/sda1.... als Gegenstück zu tmpfs. Damit hättest Du Dein Ziel erreicht.
« Letzte Änderung: 18.02.2017, 11:15:03 von Junkfood »

Re: Wie verlege ich tmp ins RAM
« Antwort #24 am: 18.02.2017, 11:55:46 »
Danke für die Erklärung!

Damit wird klar, warum ich die temporären Daten nicht in /media/ramdisk sehe, sondern in /tmp.

Mir ist aber weiterhin unklar, warum dann in /tmp der angezeigte freie Speicher nicht mit der Größe der Ramdisk, sondern mit der freien Größe der Partition konform geht?

Re: Wie verlege ich tmp ins RAM
« Antwort #25 am: 18.02.2017, 12:04:30 »
Zeig mal die Ausgabe von df -h /tmp

Re: Wie verlege ich tmp ins RAM
« Antwort #26 am: 18.02.2017, 13:28:12 »
Danke für die Frage - manchmal ergibt sich aus der richtigen Frage auch schon die Antwort.

Ich hatte eingangs geschrieben, dass ich die Ramdisk erstellt habe mit:

tmpfs   /tmp   tmpfs   nosuid,size=15%   0   0

Nachdem DocHifi dann geschrieben hatte, er hätte das mit

tmpfs   /tmp   tmpfs   nosuid   0   0

getan, hatte ich die Zeile in fstab später ebenfalls geändert und nicht mehr daran gedacht. Damit wird die Ramdisk natürlich recht groß und kam in die Größenordnung des freien Bereiches der Partition.
« Letzte Änderung: 18.02.2017, 15:09:46 von Teddibär »

Re: Wie verlege ich tmp ins RAM
« Antwort #27 am: 18.02.2017, 14:30:30 »
Die Größe kann man übrigens während des Betriebs einfach durch remounten ändern falls nötig.
Da ich das öfter machen muss habe ich mir eine einzeilige Funktion dazu in meine .zshrc/.bashrc gepackt:

tmpsize() {
    sudo mount -t tmpfs tmpfs /tmp -o size="$1",nosuid,nodev,remount
    printf "Neue /tmp Größe: %s\n" "$(df -h /tmp | awk '/\/tmp/{print $3}')"
}

Dann kann man schnell mit "tmpsize X" die Größe auf X anpassen zB
tmpsize 500MIst vllt gut zu wissen.

Re: Wie verlege ich tmp ins RAM
« Antwort #28 am: 18.02.2017, 15:10:31 »
Vielen Dank Bobby für die Info. Schon wieder etwas gelernt!