私の同僚は、大量のメモリを消費するアプリケーションを使用しているため、システムが非常に遅くなります。インターネット経由で他のPCとメモリを共有することはできますか?
システムには8 GBのRAMがあり、アプリケーションは6 GB以上を消費します。
私の同僚は、大量のメモリを消費するアプリケーションを使用しているため、システムが非常に遅くなります。インターネット経由で他のPCとメモリを共有することはできますか?
システムには8 GBのRAMがあり、アプリケーションは6 GB以上を消費します。
回答:
他の場所にインストールしたり、専門のハードウェアやソフトウェアを使用したりすることができない「標準」マシンで実行されるスタンドアロンアプリケーションのみを検討しました。その他の回答は(正しく)ソフトウェアの移行またはタスクの専用ハードウェアに対応しています。
ネットワークを介して「RAMを共有する」方法は、そのネットワーク媒体の制限を受けます。ギガビットイーサネットでさえ約100MB / s(メガバイト)に制限されているため、これは「RAM」速度も制限されることを意味します。
100MB / sは、実際にシステムにあるRAMの速度のほんの一部です。プログラムは非常に遅くなり、90年代前半からコンピューターで実行されているように感じます。
最新のハードドライブは、シーケンシャルな読み取りと書き込みの場合、これよりわずかに高速です。SSDは数倍高速です。
これはレイテンシーの問題を無視しているため、プログラムが再び遅くなります。
速度の遅さやその他の技術的な問題により、これは「ホーム」または「オフィス」システムで解決しようとする価値があると考えられている問題ではありません。必要に応じてRAMを追加購入する方が安くて効果的です。
RAMを追加購入するか、ページファイル用にSSDを購入するだけです。これを行う他の方法はありませんが、ほとんどメリットのない非常に多くの作業やハードウェアを必要としません。
完全を期すために:InfiniBandでは、他のマシンのメモリに直接アクセスできます。
ただし、以下が必要です。
既存のネットワークでは機能せず、接続されているすべてのノードに完全に独立したインフラストラクチャが必要です。また、インターネット上では動作しません
Is there any alternative solution?
これは、データの性質に大きく依存します。
2つの異なるマシンで2つの異なるmysqlサーバーを実行できます。
次に、データを1/2に分割し、プログラムを作成して、移動先のサーバーを自動的に認識します。
もちろん、使用可能なサーバーがあれば、これを任意の数のサーバーに拡張できます。
はい、ネットワークブロックデバイスプロトコルを使用して、かなり簡単に実行できます(スワップを必要とするディスクレスシステムの場合、これを実行しました)。
nbd-server
サーバーマシンにインストールし、ホストごとのファイルを自動作成するように構成します。
クライアントマシンのNBDがカーネルにコンパイルされていることを確認してから、NBDにマウントされたデバイスにスワップするように構成します。nbd-client
パッケージは助けることができます。
上記が少しあいまいな場合は申し訳ありません-これを行ったマシンには、ここからアクセスできません。詳細にアクセスできる場合は、詳細を入力できる場合があります。
という代替のNBDサーバー実装がありnbdkit
ます。私はそれについて何も知りません。
「Windows 10、ワークステーションには8G B RAM」という小さな重要でない詳細を考えると、正解はたった1つしかありません。RAMを追加購入し、無駄を減らすことです。
SSDを購入してページファイルを配置するのが次に最適なオプションですが、実際には...より多くのRAMを購入します。
ネットワーク経由でページファイル(「共有メモリ」)を提供することはもちろん可能ですが、それは非常に悪い考えです。ネットワークを介したアクセス時間がローカルドライブにアクセスするよりも優れている境界線のケースが存在するのは事実ですが、一貫した低アクセス時間と高帯域幅が同時に必要なため、それは使用例には無関係です。1つまたは2つのページフォールトを予測するのではなく、常にスワップしていることに注意してください。数千を支払うつもりがない限り、RAMやSSDを購入する方法に近い方法はありません。
8 GBでは、Windows 10 とメモリを大量に消費するアプリケーションを同時に実行するには十分ではありません。Word、Excel、Outlookを同時に実行するのに十分です。それはまさに何百万人もの人々が毎日仕事用ラップトップで生活しなければならない典型的な完全に使用不可能な「トータルでたらめな企業セットアップ」です。100-200通貨を別のメモリモジュールに投資すると、1週間以内にその費用が償却されます(数分かかっていたものが数秒かかり、時間がお金になります-残念ながら、これはローカルBeanカウンターの頭に入れるのが難しい場合があります)。
または、マシンを所有している場合は、NTLiteを使用してWindows 10のがらくたを削減し、メモリフットプリントを削減できます。または、ほとんど不要なサービスの80%だけをオフにすることもできます。信じられないように思えますが、2 GB未満のRAMを使用して、最新バージョンのWindowsを実行することは可能です。
しかし、実際には、RAMを購入するだけです。Windowsのがらくたを削減するために貴重な時間を費やすよりもはるかに高速で簡単です。
単純な代替策は、リモートPCでアプリケーションを実行し、おそらく専用のユーザーアカウントで実行し、RDP、VNCなどの便利な方法で制御することです。
別のオプションは、RAMを簡単にスケールアップまたはスケールダウンできる環境にアプリケーションを一時的にデプロイすることです。
Amazon AWSインスタンスを見ると、1回の再起動でサイズを変更できます。
IE C5.largeのような小さなインスタンスには4GBのRAMと2つのコアがあり、Linuxの場合は1日あたり2.04ドル、Windowsのインストールの場合は1日あたり4.26ドルです。EBSディスク領域は追加コストであり、割り当てられたGBに比例して拡大します。
この小さなサイズでシステムをセットアップし、ノイズが発生したい場合は、システムを停止し、インスタンスサイズを変更して、ソフトウェアを実行します。
または最大のもの...
https://www.ec2instances.info/ は、適切なサイズを選択するのに役立ちます。一部の場所は他の場所よりも費用がかかります。シンガポールと北カリフォルニアは高価です。ただし、VMが実行されていないときは、ディスクストレージのコスト以外に費用はかかりません。
欠点は、このメモリを長期間必要とする場合、VMの時間を購入するのが高価な方法であるということです。ただし、会計士は、アップグレードなどの資本コストよりも、レンタルなどの運用コストを好む場合があります。
これには、Kove(http://kove.net/)。「バックプレーン」で動作するにはInfinibandインフラストラクチャが必要です(イーサネットは通常動作します)。ただし、詳細に応じてRoCEなどの他のオプションを利用できる場合もあります。これらは、コード変更なしの統合を可能にする多数の透過的なインターフェースと、より直接的なCPUアクセスによるカーネルバイパス用のAPIを提供します(つまり、カーネルオーバーヘッドを回避します)。パフォーマンスに関しては、アプリケーションによって異なります。CPUに縛られている場合、影響はごくわずかです(これは驚くべきことです)。ローカルホストでメモリ帯域幅が制限されている場合は、より大きなメモリが提供されますが、既存のボトルネックによって抑制されます。この場合、ワークロードにとって、ボックスに入れることができるよりも大きなメモリを持つことが有利ですか、とRAMが不足していませんか?仮想化およびpython機械学習ライブラリで(非常に)良い結果を見てきました。ハイエンドHPCアプリケーションはかなり悪くなる傾向がありますが、C APIを使用して、ノードカウント(ノードはCPUサイクルではなくRAMにあった)を削減しながらパフォーマンスヒットを許容できるように管理しました。これはMPIと比較してプラスです。 。これが同僚にとって良い解決策であるかどうかを判断するのは難しいですが、検討できるオプションです。お役に立てば幸いです。明確にするために、私はKoveで働いておらず、金銭的インセンティブもありませんが、長年彼らと協力しており、このテクノロジーは特定のコンピューティングの方法に実質的に影響を与える可能性があると思います。しかし、C APIを使用し、ノード数(CPUサイクルではなくRAMにノードがあった)を減らしながらパフォーマンスヒットを許容範囲に抑えることができました。これはMPIと比べてプラスです。これが同僚にとって良い解決策であるかどうかを判断するのは難しいですが、検討できるオプションです。お役に立てば幸いです。明確にするために、私はKoveで働いておらず、金銭的インセンティブもありませんが、長年彼らと協力しており、このテクノロジーは特定のコンピューティングの方法に実質的に影響を与える可能性があると思います。しかし、C APIを使用し、ノード数(CPUサイクルではなくRAMにノードがあった)を減らしながらパフォーマンスヒットを許容範囲に抑えることができました。これはMPIと比べてプラスです。これが同僚にとって良い解決策であるかどうかを判断するのは難しいですが、検討できるオプションです。お役に立てば幸いです。明確にするために、私はKoveで働いておらず、金銭的インセンティブもありませんが、長年彼らと協力しており、このテクノロジーは特定のコンピューティングの方法に実質的に影響を与える可能性があると思います。
別の視点-問題はシステムリソースの制限ではなく、友人が書いている無駄なアプリケーションかもしれません。6 GBのRAMは非常に多くのメモリです。
他のアプリの多くが過度に肥大化しているという理由だけで、必ずしも友達のアプリケーションがそれらの1つである必要があることを意味しません。さまざまなプログラミング方法を使用すると、速度を向上させながらメモリ要件を削減できます。たとえば、アプリがメモリ内のデータセット全体をロードし、その上で動作する場合、選択インデックスがほとんどない(ローカルまたはリモート)SQLデータベースにデータを保存し、そこにアクセスするよりもはるかに無駄になります。一度にロードするのではなく、可能であればブロックごとにデータを処理します。メモリ内の構造も無駄です。使い終わったらメモリを解放します。代わりにメモリマップできるものをRAMにロードしないでください。そして、他の何百ものヒント...
ただし、アプリケーションが他のコンピューターに保存する必要のあるメモリを本当に必要とする場合は、memcachedなどを使用してそこに保存するように変更できます。ボーナスポイントは、将来的にはより適切に拡張されるためです。
ユーザーはを求めたので、どのようにネットワーク上で共有メモリへ。それがいい考えではない場合。だから、実際にあなたがそれを行うことができる方法はここにあります。
これは良いアイデアだとか、パフォーマンスが上がるとは言いませんが、うまくいくはずです。
これは、iSCSIマウントポイントを作成できるWindows Serverではないと想定しています。
コンピューター1の手順:
コンピューター2の手順:
できた!
警告-Windowsでページファイルをネットワーク共有に移動できる場合、VHDナンセンスをスキップできる場合があります。このオンラインの例はあまり多くありません(理由は明らかです)。
完全なシステムの不安定性、または完全に何か他のものが発生する場合があります。誰も実際に何が起こるかわかりません。
あらゆる種類の「メモリ」だけでなく、ネットワーク上で共有するための「RAM」に言及したように、最終的な答えは理論的には「はい」、実際には「いいえ」です。
一方、ストレージやその他の一時データなどの他のタイプのメモリは、さまざまな目的や理由でネットワーク上で定期的に共有されます。同様に、必要に応じてRAMを技術的にネットワーク上で共有することもできます。しかし、パフォーマンスとコストは現実の世界で実行するには高すぎるでしょう。
RAMまたはランダムアクセスメモリは、オペレーティングシステムによって作業領域として使用されるため、多くの読み取り/書き込み操作が実行されます。平均的なシステムでは、RAMを使用したデータ速度の容量は他の部品と比較して最高です。ネットワーク上にRAMを配置する場合、非常に高速なデータ転送容量が必要であり、技術的に達成できる場合でもコストは非常に高くなります。ネットワーク速度のアップグレードにかかる費用はごくわずかですが、マシンのRAMをローカルで取得できます。
通常、アプリケーションは仮想メモリで実行されるため、仮想メモリ要件はシステムの使用可能な物理メモリを超えることができ、パフォーマンス以外の影響はありません。オペレーティングシステムは、仮想メモリをディスクにページアウトするだけで、アクティブに使用するために必要な瞬間に物理メモリを解放します。これは通常、妥当な局所性を備えたアプリケーションで適切に機能します(任意の時点でのアクティビティは、アプリケーションの仮想メモリ空間の限られた領域にある程度集中します)。アプリケーションのローカリティが低い場合(常に仮想スペース全体でメモリを参照している場合)、すべての仮想メモリを物理メモリに収容できない限り、パフォーマンスが低下します(すべての仮想メモリが常駐します)。
そのため、ここにはいくつかの可能性があります。
リモートコンピューターでメモリを使用するという考え方は、基本的にはネットワーク化されたページングファイルを作成することです。理論上は機能しますが、実際には、ページングファイルがネットワーク帯域幅と遅延のためにコンピューター(ハードドライブ)に対してローカルである場合、パフォーマンスははるかに向上します。リモートシステムがメモリ内またはディスク上でページングファイルをホストしているかどうかは関係ありません。ボトルネック(パフォーマンスの最も重要な制限)はネットワークになります。これはインターネット上で特に当てはまりますが、リモートコンピューターが同じLANに隣接している場合にも当てはまります。
これは、それがどのタイプのアプリケーションであり、ラムが何のために使用されるかに本当に依存します。
たとえば、多くのWebアプリケーションは、memcached
サーバーに接続することにより、ネットワーク経由でRAMを使用できます。これにより、大量のRAMを備えた別のコンピューターにキャッシュデータ(およびアクセスが高速になるはずのその他のデータ)を格納できます。
もちろんこれはアプリケーション固有であり、memcachedを使用できるアプリケーションが必要です。ブラウザはこのようなキャッシュバックエンドの使用をサポートしていないため、これはスラックの2番目のインスタンスを開くのに役立ちません。