Salve uma instância de um programa da RAM para iniciar rapidamente

1

Existe alguma maneira possível de salvar uma instância de um programa individual, depois de ter sido carregada na RAM, e então carregar o programa de volta para a RAM daquela instância salva.

Aqui está um exemplo específico.
Eu tenho um programa (adobe Photoshop) que funciona muito bem no meu computador. Ele renderiza rápido, não tem atraso, sai rapidamente. A única coisa que não faz é carregar rapidamente, geralmente leva cerca de ... 8-10 min. Eu queria saber se haveria uma maneira de capturar uma instância do Photoshop, em execução no RAM (digamos, em um arquivo VHD ou IMG). Em seguida, carregue essa instância de volta na RAM, em vez de carregar os arquivos e configurações individuais dos programas do disco.

Estou pensando em algo semelhante a um RAMdisk, mas não tenho idéia se isso existe (se não, deveria).

    
por Ulincsys 28.07.2015 / 17:07

2 respostas

2

Não é possível.

Se um programa estiver carregando por 10 minutos, isso significa que ele está fazendo algo por 10 minutos. Se fosse possível pular esse algo , ele ignoraria.

Computadores são máquinas de estado e progredir de um estado para outro pode levar algum tempo. Em geral, você não pode adivinhar em que estado a máquina terminará . Confie em mim, se fosse possível neste caso específico, a Adobe faria isso - eles sabem que esperar por 10 minutos não é divertido.

O problema real que você tem que resolver é descobrir o que faz o Photoshop iniciar por tanto tempo . O Process Monitor pode ser útil, mas primeiro eu verificaria se não é devido a terceiros. plugins de festa, muitas fontes instaladas, etc.

    
por 28.07.2015 / 17:19
1

Se eu puder interpretar sua pergunta, sim, há uma maneira de acelerar o software e colocar as coisas em cache, se você estiver disposto a permitir estados salvos, ou seja, arquivos sob seu controle que precisam ser abertos apenas no login do usuário e nas configurações do programa que são sempre as mesmas.

Você pode fazer isso em um MacOS, Linux e Windows: Feito corretamente, pode trazer bastante velocidade ao sistema, reduzindo a temperatura geral do sistema e prolongando a vida útil da mídia. Existem vários fatores que serão importantes para decidir se isso é bom para seu caso de uso:

  • A quantidade de RAM fisicamente disponível (menos de 8GB no MacOS ou no Windows 64bit é provável que seja catastroficamente segfault)

  • Número de programas e serviços principais que devem estar em execução

  • Desempenho de hardware e especificações gerais

Em casos específicos em que recipientes ou VMs não são possíveis ou não são viáveis e o alto desempenho e / ou a reprodutibilidade absoluta são desejados, esse é definitivamente o caminho a ser seguido.

No login do usuário, um script de inicialização reserva automaticamente uma parte da memória e cria um link simbólico na forma de um diretório: um ramdisk . Então, todos os arquivos de programas e arquivos de dados são copiados do SSD para o ramdisk. Em seguida, os programas em questão são iniciados automaticamente, usando configurações que você preparou e arquivos abertos que possuem históricos na configuração de sistemas para iniciar automaticamente.

O seguinte é um tipo de receita que seu script pode seguir.

Crie um perfil de usuário específico que “contenha” ou tenha acesso a todos os programas e dados necessários; em que todos os programas não necessários não são executados. Desative serviços, programas, conexões de rede, proteções de tela etc. e faça-o a partir das configurações do sistema (com base no usuário) sempre que possível.

Verifique se você tem muita memória e faça o perfil do carregamento do sistema nas circunstâncias que deseja reproduzir. Faça uma lista dos programas que você precisa: encontre os executáveis, os locais dos arquivos temporários e os arquivos e ativos gerados pelo usuário. Esses são os arquivos que você deseja copiar para o seu ramdisk. Este é um bom momento para ajustar o tamanho do seu disco RAM. Renomeie os arquivos temp e mantenha-os como backups no local original. Em seguida, crie links simbólicos que apontam dos locais dos arquivos temporários originais para os locais hospedados no disco virtual. Copie seus recursos de usuário também e, em seguida, chame o programa para iniciar os arquivos de usuário que você deseja abrir - assim como os sinalizadores que você possa precisar.

Isso é tudo que existe para isso. Só não deixe seu sistema hibernar ou falhar ...

MACOS

I do this for critical infrastructure on bare metal hardware during art installations and audio-visual performances. I actually did this recently on MacOS Sierra, in this case it was for a live video performance with resolume arena and screen capture with 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

In the Linux environment, Arch is a great platform where you can really keep your installation lean by only installing exactly what you need. In extreme situations, an engineer might choose to copy the entire system folder to the ramdisk (e.g. from a relatively low-spec read-only SD Card (to inhibit SD card corruption) or even from a network location. The code above should work with a few modifications.

WINDOWS

I haven’t personally done this on Windows, but it is possible. Check this out if you need the ramdisk on Windows:

Windows ERAM no github

    
por 08.12.2017 / 16:11