问题标签 [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 中使用 Infinispan 进行休眠 L2 缓存

有没有人在春季成功将 infinispan 设置为 L2 缓存?

我想避免将 XA 用于我的数据源。目前我正在将 LocalContainerEntityManagerFactoryBean 与 JPATransactionManager 一起使用。

有关设置 Infinispan 所需的 JTATransactionManager 的任何提示?

我的事务管理器目前有以下内容:注意,您需要将 entityManagerFactory 传递给事务管理器。因此,需要完全创建实体管理器才能创建 TransactionManager。但是如果 Infinispan 需要 TransactionManager,这不会造成循环依赖吗?

更新:我正在使用 bitronix,一切似乎都在工作,但我看到了几个警告:

1) 从 Infinispan 启动时:

STDOUT [WARN] [2012.02.20 14:29:00] statetransfer.BaseStateTransferManagerImpl - ISPN000159:取消阻止事务失败 java.lang.IllegalStateException:尝试取消阻止缓存视图 1 的写入命令,但它们在 org.infinispan.statetransfer 中未被阻止。 StateTransferLockImpl.unblockNewTransactions(StateTransferLockImpl.java:260) at org.infinispan.statetransfer.BaseStateTransferManagerImpl.postInstallView(BaseStateTransferManagerImpl.java:351) at org.infinispan.cacheviews.CacheViewsManagerImpl.handleCommitView(CacheViewsManagerImpl.java:520) at org.infinispan.cacheviews .CacheViewsManagerImpl.clusterCommitView(CacheViewsManagerImpl.java:387) 在 org.infinispan.cacheviews.CacheViewsManagerImpl.clusterInstallView(CacheViewsManagerImpl.java:271) 在 org.infinispan.cacheviews.CacheViewsManagerImpl$ViewInstallationTask。在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 java.util.concurrent 调用(CacheViewsManagerImpl.java:876) .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 节点是否有助于减少缓存一致性流量?

sched_setaffinity()可以使用call将进程固定到一组特定的 CPU 内核。手册页说:

这几乎是显而易见的事情(或不是?)。对我来说不是那么明显的是 -

将 LWP 固定到特定 CPU 或 SMP 节点是否会减少缓存一致性总线流量?例如,由于一个进程正在运行,因此其他 CPU 不应修改其私有内存,因此只有属于同一 SMP 节点的 CPU 应保持缓存一致。

0 投票
10 回答
8812 浏览

c - 用于迭代二维数组的嵌套循环的哪种排序更有效

在时间(缓存性能)方面,以下哪种嵌套循环的顺序迭代二维数组更有效?为什么?

或者

0 投票
1 回答
428 浏览

cuda - Why doesn't CUDA allow us to use all of the SM memory as L1 cache?

In a CUDA device, each SM has 64KB of on-chip memory that is placed close to it. By default, this is partitioned into 48KB of shared memory and 16KB of L1 cache. For kernels whose memory access pattern is hard to determine, this partitioning can be changed to 16KB of shared memory and 48KB of L1 cache.

Why doesn't CUDA allow all of the 64KB per-SM on-chip memory to be used as L1 cache?

There are many kinds of kernels which have no use for shared memory, but could use that extra 16KB of L1 cache.

0 投票
7 回答
53585 浏览

c - 为什么迭代二维数组时循环的顺序会影响性能?

下面是两个几乎相同的程序,只是我切换了ij变量。它们都运行不同的时间。有人可以解释为什么会这样吗?

版本 1

版本 2

0 投票
1 回答
2966 浏览

c - 缓存未命中和缓存命中

给定以下代码:

假设:

  • int 是 4 个字节

  • src数组从地址开始0dst从地址开始64

  • 缓存的大小是32字节,一开始缓存是空的

  • 有一个 L1 缓存在使用 write-through、write-allocate 的直接映射下工作

  • 块的大小为 16 字节

我正在尝试找出 and 的缓存未命中和缓存dst命中src

问题 - 填写srcdst数组的表格,它们在开始时是空的:在运行之前

首先,我将介绍我的教授的解决方案:运行后

这是我的解决方案,但在某个地方,我犯了一个错误:

假设我从而不是i1 to 40 to 3

第一次迭代:

第二次迭代:

第三次迭代:

第四次迭代:

我不明白为什么在 的表格中根本有 HITS dst,我知道我错了,有人可以解释一下为什么上面的解决方案中确实有 HITS 吗?

问候罗恩

0 投票
4 回答
48713 浏览

performance - 在Linux中测量C程序缓存命中/未命中和cpu时间的最简单工具?

我正在用 C 编写一个小程序,我想测量它的性能。

我想看看它在处理器中运行了多少时间,以及它有多少缓存命中+未命中。关于上下文切换和内存使用的信息也很高兴。

该程序的执行时间不到一秒钟。

我喜欢/proc/[pid]/stat的信息,但是程序死/被杀后不知道怎么看。

有任何想法吗?

编辑:我认为 Valgrind 增加了很多开销。这就是为什么我想要一个简单的工具,比如 /proc/[pid]/stat,它总是在那里。

0 投票
2 回答
579 浏览

visual-studio-2010 - 一个信任使用 VsPerfCmd.exe 的硬件计数器分析应该走多远?

我正在尝试使用 VsPerfCmd.exe 来分析检测本机应用程序中的分支预测错误和最后一级缓存未命中。

设置就像在tin上所说的那样工作,但我得到的结果似乎并不明智。例如,一个总是接触 24MB 数据集的函数被报告为在被调用 ~2000 次时只会导致 ~700 次缓存未命中。现在让我考虑一下 - 该函数线性遍历两个 12 字节元素的 1024*1024 元素数组。对于每个元素,它随机决定是否需要它之前或之后的元素 1024 个索引的信息。这意味着为了不产生任何高速缓存未命中,CPU 必须始终在高速缓存中拥有至少三个 1024*12 字节的部分。此外,在每次迭代之后,该过程使用 sleep() 产生 CPU 大约 8 毫秒。我无法想象任何硬件预取器做得这么好。

这种愚蠢的数据量怎么不会产生比 VsPerfCmd 说的更多的最后一级缓存未命中?尽管我的 i7 有 8MB 的共享 L3 缓存,但这似乎不太可能。任何人都可以分享他们对这里可能发生的事情的看法吗?当然,“VsPerfCmd.exe 糟透了”将是一个有效的答案,但如果有人要这么说,我至少想听听有人有类似的经历作为这个断言的基础。

0 投票
1 回答
712 浏览

c# - 分析 C# .net 代码的 CPU 缓存?

我见过一些工具,您可以通过这些工具分析 C 和 C++ 的缓存,但该工具 (Valgrind) 是为 Linux 设计的,他们在他们的网站上声明,为 Windows 开发工作量太大)。

C# 开发人员是否可以使用任何工具来分析缓存?

我有 ANTS Performance Profiler,但它不执行缓存分析。

0 投票
2 回答
6619 浏览

cpu - 多级缓存性能

我有点卡在两个问题上。我将包括问题的相关细节,任何指导将不胜感激。如果可以,请给出解释。

假设您有以下针对具有多种不同内存层次选择的处理器的统计信息。

注意:全局未命中率是在所有级别的缓存中未命中的引用百分比(因此必须访问主内存)

  1. 如果 L2 缓存可用并且是直接映射的,则计算总 CPI。

  2. 如果 L2 可用并且是 8-way set associative,则计算总 CPI。