Speichern Sie eine Instanz eines Programms aus dem RAM, um sie schnell zu starten

1382
Ulincsys

Gibt es eine Möglichkeit, eine Instanz eines einzelnen Programms zu speichern, nachdem es in den RAM geladen wurde, und dann dieses Programm von dieser gespeicherten Instanz zurück in den RAM zu laden.

Hier ist ein konkretes Beispiel.
Ich habe ein Programm (Adobe Photoshop), das auf meinem Computer gut läuft. Es macht schnell, es hat keine Verzögerung, es wird schnell beendet. Das Einzige, was es nicht tut, ist das schnelle Laden. Normalerweise dauert es ungefähr 8-10 Minuten. Ich habe mich gefragt, ob es eine Möglichkeit gibt, eine Photoshop-Instanz zu erfassen, die in RAM (z. B. in einer VHD- oder IMG-Datei) ausgeführt wird. Laden Sie dann diese Instanz wieder in den Arbeitsspeicher, anstatt die einzelnen Dateien und Einstellungen der Programme von der Festplatte zu laden.

Ich denke an etwas, das mit einer RAM-Diskette vergleichbar ist, aber ich habe keine Ahnung, ob dies überhaupt existiert (falls nicht, sollte es).

1

2 Antworten auf die Frage

2
gronostaj

Es ist nicht möglich.

Wenn ein Programm für 10 Minuten geladen wird, bedeutet es , dass es 10 Minuten lang etwas tut . Wenn man etwas überspringen konnte, würde es überspringen.

Computer sind Zustandsmaschinen und das Fortschreiten von einem Zustand in einen anderen kann einige Zeit dauern. Im Allgemeinen können Sie nicht einfach erraten, in welchem ​​Zustand die Maschine enden wird . Vertrauen Sie mir, wenn es in diesem speziellen Fall möglich wäre, würde Adobe es tun - sie wissen, dass das Warten auf 10 Minuten keinen Spaß macht.

Das eigentliche Problem, das Sie lösen müssen, ist herauszufinden, warum Photoshop so lange startet . Process Monitor kann sich als nützlich erweisen, aber zuerst würde ich prüfen, ob dies nicht auf Plugins von Drittanbietern, zu viele installierte Schriftarten usw. zurückzuführen ist.

Ich habe früher einen kleinen Test mit einem Programm gemacht, das seinen Startzyklus immer im selben Binärzustand beendet (Minecraft). Ich habe eine virtuelle Windows XP-x64-Maschine mit 4 GB RAM erstellt. Ich habe eine lokalisierte 32-Bit-Java-Version verwendet und alle Laufzeitdateien auf einer RAM-Disk gespeichert (Launcher, Java, die Spieledateien usw.). Ich startete MC und wartete darauf, dass es zum Intro-Bildschirm kam. Ich habe die Instanz von MC, die im VM-RAM ausgeführt wird, durch Speichern eines Snapshots und Bearbeiten der Datei isoliert. Ich habe MC dann nach einem Neustart der VM erfolgreich erneut bereitgestellt. Dies beweist, dass dies möglich ist, auch wenn dies nur in einer bestimmten Umgebung der Fall ist. Ulincsys vor 8 Jahren 0
Virtuelle Maschine ist ein separater Computer, dh. eine separate Zustandsmaschine. Sie können eine Momentaufnahme der gesamten Zustandsmaschine erstellen, aber Sie können keine Momentaufnahme machen und sie an jedem Punkt wiederherstellen (es sei denn, sie ist so konzipiert - VMs sind dies, Photoshop nicht). gronostaj vor 8 Jahren 1
Vielen Dank für Ihre Einsicht. Ich denke, meine einzigen Fortschritte werden Hypervisoren mit dynamischem virtuellem RAM sein, um meine Idee umzusetzen. und ich kann nicht glauben, dass ich virtuell falsch geschrieben habe. Wenn nur Kommentare so lange nach dem Posting bearbeitet werden könnten ... Ulincsys vor 8 Jahren 0
1
Nothingismagick

Wenn ich Ihre Frage interpretieren darf, gibt es eine Möglichkeit, Ihre Software zu beschleunigen und Dinge zwischenzuspeichern, wenn Sie bereit sind, gespeicherte Zustände zuzulassen, d. H. Dateien, die unter Ihrer Kontrolle stehen, die nur beim Anmelden des Benutzers geöffnet werden müssen, und Programmeinstellungen, die immer angezeigt werden das Gleiche.

Sie können dies auf einem Mac OS, Linux und Windows tun: Richtig gemacht, kann dies die Systemgeschwindigkeit erheblich verbessern, die Gesamtsystemtemperatur senken und die Lebensdauer nützlicher Medien verlängern. Es gibt mehrere Faktoren, die für die Entscheidung, ob dies für Ihren Anwendungsfall geeignet ist, wichtig sind:

  • Physisch verfügbarer Arbeitsspeicher (weniger als 8 GB unter Mac OS oder Windows 64bit sind wahrscheinlich katastrophale Fehlfunktionen)

  • Anzahl der wichtigsten Programme und Dienste, die ausgeführt werden müssen

  • Hardwareleistung und allgemeine Spezifikationen

In bestimmten Fällen, in denen Container oder VMs nicht möglich oder nicht realisierbar sind und entweder eine hohe Leistung und / oder absolute Reproduzierbarkeit gewünscht wird, ist dies definitiv der richtige Weg.

