i7 8コアCPUのWindows 7 x64でMongo 2.2.2を実行しています。当社の実稼働サーバーは、同じバージョンの Mongo を搭載した 256 コアのマシンで Red Hat Enterprise の下で実行されています。
私のWindowsマシンでの次の呼び出しのテストでは
db.users_v2_prod.aggregate( { $group : {_id : "$email", total : { $sum : 1 } } }, { $match : { total : { $gte : 3 } } }, { $sort : {total : -1} }, {$limit : 5} )
mongo が利用可能なリソースを十分に活用していないことに気付きました。クエリ中の CPU の合計負荷は ~10% です。Process Explorer によると、計算は 1 つのスレッドでのみ行われます。mongod
私が持っている8つのコアのうち3つのコアしか使用していないようで、部分的に使用されています。
Mongo のエンジニアは、この実装の理論的根拠を説明していただけますか? 利用可能なリソースがあれば、なぜそれを使わないのか興味があります。私がグループ化しているフィールドのインデックスがあるので、すべてのコアで負荷を並列にしないでください。
特定のクエリが 650 万のドキュメントを含むコレクションで実行されました (mongobackup は 5 GB のファイルを生成します)。だから、それは何もクレイジーではありません。
PS。おまけの質問: GPU の使用を考えたことはありますか? 私のラップトップには1024コアのGPUがあります:)