問題タブ [cpu-cache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1431 参照

spring - Spring と Tomcat で休止状態の L2 キャッシュに Infinispan を使用する

春にL2キャッシュとしてinfinispanを正常にセットアップした人はいますか?

データソースに XA を使用したくない。現在、JPATransactionManager で LocalContainerEntityManagerFactoryBean を使用しています。

Infinispan が必要とする JTATransactionManager の設定に関するヒントはありますか?

現在、私のトランザクション マネージャーには次のようなものがあります。エンティティ マネージャー ファクトリーをトランザクション マネージャーに渡す必要があることに注意してください。そのため、TransactionManager を作成するには、エンティティ マネージャーを完全に作成する必要があります。しかし、Infinispan が TransactionManager を必要とする場合、これは循環依存関係を作成しませんか?

更新: 私は bitronix を使用しており、動作しているように見えますが、いくつかの警告が表示されます:

1) Infinispan からの起動時:

STDOUT [警告] [2012.02.20 14:29:00] statetransfer.BaseStateTransferManagerImpl - ISPN000159: トランザクションのブロック解除に失敗しました java.lang.IllegalStateException: キャッシュ ビュー 1 の書き込みコマンドのブロックを解除しようとしましたが、org.infinispan.statetransfer でブロックされませんでした。 StateTransferLockImpl.unblockNewTransactions(StateTransferLockImpl.java:260) org.infinispan.statetransfer.BaseStateTransferManagerImpl.postInstallView(BaseStateTransferManagerImpl.java:351) org.infinispan.cacheviews.CacheViewsManagerImpl.handleCommitView(CacheViewsManagerImpl.java:520) org.infinispan.cacheviews .CacheViewsManagerImpl.clusterCommitView(CacheViewsManagerImpl.java:387) at org.infinispan.cacheviews.CacheViewsManagerImpl.clusterInstallView(CacheViewsManagerImpl.java:271) at org.infinispan.cacheviews.CacheViewsManagerImpl$ViewInstallationTask.call(CacheViewsManagerImpl.java:876) で java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) で java.util.concurrent.FutureTask.run(FutureTask.java:138) で java.util.concurrent で.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) で java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) で java.lang.Thread.run(Thread.java:680) で

2) 書き込みトランザクションを実行する場合:

0 投票する
2 に答える
1952 参照

linux - プロセスをCPUコアまたはSMPノードに固定すると、キャッシュコヒーレンシトラフィックを削減できますか?

呼び出しを使用して、プロセスを特定のCPUコアのセットに固定することができsched_setaffinity()ます。マニュアルページには次のように書かれています。

これはほとんど明白なことです(またはそうではありませんか?)。私にはそれほど明白ではないのはこれです-

LWPを特定のCPUまたはSMPノードに固定すると、キャッシュコヒーレンシバストラフィックが減少しますか?たとえば、プロセスは固定されて実行されているため、他のCPUはそのプライベートメモリを変更しないでください。したがって、同じSMPノードの一部であるCPUのみがキャッシュコヒーレントを維持する必要があります。

0 投票する
10 に答える
8812 参照

c - 2D 配列を反復処理するためのネストされたループの順序はどれがより効率的か

2D 配列を反復処理するネストされたループの次の順序のうち、時間 (キャッシュ パフォーマンス) の点でより効率的なのはどれですか? なんで?

また

0 投票する
1 に答える
428 参照

cuda - CUDA ですべての SM メモリを L1 キャッシュとして使用できないのはなぜですか?

CUDA デバイスでは、各 SM に 64KB のオンチップ メモリがあり、近くに配置されます。デフォルトでは、これは 48KB の共有メモリと 16KB のL1 キャッシュに分割されます。メモリ アクセス パターンを特定するのが難しいカーネルの場合、このパーティショニングを 16KB の共有メモリと 48KB の L1 キャッシュに変更できます。

CUDA では、SM ごとに 64KB のオンチップ メモリのすべてをL1 キャッシュとして使用できないのはなぜですか?

共有メモリを使用しないが、余分な 16KB の L1 キャッシュを使用できるカーネルには多くの種類があります。

0 投票する
7 に答える
53585 参照

c - 2D 配列を反復処理するときにループの順序がパフォーマンスに影響するのはなぜですか?

以下の 2 つのプログラムは、変数ij変数を入れ替えた以外はほとんど同じです。どちらも異なる時間で実行されます。誰かがなぜこれが起こるのか説明できますか?

バージョン 1

バージョン 2

0 投票する
1 に答える
2966 参照

c - キャッシュミス&キャッシュヒット

次のコードを考えると:

仮定:

  • int は 4 バイト

  • src配列は address0からdst始まり、 address から始まります64

  • キャッシュのサイズは32bytes で、最初はキャッシュは空です

  • ライトスルー、ライトアロケートを使用した直接マッピングで動作する L1 キャッシュがあります。

  • ブロックのサイズは 16 バイトです

と のキャッシュミスとキャッシュヒットを把握しようとしていdstますsrc

質問 - srcおよびdst配列のテーブルに入力します。最初は空です:実行前

まず、私の教授の解決策を提示します。実行後

これが私の解決策ですが、どこかで間違いを犯しています:

i私が逃げるのでは1 to 4なく逃げると仮定して0 to 3

最初の反復:

2 回目の反復:

3 回目の反復:

4 回目の反復:

の表に HITS がある理由がまったくわかりませんdst。間違っていることはわかっています。上記のソリューションに実際に HITS がある理由を誰か説明してもらえますか?

よろしくロン

0 投票する
4 に答える
48713 参照

performance - LinuxでCプログラムキャッシュのヒット/ミスとCPU時間を測定する最も簡単なツールは?

C で小さなプログラムを書いていますが、そのパフォーマンスを測定したいと考えています。

プロセッサでの実行時間と、キャッシュ ヒット + ミスの回数を確認したいと考えています。コンテキスト スイッチとメモリ使用量に関する情報もあると便利です。

プログラムの実行には 1 秒もかかりません。

/proc/[pid]/stat の情報は気に入っていますが、プログラムが終了した/終了した後にそれを確認する方法がわかりません。

何か案は?

編集: Valgrind は多くのオーバーヘッドを追加すると思います。そのため、/proc/[pid]/stat のような、常にそこにあるシンプルなツールが必要でした。

0 投票する
2 に答える
579 参照

visual-studio-2010 - VsPerfCmd.exe を使用したハードウェア カウンター プロファイリングは、どこまで信頼できますか?

VsPerfCmd.exe を使用して、インストルメント化されたネイティブ アプリケーションで分岐の予測ミスと最終レベルのキャッシュ ミスをプロファイリングしようとしています。

設定はTinに記載されているとおりに機能しますが、得られる結果は賢明ではないようです。たとえば、常に 24MB のデータ セットにアクセスする関数は、約 2000 回呼び出されたときに、約 700 のキャッシュ ミスしか発生しないと報告されています。これを概観してみましょう - 関数は、12 バイト要素の 1024*1024 要素の 2 つの配列を直線的にトラバースします。すべての要素について、その前または後の要素 1024 インデックスの情報が必要かどうかをランダムに決定します。つまり、キャッシュ ミスを発生させないためには、CPU は常に、キャッシュ内にこれら両方の配列のそれぞれに 1024*12 バイトの少なくとも 3 つのセクションを持たなければなりません。さらに、各反復の後、プロセスは約 8 ミリ秒間 sleep() を使用して CPU を解放します。ハードウェア プリフェッチャーがこれほど優れた仕事をしているとは想像できません。

このばかげた量のデータが、VsPerfCmd が言うよりも多くの最終レベルのキャッシュ ミスを生成しないのはどうしてでしょうか? 私の i7 には 8MB の共有 L3 キャッシュがありますが、これはほとんどありそうにありません。ここで何が起こっているのかについて、誰か意見を共有できますか? もちろん、「VsPerfCmd.exe はひどい」というのは有効な答えですが、誰かがそう言うなら、少なくとも、この主張の根拠として誰かが経験した同様の経験を聞きたいです。

0 投票する
1 に答える
712 参照

c# - C# .net コードの CPU キャッシュをプロファイリングしていますか?

C および C++ のキャッシュをプロファイリングできるいくつかのツールを見てきましたが、ツール (Valgrind) は Linux を対象としており、Windows 用に開発するには作業が多すぎると Web サイトで述べています)。

C# 開発者がキャッシュのプロファイリングに使用できるツールはありますか?

ANTS Performance Profiler を持っていますが、キャッシュ プロファイリングを実行しません。

0 投票する
2 に答える
6619 参照

cpu - マルチレベルキャッシュパフォーマンス

私は2つの問題に悩まされています。問題の関連する詳細を含めます。ガイダンスをいただければ幸いです。できれば説明をお願いします。

メモリ階層にいくつかの異なる選択肢があるプロセッサについて、次の統計があるとします。

注:グローバルミス率は、すべてのレベルのキャッシュでミスする(したがってメインメモリにアクセスする必要がある)参照の割合です。

  1. L2キャッシュが使用可能であり、直接マッピングされている場合は、合計CPIを計算します。

  2. L2が利用可能で、8ウェイセットアソシアティブである場合は、合計CPIを計算します。