Bei der Benutzeranmeldung reserviert ein Startskript automatisch einen Speicherplatz und erstellt einen symbolischen Link in Form eines Verzeichnisses: einer Ramdisk . Dann werden alle Programm- und Datendateien von der SSD auf die Ramdisk kopiert. Anschließend werden die betreffenden Programme automatisch gestartet. Dabei werden die von Ihnen vorbereiteten Einstellungen verwendet und Dateien mit Historien im System-Setup für den automatischen Startvorgang geöffnet.

Das Folgende ist eine Art Rezept, dem Ihr Skript folgen könnte.


Erstellen Sie ein bestimmtes Benutzerprofil, das alle benötigten Programme und Daten enthält oder Zugriff darauf hat. einer, bei dem nicht alle nicht benötigten Programme ausgeführt werden. Deaktivieren Sie Dienste, Programme, Netzwerkverbindungen, Bildschirmschoner usw. und machen Sie dies nach Möglichkeit über die (benutzerbasierten) Systemeinstellungen.

Stellen Sie sicher, dass Sie über viel Speicher verfügen und ein Profil für die Systemlast unter den Umständen erstellen, die Sie reproduzieren möchten. Erstellen Sie eine Liste der benötigten Programme: Suchen Sie die ausführbaren Dateien, die temporären Dateispeicherorte sowie die vom Benutzer generierten Dateien und Assets. Dies sind die Dateien, die Sie auf Ihre Ramdisk kopieren möchten. Dies ist ein guter Zeitpunkt, um die Größe Ihrer Ramdisk anzupassen. Benennen Sie die temporären Dateien um und bewahren Sie sie als Sicherungskopien am ursprünglichen Speicherort auf. Erstellen Sie dann symbolische Links, die von den Speicherorten der ursprünglichen temporären Dateien auf die von der Ramdisk gehosteten verweisen. Kopieren Sie auch Ihre Benutzerassets, und rufen Sie das Programm auf, um die Benutzerdateien zu initiieren, mit denen Sie es öffnen möchten, sowie alle Markierungen, die Sie benötigen.

Das ist alles dazu. Lassen Sie Ihr System nicht in den Ruhezustand oder versagen Sie die Stromversorgung ...

MAC OS

Ich mache dies für kritische Infrastrukturen auf Bare-Metal-Hardware während Kunstinstallationen und audiovisuellen Performances. Ich habe dies kürzlich auf MacOS Sierra gemacht, in diesem Fall war es eine Live-Video-Performance mit Resolume-Arena und Bildschirmaufzeichnung mit Siphon.

#!/usr/bin/env bash  # use these cache dirs dirs="com.resolume.arena info.v002.syphon.Syphon-Recorder"  # get available memory size_mb=$(sysctl hw.memsize | awk '')  # use half the memory size_mb=$[size_mb/2048]  origin="$/Library/Caches" ramdisk="/Volumes/ramdisk"  diskutil erasevolume HFS+ "ramdisk" hdiutil attach -nomount ram://$[size_mb]  if [ -d $ ]; then for dir in $ do /bin/mkdir -p $/$ if [ -d $/$ ]; then if [ ! -L $/$ ]; then /bin/mv $/$ $/$.bak fi fi  if [ -L $/$ ]; then /bin/rm $/$ fi  if [ ! -L $/$ ]; then /bin/ln -v -s -f $/$ $/$ fi done fi  /bin/mkdir -p $/Applications/Resolume /bin/mkdir -p $/RAMDISK_REPOSITORY/  echo "Copying Resolume to ramdisk" /bin/cp -r "/Applications/Resolume Arena 5.0.2/" "$/Applications/Resolume/" /bin/cp -r "/Users/Shared/RAMDISK_REPOSITORY/" "$/RAMDISK_REPOSITORY/"  cd /Applications/syphon /usr/bin/open Syphon\ Recorder.app/ cd /Volumes/ramdisk/Applications/Resolume/ /usr/bin/open Arena.app/  exit 

LINUX

In der Linux-Umgebung ist Arch eine großartige Plattform, auf der Sie Ihre Installation wirklich schlank halten können, indem Sie nur genau das installieren, was Sie benötigen. In extremen Situationen kann es vorkommen, dass ein Techniker den gesamten Systemordner auf die RAM-Disk kopiert (z. B. von einer SD-Karte mit relativ niedriger Spezifikation (um die Beschädigung der SD-Karte zu verhindern)) oder sogar von einem Netzwerkspeicherort. Der obige Code sollte funktionieren ein paar modifikationen.

WINDOWS

Ich habe das nicht persönlich unter Windows gemacht, aber es ist möglich. Überprüfen Sie dies, wenn Sie die Ramdisk unter Windows benötigen:

Windows ERAM auf Github

Ich habe tatsächlich Virtualbox benutzt, um mein Ziel zu erreichen. Ich habe eine einfache Kopie von Windows 7 auf eine virtuelle Maschine geladen und sie so konfiguriert, dass sie im "Seamless" -Modus startet und die Taskleiste automatisch ausblendet. Ich erstellte dann mehrere Kopien der VM und installierte auf jedem von ihnen verschiedene Hochladezeitprogramme. Danach erstellte ich einen Schnappschuss von jeder VM, wobei das Programm bereits geladen war, sodass es fast sofort gestartet werden konnte. Das Beste ist, dass ich jede VM mit einer Desktop-Verknüpfung starten kann! Ulincsys vor 6 Jahren 1