Programm immer im Arbeitsspeicher geladen?
Programm immer im Arbeitsspeicher geladen?
Hallo Ihr,
kann ich das unter Debian so einrichten, daß ein bestimmtes Programm, ein Appimage immer im Arbeitsspeicher geladen ist - und so schneller startet, als wenn ich es von der Festplatte immer wieder starten muß?
Ich hab zwar eine SSD, aber ich fände es irgendwie chick, wenn man das so machen könnte. Als daß das Appimage-Programm immer "an" ist, aber nicht sichtbar, bis ich eine Datei damit öffne?
Viele Grüße desputin
kann ich das unter Debian so einrichten, daß ein bestimmtes Programm, ein Appimage immer im Arbeitsspeicher geladen ist - und so schneller startet, als wenn ich es von der Festplatte immer wieder starten muß?
Ich hab zwar eine SSD, aber ich fände es irgendwie chick, wenn man das so machen könnte. Als daß das Appimage-Programm immer "an" ist, aber nicht sichtbar, bis ich eine Datei damit öffne?
Viele Grüße desputin
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
Re: Programm immer im Arbeitsspeicher geladen?
Vorschlag: Richte ein, dass das Programm mit dem Login bzw. Start des Fenstermanagers gestartet wird und beende es dann einfach nicht.
Oder habe ich jetzt die Frage falsch verstanden?
Gruß
Gregor
Oder habe ich jetzt die Frage falsch verstanden?
Gruß
Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])
Re: Programm immer im Arbeitsspeicher geladen?
Könnte ich schon machen, aber ich mag es nicht, wenn in der Zwischenzeit unbenutzte Fenster in der "Gegend rumstehen"
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
Re: Programm immer im Arbeitsspeicher geladen?
Frueher war das Sticky Bit genau dafuer da: https://de.wikipedia.org/wiki/Sticky_Bi ... en_Dateien Das aber nur als Hintergrundinformation, die dir nicht weiterhilft.
Welchen Window-Manager verwendest du denn? Denn der hat die Kontrolle darueber welche Fenster angezeigt werden. Ggf. gibt es bei ihm eine Moeglichkeit ein Fenster unsichtbar zu machen, dann koennte man das ggf. mit einem Shellscript loesen.
Hier mal als Idee:
- Zum Pausieren: den Prozess suspenden, damit er keine Ressourcen verbraucht, dann mit wmctrl (oder wie das Programm heisst) das Fenster nach ausserhalb des Desktops schieben oder auf einen anderen Desktop schieben oder minimieren oder etwas in der Art.
- Zum Wiederoeffnen: den Prozess resumen und das Fenster an die vorige Position bzw. in den vorigen Zustand bringen.
Kommt halt auch darauf an wieviel du dafuer basteln willst und was du bereit bist dafuer an Kompromissen und Aenderungen an deinem System in Kauf zu nehmen.
Welchen Window-Manager verwendest du denn? Denn der hat die Kontrolle darueber welche Fenster angezeigt werden. Ggf. gibt es bei ihm eine Moeglichkeit ein Fenster unsichtbar zu machen, dann koennte man das ggf. mit einem Shellscript loesen.
Hier mal als Idee:
- Zum Pausieren: den Prozess suspenden, damit er keine Ressourcen verbraucht, dann mit wmctrl (oder wie das Programm heisst) das Fenster nach ausserhalb des Desktops schieben oder auf einen anderen Desktop schieben oder minimieren oder etwas in der Art.
- Zum Wiederoeffnen: den Prozess resumen und das Fenster an die vorige Position bzw. in den vorigen Zustand bringen.
Kommt halt auch darauf an wieviel du dafuer basteln willst und was du bereit bist dafuer an Kompromissen und Aenderungen an deinem System in Kauf zu nehmen.
Use ed once in a while!
Re: Programm immer im Arbeitsspeicher geladen?
Die Antwort ist ein klares "Jein".
Du könntest das Appimage während oder nach dem Bootvorgang in ein tmpfs-Dateisystem kopieren (z.B. /dev/shm).
Allerdings kannst du nicht verhindern, dass dieses dann im RAM liegende Image in eventuell vorhandenen Swap (also auf die HDD/SSD) ausgelagert wird, falls der RAM knapp wird.
Du könntest das Appimage während oder nach dem Bootvorgang in ein tmpfs-Dateisystem kopieren (z.B. /dev/shm).
Allerdings kannst du nicht verhindern, dass dieses dann im RAM liegende Image in eventuell vorhandenen Swap (also auf die HDD/SSD) ausgelagert wird, falls der RAM knapp wird.
Re: Programm immer im Arbeitsspeicher geladen?
Hallo hikaru,
ich hab kein Swap, da sehr viel RAM.
Wie kann ich denn das Appimage nach /dev/shm kopieren und was genau bewirkt das? Ist das Programm dann automatisch immer im Arbeitsspeicher?
ich hab kein Swap, da sehr viel RAM.
Wie kann ich denn das Appimage nach /dev/shm kopieren und was genau bewirkt das? Ist das Programm dann automatisch immer im Arbeitsspeicher?
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
- king-crash
- Beiträge: 722
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
Re: Programm immer im Arbeitsspeicher geladen?
Code: Alles auswählen
mount -t tmpfs none /mountpoint
Re: Programm immer im Arbeitsspeicher geladen?
Hallo King-crash,
super, danke!
Also ich habe in meine /etc/fstab nun diese Zeile hinzugefügt und entsprechendes Verzeichnis mit chmod 777 erstellt:
Und wie kriege ich dann mein Appimage da hinein?
super, danke!
Also ich habe in meine /etc/fstab nun diese Zeile hinzugefügt und entsprechendes Verzeichnis mit chmod 777 erstellt:
Code: Alles auswählen
mount -t tmpfs none /media/ramdisk
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
Re: Programm immer im Arbeitsspeicher geladen?
Beachte bitte das du zwar ein Dateisystem im RAM nutzt, der Kernel jedoch das ausführbare Programm beim Starten dann ein zweites Mal in den RAM lädt.
Execute-In-Place beim tmpfs/ramfs gibt‘s nämlich nicht.
Execute-In-Place beim tmpfs/ramfs gibt‘s nämlich nicht.
Re: Programm immer im Arbeitsspeicher geladen?
desputin hat geschrieben:04.07.2021 10:32:28Also ich habe in meine /etc/fstab nun diese Zeile hinzugefügt und entsprechendes Verzeichnis mit chmod 777 erstellt:Und wie kriege ich dann mein Appimage da hinein?Code: Alles auswählen
mount -t tmpfs none /media/ramdisk
Code: Alles auswählen
cp /pfad/zum/Appimage /media/ramdisk/
Re: Programm immer im Arbeitsspeicher geladen?
Hm, was bringt das denn dann für einen Vorteil, wenn das Programm trotzdem jedes Mal von der SSD in den Ram geladen wird? oder wird das Programm aus dem Ram neu geladen? Weil das ist dann ja viel viel viel schneller als von der SSD zu laden...
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
Re: Programm immer im Arbeitsspeicher geladen?
Ich sehe nicht den Vorteil, eine Ram Disk zu kreieren, und das gestartete das Programm (wie auch immer) dahin zu packen.
Wo ist der Unterschied zum Hauptspeicher?
Das Problem scheint mir zu sein, das das Programm sich wohl nicht minimieren lässt, oder es in der Leiste bei den
offenen Anwendungen stört.
Ein Ausweg wäre da eventuell kdocker
Damit lassen sich die meisten Anwendungen direkt in den Systemtray starten, und auch dahin minimieren..
Damit lässt sich das Problem des doppelten Startens zumindest bei meinem Test umgehen
Anwendung verschwindet im Tray als Icon.
Auch ein öffnen einer Datei aus dem Dateimanager heraus startet Geany nicht ein zweites Mal
EDIT
Ich habe mit App-Images keinen weitere Erfahrung. Hatte mir irgendwann mal so was runter geladen.
Das startete doch aber ziemlich flott. Ein Bedürfnis, das nun vor Gebrauch zu laden weil es zu langsam startet
ist mir da nicht in den Sinn gekommen.
Was hast du denn da für eine "Krücke" bzw. ein Mammut-App- Image dass du einen solchen Weg in Erwägung ziehst ?
Wo ist der Unterschied zum Hauptspeicher?
Das Problem scheint mir zu sein, das das Programm sich wohl nicht minimieren lässt, oder es in der Leiste bei den
offenen Anwendungen stört.
Ein Ausweg wäre da eventuell kdocker
Damit lassen sich die meisten Anwendungen direkt in den Systemtray starten, und auch dahin minimieren..
Damit lässt sich das Problem des doppelten Startens zumindest bei meinem Test umgehen
Code: Alles auswählen
kdocker geany
Auch ein öffnen einer Datei aus dem Dateimanager heraus startet Geany nicht ein zweites Mal
EDIT
Ich habe mit App-Images keinen weitere Erfahrung. Hatte mir irgendwann mal so was runter geladen.
Das startete doch aber ziemlich flott. Ein Bedürfnis, das nun vor Gebrauch zu laden weil es zu langsam startet
ist mir da nicht in den Sinn gekommen.
Was hast du denn da für eine "Krücke" bzw. ein Mammut-App- Image dass du einen solchen Weg in Erwägung ziehst ?
Re: Programm immer im Arbeitsspeicher geladen?
Hm, ja also mit kdocker geht es. Mein Appimage ist übrigens der VLC player. Das doofe ist, daß ich dann bei kdocker immer die selbe Instanz nehmen muß, ich hab das lieber, wenn bei jedem Video-Klick aus dem Dateimanager eine neue VLC-Instanz aufgeht. So lange dauert der Start von VLC ja auch nicht von SSD. Bei mir vielleicht 2-2,5 Sekunden. Wenn es 0,5 Sekunden wären, wär das aber natürlich chicker...
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
Re: Programm immer im Arbeitsspeicher geladen?
Keinen.desputin hat geschrieben:04.07.2021 11:34:11Hm, was bringt das denn dann für einen Vorteil, wenn das Programm trotzdem jedes Mal von der SSD in den Ram geladen wird?
Wenn du das Programm aus dem RAM starten willst muss es ja erst einmal dorthin. Und da RAM flüchtig ist musst du es eben nach jedem Kaltstart erneut dorthin kopieren.
Der einzige Vorteil den ich mir zusammenspinnen könnte ist der, dass du Zeit beim Starten des Programms aus dem RAM sparst falls du die Angewohnheit hättest, dir nach dem Start des Rechners einen Kaffee zu holen und so vom Bootprozess eigentlich nichts mitbekommst.
Natürlich wäre es auch dann immer noch einfacher, das Programm in den Autostart zu packen. Aber wenn du keine nutzlos offenen Fenster magst ...
Re: Programm immer im Arbeitsspeicher geladen?
Was hat es für einen Vorteil VLC als APP- Image zu benutzen ?
In Testing gibt es die aktuellste Version 3.0.16, die startet dann schneller als ein Augenzwinkern
Den VLC kann man doch einfach minimiert im Systemtray starten lassen, wenn man das unbedingt will.
Dann stört er nicht mehr.
In Testing gibt es die aktuellste Version 3.0.16, die startet dann schneller als ein Augenzwinkern
Den VLC kann man doch einfach minimiert im Systemtray starten lassen, wenn man das unbedingt will.
Dann stört er nicht mehr.
Re: Programm immer im Arbeitsspeicher geladen?
Für den VLC (aus dem Repo) brauchst du keinerlei Zusatz- Programme.
Du kannst 25 Videos (wenn's beliebt ) aus dem Dateimanager starten und hast dann 25 Icons im Systemtray.
Jedes kannst du separat steuern.
Du kannst 25 Videos (wenn's beliebt ) aus dem Dateimanager starten und hast dann 25 Icons im Systemtray.
Jedes kannst du separat steuern.
Re: Programm immer im Arbeitsspeicher geladen?
ich habe hier stable, nicht testing. VLC in stable hat mir zu viel Probleme gemacht (Abstürze im Hintergrund), daher die Lösung mit Appimage. aber stimmt, ich kann vlc minimiert starten lassen, aber wenn ich dann für jedes Video eine neue Instanz öffne, dann kommt jedes Mal ein kleines Icon unten hinzu, fürchte ich, daher wäre es besser, wenn ich VLC dann immer schließen könnte (und es trotzdem im Arbeitsspeicher bleibt)
Wenn VLC per Autostart in den Arbeitsspeicher geladen wird und dann dort die ganze Session über aktiv bleibt, dann würde das den VLC-Programmstart bei jedem Aufruf sicherlich beschleunigen, aber das geht anscheinend nicht. Ich hab das mit dem /media/ramdisk noch nicht so ganz verstanden, fürchte ich.
Wenn VLC per Autostart in den Arbeitsspeicher geladen wird und dann dort die ganze Session über aktiv bleibt, dann würde das den VLC-Programmstart bei jedem Aufruf sicherlich beschleunigen, aber das geht anscheinend nicht. Ich hab das mit dem /media/ramdisk noch nicht so ganz verstanden, fürchte ich.
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
Re: Programm immer im Arbeitsspeicher geladen?
Ein Programm, das läuft,ist im Arbeitsspeicher.
Ein Programm, das beendet wurde, ist nicht mehr im Arbeitsspeicher.
Zustände dazwischen gibt es nicht, dein Vorhaben ist also technisch gar nicht möglich.
Wenn du es per Autostart startest ist es bereits gestartet, ein "VLC-Programmstart bei jedem Aufruf" würde nur eine weitere Programminstanz starten und mit jedem Start einen neuen Prozeß erzeugen, RAM belegen und die per Autostart gestartete Instanz schlicht ignorieren.
Ja, jeder neue Start geht dann etwas schneller, das liegt aber daran, daß VLC zusätzlich zum Laden in den Hauptspeicher auch noch vom Kernel gecacht wird. Das ist aber ein normaler Effekt und Sinn des Caches. Erster Start dauert lange, zweiter und weitere Starts gehen schnell, zumindest solange kein weiterer Prozeß viel RAM braucht und gecachte Teile verdrängt.
Bei mir startet VLC übrigens von SSD in ca. 0.5s, auch beim ersten Mal.
Ein Programm, das beendet wurde, ist nicht mehr im Arbeitsspeicher.
Zustände dazwischen gibt es nicht, dein Vorhaben ist also technisch gar nicht möglich.
Erkennst du den Widerspruch?desputin hat geschrieben:04.07.2021 14:40:41Wenn VLC per Autostart in den Arbeitsspeicher geladen wird und dann dort die ganze Session über aktiv bleibt, dann würde das den VLC-Programmstart bei jedem Aufruf sicherlich beschleunigen
Wenn du es per Autostart startest ist es bereits gestartet, ein "VLC-Programmstart bei jedem Aufruf" würde nur eine weitere Programminstanz starten und mit jedem Start einen neuen Prozeß erzeugen, RAM belegen und die per Autostart gestartete Instanz schlicht ignorieren.
Ja, jeder neue Start geht dann etwas schneller, das liegt aber daran, daß VLC zusätzlich zum Laden in den Hauptspeicher auch noch vom Kernel gecacht wird. Das ist aber ein normaler Effekt und Sinn des Caches. Erster Start dauert lange, zweiter und weitere Starts gehen schnell, zumindest solange kein weiterer Prozeß viel RAM braucht und gecachte Teile verdrängt.
Bei mir startet VLC übrigens von SSD in ca. 0.5s, auch beim ersten Mal.
Re: Programm immer im Arbeitsspeicher geladen?
Das Appimage? Also ich hab irgendso eine ältere EVo hier, aber auch noch mit SATA.Bei mir startet VLC übrigens von SSD in ca. 0.5s, auch beim ersten Mal.
[gnome-disks]
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
Re: Programm immer im Arbeitsspeicher geladen?
Ein potentiell interessantes Thema
Die erste Frage wäre, was du tatsächlich erreichen willst. Soll das Programm (VLC) wirklich immer laufen oder soll sein Programmcode nur (möglichst) immer im RAM liegen. Das wäre ein Unterschied.
Bei ersterem hängt eine Lösung vom Programm ab. Zum VLC kamen ja schon ein paar Vorschläge.
Bei zweiterem – Programmcode soll immer im RAM liegen – würde ich mir auf einem Desktopsystem den Aufwand nicht machen. (Nachtrag: Ah, MSfree war zwischendurch schneller.) Gerade bei einem, wie du schreibst, relativ großen RAM. Das Betriebssystem hält von Festplatten gelesene Daten und Programme sowieso in einem Cache vor. Gerade wenn ein Programm häufig benutzt wird, kannst du relativ sicher sein, dass seine Bestandteile und gelinkte Bibliotheken schon im Cache – im RAM – liegen. Ob das der Fall ist kann man herausfinden:
Bei 0 Pages liegt es noch nicht im Cache, müsste von der Festplatte gelesen werden.
Ich nehme mal an, dass ein AppImage an der Stelle für Caching sogar eher sehr ungünstig ist, da es eigene Bibliotheken enthält und nicht systemweite, schon gecachte, wiederverwendet. (Oder? Korrigiert mich )
Ich fands an der Stelle interessant, dass bei mir anscheinend das gesamte /bin und /sbin (mit usrmerge) gecacht sind:
Deutet auch darauf hin, dass ein erzwungenes Caching eher unnötig ist.
Wenn du dir doch die Arbeit machen möchtest: Mit vmtouch kann man anscheinend sicherstellen, dass Dateien oder der ganze Inhalt von Ordnern im Cache liegen:
Die erste Frage wäre, was du tatsächlich erreichen willst. Soll das Programm (VLC) wirklich immer laufen oder soll sein Programmcode nur (möglichst) immer im RAM liegen. Das wäre ein Unterschied.
Bei ersterem hängt eine Lösung vom Programm ab. Zum VLC kamen ja schon ein paar Vorschläge.
Man kann beim VLC einstellen, dass er nur exakt eine Instanz öffnet. Und neu geöffnete Medien in dieser einen Instanz gestartet oder eingereiht werden.desputin hat geschrieben:04.07.2021 14:40:41aber stimmt, ich kann vlc minimiert starten lassen, aber wenn ich dann für jedes Video eine neue Instanz öffne, dann kommt jedes Mal ein kleines Icon unten hinzu
Bei zweiterem – Programmcode soll immer im RAM liegen – würde ich mir auf einem Desktopsystem den Aufwand nicht machen. (Nachtrag: Ah, MSfree war zwischendurch schneller.) Gerade bei einem, wie du schreibst, relativ großen RAM. Das Betriebssystem hält von Festplatten gelesene Daten und Programme sowieso in einem Cache vor. Gerade wenn ein Programm häufig benutzt wird, kannst du relativ sicher sein, dass seine Bestandteile und gelinkte Bibliotheken schon im Cache – im RAM – liegen. Ob das der Fall ist kann man herausfinden:
Code: Alles auswählen
~$ fincore Pfad/zum/AppImage
RES PAGES SIZE FILE
0B 0 43,4M Pfad/zum/AppImage
Ich nehme mal an, dass ein AppImage an der Stelle für Caching sogar eher sehr ungünstig ist, da es eigene Bibliotheken enthält und nicht systemweite, schon gecachte, wiederverwendet. (Oder? Korrigiert mich )
Ich fands an der Stelle interessant, dass bei mir anscheinend das gesamte /bin und /sbin (mit usrmerge) gecacht sind:
Code: Alles auswählen
~$ vmtouch -f /bin /sbin
Files: 4099
Directories: 2
Resident Pages: 476824/476824 1G/1G 100%
Elapsed: 0.024976 seconds
Wenn du dir doch die Arbeit machen möchtest: Mit vmtouch kann man anscheinend sicherstellen, dass Dateien oder der ganze Inhalt von Ordnern im Cache liegen:
Code: Alles auswählen
~$ vmtouch -lt Pfad/zum/AppImage
Manchmal bekannt als Just (another) Terminal Hacker.
Re: Programm immer im Arbeitsspeicher geladen?
Hallo JTH,
ja spannend. Danke. Ich habe das hier pobiert, aber kriege diese Fehlermeldung:
ja spannend. Danke. Ich habe das hier pobiert, aber kriege diese Fehlermeldung:
Code: Alles auswählen
vmtouch -lt /home/desputin/programme/vlc.AppImage
vmtouch: FATAL: mlock: /home/desputin/programme/vlc.AppImage (Cannot allocate memory)
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
Re: Programm immer im Arbeitsspeicher geladen?
Im Gegensatz zu deinem Rechner funktioniert bei mir VLC aus dem Debianrepository unter Jessie, Stretch, Buster und Bullseye mit CPUs vom Pentium-M über Intel Atom, Core2, Baytrail-Atom, bis zur 8. Generation Core-i jeweils mit Intel Onboard Graphik völlig reibungslos.
Re: Programm immer im Arbeitsspeicher geladen?
Hallo MSfree,
hm, es scheint aber mehrere Leute zu geben, die von diesen Hintergrund-Abstürzen berichten: Siehe hier:
viewtopic.php?f=29&t=176405
hm, es scheint aber mehrere Leute zu geben, die von diesen Hintergrund-Abstürzen berichten: Siehe hier:
viewtopic.php?f=29&t=176405
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |
- king-crash
- Beiträge: 722
- Registriert: 08.08.2006 12:07:56
- Lizenz eigener Beiträge: MIT Lizenz
Re: Programm immer im Arbeitsspeicher geladen?
Mit mlock wird das hier gemeint sein: https://man7.org/linux/man-pages/man2/mlock.2.html
Eventuell ist RLIMIT_MEMLOCK das Problem, was vermutlich mit "ulimit -l" angehoben werden kann.
Eventuell ist RLIMIT_MEMLOCK das Problem, was vermutlich mit "ulimit -l" angehoben werden kann.