4

職場では、2K (2048*1556px) OpenEXR フィルム シーケンスを再生するアプリケーションがあります。それはうまく機能します..3GBを超えるシーケンス(非常に一般的)を除いて、すべてのマシンに8〜16GBのメモリがあるにもかかわらず(Linux BIGMEMスタッフを介してアドレス指定可能)、メモリから古いフレームをアンロードする必要があります。

リアルタイムで再生するには、フレームをメモリにキャッシュする必要があります。OS は数年前の 32 ビット Fedora ディストリビューションです (当面の間、64 ビットにアップグレードすることはできません)。プロセスごとの制限は、プロセスごとに 3GB です。

基本的に、メモリに 3GB 以上のデータをキャッシュすることはできますか? 私の最初のアイデアは、複数のプロセス間でデータを分散することでしたが、これが可能かどうかはわかりません..

4

5 に答える 5

3

1 つの可能性は、mmap を使用することです。データのさまざまな部分を同じ仮想メモリ領域にマップ/マップ解除します。一度にマップできるセットは 1 つだけですが、十分な物理メモリがある限り、データは常駐し続ける必要があります。

于 2008-09-03T15:43:10.083 に答える
2

RAM ドライブを作成し、そこにファイルをロードするのはどうですか... RAM ドライブが BIGMEM をサポートしていると仮定します。

複数のプロセスを使用できます。各プロセスはファイルのビューを共有メモリ セグメントとしてロードし、プレーヤー プロセスは必要に応じてセグメントを順番にマップします。

于 2008-09-03T13:27:57.913 に答える
1

私、なんて興味深い問題でしょう:)

(編集: ああ、Rob の RAM ドライブの投稿を読んだところです...この問題に興奮しました...しかし、もう少し提案したいことがあるので、削除しません)

それは可能でしょうか...

  1. マルチギガバイトの RAM ディスクをセットアップしてから、
  2. プログラムを変更して、「ディスク」から読み取っていることをすべて実行しますか?

RAMディスクのサイズはOSとファイルシステムに依存するため、RAMディスクの部分にすべての問題があると思います。複数の RAM ディスクを作成し、それらの間でコードをジャンプさせる必要がある場合があります。または、複数の RAM ディスクに RAID-0 ストライプ セットをセットアップすることもできます。または、OS の制限がまだあり、数グランド (4k?) をドロップする余裕がある場合は、これらの新しい非常に高速なソリッド ステート ドライブを使用して、ハードウェア RAID-0 ストリップ セットをセットアップします。または...

楽しい楽しい楽しい。

必ずフォローしてください!

于 2008-09-03T16:47:39.837 に答える
1

アプリケーションを変更できると思います。その場合、最も簡単な方法は、アプリケーションを数回 (3 GB のビデオ チャンクごとに 1 回) 起動し、それぞれにビデオのチャンクを保持させ、別のプログラムを使用してそれらを同期させ、それぞれがフレーム バッファーを制御するようにすることです (または、他のビデオ出力)。

同期はおそらく少し面倒ですが、各アプリに独自のフレームバッファーがあり、次のアプリに切り替えるときに、同期プログラムがビデオコントローラーをフレーム間の正しいフレームバッファーにポイントする場合、単純化できます。

于 2008-09-03T16:03:07.993 に答える
0

@dbrは言った:

アレイから直接 2K ファイルを簡単に再生できる、ばかげたファイバー チャネル RAID アレイを備えたレビュー マシンがあります。問題はアーティストのワークステーションにあるため、4000 ドルの RAID アレイではなく、数百になる..

30GB までの制限を受け入れることができる場合、36GB SSD ドライブ 1 台で十分でしょうか? それらはそれぞれ約 1,000 米ドルで、データ レートは十分かもしれません。それは、純粋なRAMアプローチよりもおそらく安価です。小さいサイズもあります。〜 60GB で十分な場合は、2 倍のコストで 2 の JBOD アレイを使用でき、RAID コントローラーをスキップできます。ハイエンドの SSD オプションだけを見るようにしてください。:P

于 2008-09-05T19:13:08.033 に答える