2012-04-10 12 views
1

C#.net 3.5アプリケーションの場合、ヒープ上に多くのデータを作成することは避けられませんが、ハードウェアに関してはメモリの点で何を探していますか?それはちょうど最大のソケットバス幅ですか?または、メモリの "帯域幅"がついていますか?または実際に実行される頻度は?ヒープ割り当てと適切なハードウェア

私たちのアプリケーションのボトルネックは避けられないと結論づけました。スケールアップすると、RAMにアクセスするスレッドが多いため、複数のスレッドに作業が広がっているように見えます。

実際の問題は、アイテムをロックし、これらのアイテムにアクセスしようとするスレッドが多数あることを指します。スレッドロックをさらに最適化する方法はありません。これはスレッディングに関するものなので、代替CPUの選択を検討し、QPI統計を詳しく調べるべきかどうかは不明でした。現在、Westmereアーキテクチャを使用していますが、クロック速度は2GHzです。

EDIT:DMAが私たちを助けることができます。

私はこれがC#とJavaとタグ付けするつもりですが、答えはC#固有ではないと考えています。事前に

おかげで、

+0

いくつのCPUがありますか? –

+0

ロックをさらに最適化する方法がないことをどう知っていますか? – DNA

+0

@Henk、8x論理コアの4倍の物理CPU(4x Xeon x7550) – mezamorphic

答えて

1

は私が速いマシン上でアプリケーションをテストします。そのサウンドから、あなたのメモリ帯域幅はボトルネックです。したがって、私は、16ギガヘルツのメモリまたはそれに類するものの32ギガバイトでクロックされたi7に4.5ギガヘルツを試みます。約1000ドルで買うことができます。はるかに速いシステムでボトルネックが動くことがわかります。

BTW:これを修正する時間が限られているように聞こえるので、達成できないかもしれませんが、C#でのオブジェクト作成は避けることができません。 Javaでは、GCesが1日に1回未満の数の高性能サーバーを作成しましたが、目的に合わせてすべてのコアコードを記述する必要があります。同様に、コードのクリティカルセクションではロックされないサービスを書くこともできますが、後でこれを追加するだけのtrivalはありません。

+0

こんにちは!先週ご協力いただきありがとうございます。この問題に関しては、CPU速度が大幅に変わると思いますか(現時点でサーバーでXeonsを使用していると言わなければならないので、i7は実現できません)。また、インターフェイスの幅ではなく、メモリの速度についても言及していますか?私は2倍の速度を仮定していますが、幅の半分は速度の半分と同じ性能を発揮しますが、幅を倍にします - 両者は同じ理論帯域幅を与えますか? – mezamorphic

+0

メモリバス用に特に優れたアーキテクチャ(IntelとAMD)がありますか?私はopteronsがインテルより常に良いメモリバスを持っているのを聞いた – mezamorphic

+0

私はそれが出てくるサンディブリッジが最も速かったまでそれが本当だったと信じています。おそらく、AMDは現在、あるいは少なくとも計画された何かを持っている可能性が高い。 –

関連する問題