Programm immer im Arbeitsspeicher geladen?

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Programm immer im Arbeitsspeicher geladen?

Beitrag von desputin » 03.07.2021 01:34:14

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
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

Benutzeravatar
GregorS
Beiträge: 2502
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von GregorS » 03.07.2021 06:21:54

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
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von desputin » 03.07.2021 21:04:24

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. |

Benutzeravatar
Meillo
Moderator
Beiträge: 8765
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von Meillo » 03.07.2021 21:26:30

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.
Use ed once in a while!

Benutzeravatar
hikaru
Moderator
Beiträge: 13557
Registriert: 09.04.2008 12:48:59

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von hikaru » 03.07.2021 21:33:06

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.

Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von desputin » 04.07.2021 01:01:33

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?
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

Benutzeravatar
king-crash
Beiträge: 720
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von king-crash » 04.07.2021 01:41:44

Code: Alles auswählen

mount -t tmpfs none /mountpoint
Erstellt eine Ramdisk.

Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von desputin » 04.07.2021 10:32:28

Hallo King-crash,
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
Und wie kriege ich dann mein Appimage da hinein?
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

Benutzeravatar
bluestar
Beiträge: 2323
Registriert: 26.10.2004 11:16:34
Wohnort: Rhein-Main-Gebiet

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von bluestar » 04.07.2021 11:02:30

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.

Benutzeravatar
hikaru
Moderator
Beiträge: 13557
Registriert: 09.04.2008 12:48:59

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von hikaru » 04.07.2021 11:33:15

desputin hat geschrieben: ↑ zum Beitrag ↑
04.07.2021 10:32:28
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
Und wie kriege ich dann mein Appimage da hinein?

Code: Alles auswählen

cp /pfad/zum/Appimage /media/ramdisk/
Flaschenhals ist hier natürlich der Datenträger von dem du das Appimage in den RAM lädst.

Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von desputin » 04.07.2021 11:34:11

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. |

willy4711

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von willy4711 » 04.07.2021 11:40:47

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 Debiankdocker
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
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 ?

Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von desputin » 04.07.2021 12:02:08

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. |

Benutzeravatar
hikaru
Moderator
Beiträge: 13557
Registriert: 09.04.2008 12:48:59

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von hikaru » 04.07.2021 12:08:16

desputin hat geschrieben: ↑ zum Beitrag ↑
04.07.2021 11:34:11
Hm, was bringt das denn dann für einen Vorteil, wenn das Programm trotzdem jedes Mal von der SSD in den Ram geladen wird?
Keinen. ;)
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 ...

willy4711

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von willy4711 » 04.07.2021 12:37:40

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 :wink:

Den VLC kann man doch einfach minimiert im Systemtray starten lassen, wenn man das unbedingt will.
Dann stört er nicht mehr.

willy4711

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von willy4711 » 04.07.2021 12:48:05

Für den VLC (aus dem Repo) brauchst du keinerlei Zusatz- Programme.
Du kannst 25 Videos (wenn's beliebt :wink: ) aus dem Dateimanager starten und hast dann 25 Icons im Systemtray.
Jedes kannst du separat steuern.

Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von desputin » 04.07.2021 14:40:41

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.
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

Benutzeravatar
MSfree
Beiträge: 10657
Registriert: 25.09.2007 19:59:30

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von MSfree » 04.07.2021 14:57:55

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.
desputin hat geschrieben: ↑ zum Beitrag ↑
04.07.2021 14:40:41
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
Erkennst du den Widerspruch?

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.

Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von desputin » 04.07.2021 15:22:55

Bei mir startet VLC übrigens von SSD in ca. 0.5s, auch beim ersten Mal.
Das Appimage? Also ich hab irgendso eine ältere EVo hier, aber auch noch mit SATA.


Bild
[gnome-disks]
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

JTH
Moderator
Beiträge: 3007
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von JTH » 04.07.2021 15:27:11

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.
desputin hat geschrieben: ↑ zum Beitrag ↑
04.07.2021 14:40:41
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
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.

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
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 Debianusrmerge) 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
Deutet auch darauf hin, dass ein erzwungenes Caching eher unnötig ist.

Wenn du dir doch die Arbeit machen möchtest: Mit Debianvmtouch 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.

Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von desputin » 05.07.2021 14:18:40

Hallo JTH,
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. |

Benutzeravatar
MSfree
Beiträge: 10657
Registriert: 25.09.2007 19:59:30

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von MSfree » 05.07.2021 15:04:44

desputin hat geschrieben: ↑ zum Beitrag ↑
04.07.2021 15:22:55
Das Appimage?
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.

Benutzeravatar
desputin
Beiträge: 1269
Registriert: 24.04.2015 17:16:34

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von desputin » 05.07.2021 15:21:12

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
https://www.daswirdmanjawohlnochsagenduerfen.de
https://www.neoliberalyse.de - Über die Ökonomisierung aller Lebensbereiche. |

Benutzeravatar
king-crash
Beiträge: 720
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Re: Programm immer im Arbeitsspeicher geladen?

Beitrag von king-crash » 07.07.2021 00:07:51

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.

Antworten