2009-05-28 42 views
5

使用メモリ(RAM)帯域幅はどのように計算されますか?どのパフォーマンスカウンターが必要ですか?メモリ帯域幅使用量

"Rightmark multi-threaded memory test"というツールを見つけました。しかし、残りのRightmarkのテストとは異なり、バイナリだけのソースコードは見つかりませんでした。

+0

なぜこれはc#、C++、およびcとタグ付けされていますか? – unwind

答えて

1

メモリ帯域幅の使用量を '計算'することは非常に困難です。対立する重要なキャッシュとMMUの問題はたくさんあります。それを行う唯一の実際の方法は、シミュレーションまたは現実の測定の使用です。

コードをデバッグし、実行されたメモリのロードとストア操作の回数を数えることで、「荒い」アイデアを得ることができます。しかし、それがキャッシュヒット/ミスかどうかを知ることは別の問題です。

目的によって異なります。推定値を取得する場合は、一般的な目的コードの約30%がメモリの負荷とストアであるという経験則を使用することができます。最悪の場合、キャッシュが常に欠けているとみなして解決することができます。

あなたができる可能性のあるものは、仮想化を見ることです。いくつかのオープンソースオプションがあります(QEMUが思い浮かぶようになります)。特定のハードウェア測定値をエクスポートすることができます。

1

偶然、MSDN Magazine 6月号のCLR Inside Outの記事は、.NETアプリケーションのメモリ使用量のプロファイリングに関するものです。あなたのコードは、Linux上で実行することができる場合

http://msdn.microsoft.com/en-us/magazine/dd882521.aspx

+1

しかし、メモリ消費ではなく、/ bandwidth /(データ転送率という意味で)についての質問でした。 – Frank

1

Cachegrindを使用します。

Cachegrindは、キャッシュプロファイラです。 は、CPU内の I1、D1およびL2キャッシュと、 の詳細なシミュレーションを実行するので、ソースコード をコード内で正確に特定できます。 は、ファンクションごと、モジュールごと、および の全プログラムサマリーで、 メモリ参照および命令 が実行されたときに、キャッシュミスの数を特定します。すべての言語で書かれたプログラムを持つ有用な です。 Cachegrindは、通常よりも遅く、 20--100xのプログラムを実行します。

KCacheGrind GUIを使用します。

関連する問題