1 votes

Sauvegarder une instance d'un programme en RAM pour un démarrage rapide.

Existe-t-il un moyen de sauvegarder une instance d'un programme individuel, après qu'il ait été chargé en RAM, puis de charger à nouveau ce programme en RAM à partir de cette instance sauvegardée.

Voici un exemple concret.
J'ai un programme (adobe Photoshop) qui fonctionne très bien sur mon ordinateur. Le rendu est rapide, il n'y a pas de décalage, la sortie est rapide. La seule chose qu'il ne fait pas est le chargement rapide, il prend généralement autour de ... 8-10 minutes. Je me demandais s'il y avait un moyen de capturer une instance de Photoshop, fonctionnant en RAM (disons, dans un fichier VHD ou IMG). Puis de recharger cette instance en RAM, au lieu de charger les fichiers et paramètres individuels des programmes depuis le disque.

Je pense à quelque chose de similaire à un disque RAM, mais je n'ai aucune idée si cela existe (si ce n'est pas le cas, cela devrait).

2voto

gronostaj Points 50460

Ce n'est pas possible.

Si un programme se charge pendant 10 minutes, alors cela signifie qu'il fait quelque chose pendant 10 minutes. Si c'était possible de sauter cette quelque chose il l'ignorait.

Les ordinateurs sont des machines à état et le passage d'un état à un autre peut prendre un certain temps. En général, les vous ne pouvez pas simplement deviner dans quel état la machine va se terminer. . Croyez-moi, si c'était possible dans ce cas précis, Adobe le ferait - ils savent qu'attendre 10 minutes n'est pas une partie de plaisir.

Le problème réel que vous devez résoudre est découvrez ce qui rend le démarrage de Photoshop si long . Moniteur de processus peut s'avérer utile, mais je vérifierais d'abord si le problème n'est pas dû à des plugins tiers, à un trop grand nombre de polices installées, etc.

1voto

Nothingismagick Points 119

Si je peux interpréter votre question, oui, il existe un moyen d'accélérer votre logiciel et de mettre les choses en cache, si vous êtes prêt à autoriser les états sauvegardés, c'est-à-dire les fichiers sous votre contrôle qui doivent simplement être ouverts lors de la connexion de l'utilisateur et les paramètres du programme qui sont toujours les mêmes.

Vous pouvez le faire sur un MacOS, Linux et Windows : Effectué correctement, il peut apporter beaucoup de vitesse au système tout en réduisant la température globale du système et en prolongeant la durée de vie des supports utiles. Plusieurs facteurs seront importants pour décider si cela convient à votre cas d'utilisation :

  • Quantité de RAM physiquement disponible (moins de 8 Go sous MacOS ou Windows 64 bits risque d'entraîner une ségrégation catastrophique).

  • Nombre de programmes et services principaux qui doivent être en cours d'exécution

  • Performances matérielles et spécifications générales

Dans les cas spécifiques où les conteneurs ou les VM ne sont pas possibles ou irréalisables et où l'on souhaite obtenir des performances élevées et/ou une reproductibilité absolue, c'est définitivement la voie à suivre.

Lors de la connexion de l'utilisateur, un script de démarragescript réserve automatiquement un morceau de mémoire et crée un lien symbolique sous la forme d'un répertoire : a ramdisk . Ensuite, tous les fichiers de programmes et de données sont copiés du SSD vers le ramdisk. Ensuite, les programmes en question sont démarrés automatiquement, en utilisant les paramètres que vous avez préparés et les fichiers ouverts qui ont des historiques dans les systèmes configurés pour le démarrage automatique.

Ce qui suit est une sorte de recette que votre script pourrait suivre.


Créez un profil d'utilisateur spécifique qui "contient" ou a accès à tous les programmes et données nécessaires ; un profil où tous les programmes non nécessaires ne fonctionnent pas. Désactivez les services, les programmes, les connexions réseau, les économiseurs d'écran, etc. et faites-le à partir des paramètres système (basés sur l'utilisateur) chaque fois que cela est possible.

Assurez-vous d'avoir beaucoup de mémoire et de profiler la charge du système dans les circonstances que vous voulez reproduire. Faites une liste des programmes dont vous avez besoin : trouvez les exécutables, les emplacements des fichiers temporaires et les fichiers et actifs générés par l'utilisateur. Ce sont les fichiers que vous voulez copier sur votre RAMdisk. C'est un bon moment pour ajuster la taille de votre ramdisk. Renommez les temp et les conserver en tant que sauvegardes à l'emplacement d'origine. Créez ensuite des liens symboliques qui pointent de l'emplacement des fichiers temporaires d'origine vers ceux hébergés sur le ramdisk. Copiez également vos ressources utilisateur et appelez le programme pour lancer les fichiers utilisateur avec lesquels vous voulez qu'il s'ouvre - ainsi que tous les drapeaux dont vous pourriez avoir besoin.

C'est tout ce qu'il y a à faire. Ne laissez pas votre système en hibernation ou en panne de courant...

MACOS

Je fais cela pour les infrastructures critiques sur du matériel en métal nu. pendant des installations artistiques et des performances audio-visuelles. En fait, j'ai fait récemment sur MacOS Sierra, dans ce cas c'était pour une performance vidéo en direct avec resolume arena et une capture d'écran avec 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 '{print $2;}')

# use half the memory
size_mb=$[size_mb/2048]

origin="${HOME}/Library/Caches"
ramdisk="/Volumes/ramdisk"

diskutil erasevolume HFS+ "ramdisk" hdiutil attach -nomount ram://$[size_mb]

if [ -d ${ramdisk} ]; then
 for dir in ${dirs}
 do
  /bin/mkdir -p ${ramdisk}/${dir}
  if [ -d ${origin}/${dir} ]; then
   if [ ! -L ${origin}/${dir} ]; then
    /bin/mv ${origin}/${dir} ${origin}/${dir}.bak
   fi
  fi

  if [ -L ${origin}/${dir} ]; then
   /bin/rm ${origin}/${dir}
  fi

  if [ ! -L ${origin}/${dir} ]; then
   /bin/ln -v -s -f ${ramdisk}/${dir} ${origin}/${dir}
  fi
 done
fi

/bin/mkdir -p ${ramdisk}/Applications/Resolume
/bin/mkdir -p ${ramdisk}/RAMDISK_REPOSITORY/

echo "Copying Resolume to ramdisk"
/bin/cp -r "/Applications/Resolume Arena 5.0.2/" "${ramdisk}/Applications/Resolume/"
/bin/cp -r "/Users/Shared/RAMDISK_REPOSITORY/" "${ramdisk}/RAMDISK_REPOSITORY/"

cd /Applications/syphon
/usr/bin/open Syphon\ Recorder.app/
cd /Volumes/ramdisk/Applications/Resolume/
/usr/bin/open Arena.app/

exit

LINUX

Dans l'environnement Linux, Arch est une excellente plateforme où vous pouvez vraiment garder votre installation légère en n'installant que ce dont vous avez exactement dont vous avez besoin. Dans des situations extrêmes, un ingénieur peut choisir de copier le fichier dossier système complet sur le disque RAM (par exemple, à partir d'une carte SD à lecture seule à lecture seule (pour éviter la corruption de la carte SD) ou même à partir d'un emplacement réseau. Le code ci-dessus devrait fonctionner avec quelques modifications.

Windows

Je ne l'ai pas fait personnellement sous Windows, mais c'est possible. Consultez si vous avez besoin du disque virtuel sous Windows :

Windows ERAM sur github

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X