私たちは、ビデオがmongodbに保存されるシステムを構築しました。ビデオはそれぞれ数百メガバイトのサイズです。このシステムはmongoengineを使ってpython3でビルドされています。 pymongoとbsonのc拡張がインストールされています。パフォーマンス問題Windows上のmongo
mongoengine文書の定義は次のとおりです。Linuxでのビデオの読み込み
class VideoStore(Document, GeneralMixin):
video = EmbeddedDocumentListField(SingleFrame)
mutdat = DateTimeField()
_collection = 'VideoStore'
def gen_video(self):
for one_frame in self.video:
yield self._get_single_frame(one_frame)
def _get_single_frame(self, one_frame):
if one_frame.frame.tell() != 0:
one_frame.frame.seek(0)
return pickle.loads(one_frame.frame.read())
class SingleFrame(EmbeddedDocument):
frame = FileField()
は約3〜4秒かかります。しかし、Windowsで同じコードを実行するには13〜17秒かかります。
この問題の解決方法はありますか?
私は考えていると(無駄に)テスト:
- がそう(単一ブロブとしてファイルを保存する
- 利回りを使用せずに、単一のブロブなどのビデオを読み込むチャンク
- を増やします別々のフレームの格納なし)
これはWindowsサービスとして実行されますか? Windowsサーバーまたはワークステーションでこのコードを実行していますか? NUMAが有効になっていますか? – profesor79
両方のマシンのハードウェアは比較的同じですか? Windows版とディスクフォーマットの種類は? NTFS? – Saleem
私はラップトップ(通常のハードドライブを搭載したWindows 7 Core i7)とSSDを搭載した仮想マシン(バーチャルボックスWindows 10)の両方でこの動作をテストしました。私はNUMAについて知らなかった、私は確かにそれを試してみるだろう。 –