web-dev-qa-db-ja.com

クイックスタートのためにRAM)からプログラムのインスタンスを保存します

個々のプログラムのインスタンスをRAMにロードした後、保存してから、そのプログラムをその保存されたインスタンスからRAM.

これが具体的な例です。
自分のコンピューターでうまく動作するプログラム(Adobe Photoshop)があります。レンダリングが速く、ラグがなく、すぐに終了します。それがしないことの1つは、ロードが速いことです。通常、約8〜10分かかります。 ramで実行されている(たとえば、VHDまたはIMGファイルで)Photoshopのインスタンスをキャプチャする方法があるかどうか疑問に思いました。次に、プログラムの個々のファイルと設定をディスクからロードする代わりに、そのインスタンスをRAMにロードし直します。

RAMdiskに似たものを考えていますが、これが存在するかどうかはわかりません(存在しない場合は、存在する必要があります)。

1
Ulincsys

不可能です。

プログラムが10分間ロードされている場合、それは10分間何かを実行していることを意味します。その何かをスキップできる場合は、スキップします。

コンピューターはステートマシンであり、ある状態から別の状態への進行には時間がかかる場合があります。一般的に マシンがどの状態で終了するかを推測することはできません 。私を信じてください。この特定のケースで可能であれば、Adobeがそれを行います。10分待つのは楽しいことではないことを彼らは知っています。

あなたが解決しなければならない実際の問題はPhotoshopがこんなに長く起動する理由を見つけることですProcess Monitor 便利かもしれませんが、最初に、サードパーティのプラグインやインストールされているフォントが多すぎるなどの原因ではないかどうかを確認します。

2
gronostaj

私があなたの質問を解釈するかもしれませんが、保存された状態、つまりユーザーのログイン時に開く必要があるファイルと常にあるプログラム設定を許可する場合は、ソフトウェアを高速化してキャッシュする方法があります同じ。

これは、MacOS、Linux、およびWindowsで実行できます。正しく実行すると、システム全体の温度を下げ、メディアの有効寿命を延ばしながら、システム速度を大幅に向上させることができます。これがユースケースに適しているかどうかを判断する上で重要となるいくつかの要因があります。

  • 物理的に利用可能な量RAM(MacOSまたはWindows 64ビットでは8GB未満は、壊滅的にセグフォールトになる可能性があります)

  • 実行する必要のある主要なプログラムとサービスの数

  • ハードウェアのパフォーマンスと一般的な仕様

コンテナまたはVMが不可能または実現不可能であり、高性能および/または絶対的な再現性が望まれる特定のケースでは、これが間違いなく進むべき道です。

ユーザーがログインすると、startup-scriptが自動的にメモリを予約し、ディレクトリの形式でシンボリックリンクを作成します:aramdisk。次に、すべてのプログラムファイルとデータファイルがSSDからRAMディスクにコピーされます。次に、準備した設定を使用して問題のプログラムが自動起動され、自動起動するように設定されたシステムに履歴があるファイルが開かれます。

以下は、スクリプトが従うことができる一種のレシピです。


必要なすべてのプログラムとデータを「含む」、またはアクセスできる特定のユーザープロファイルを作成します。不要なプログラムがすべて実行されないもの。サービス、プログラム、ネットワーク接続、スクリーンセーバーなどをオフにし、可能な限り(ユーザーベースの)システム設定からオフにします。

十分なメモリがあることを確認し、再現したい状況でシステム負荷をプロファイルします。必要なプログラムのリストを作成します。実行可能ファイル、一時ファイルの場所、ユーザーが生成したファイルとアセットを見つけます。これらは、RAMディスクにコピーするファイルです。これは、RAMディスクのサイズを調整する良い機会です。 tempファイルの名前を変更し、元の場所にバックアップとして保持します。次に、元の一時ファイルの場所からRAMディスクでホストされている場所を指すシンボリックリンクを作成します。ユーザーアセットもコピーしてから、プログラムを呼び出して、開くユーザーファイルと必要なフラグを開始します。

これですべてです。システムを休止状態にしたり、電源障害を発生させたりしないでください...

マックOS

これは、アートのインスタレーションやオーディオビジュアルパフォーマンス中にベアメタルハードウェアの重要なインフラストラクチャに対して行います。私は実際に最近MacOSSierraでこれを行いました。この場合は、解像度アリーナを使用したライブビデオパフォーマンスとサイフォンを使用したスクリーンキャプチャ用でした。

#!/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

Linux環境では、Archは、必要なものだけをインストールするだけで、インストールを無駄なく維持できる優れたプラットフォームです。極端な状況では、エンジニアはシステムフォルダ全体をRAMディスクにコピーすることを選択する場合があります(たとえば、比較的低スペックの読み取り専用SDカードから(SDカードの破損を防ぐため)、またはネットワークの場所からでも)上記のコードはいくつかの変更。

ウィンドウズ

私はこれをWindowsで個人的に行ったことはありませんが、可能です。 WindowsでRAMディスクが必要な場合は、これを確認してください。

github上のWindows ERAM

1
Nothingismagick