测量 x86-64 中的 TLB 未命中处理成本

2024-03-19

我想估计运行 Linux 的 x86-64 (Intel Nehalem) 计算机上由于 TLB 未命中而导致的性能开销。我希望通过使用一些性能计数器来获得这个估计。有人知道估计这个的最佳方法是什么吗?

谢谢 阿尔卡


如果您可以访问基于“Westmere”的系统,那么您的代码的性能特征应该与“Nehalem”上的性能特征非常相似,但是您将可以访问一个新的硬件性能计数器事件,该事件几乎可以准确测量您的性能想。

在 Westmere 上,等待处理 TLB 未命中时性能损失的最佳估计可能来自硬件性能计数器事件 08H、掩码 04H“DTLB_LOAD_MISSES.WALK_CYCLES”,它被描述为计数“循环页面丢失处理程序正忙于页面”由于二级 TLB 中的负载未命中而行走”。 《英特尔® 64 和 IA-32 架构软件开发人员手册》中对此进行了描述 第 3B 卷:系统编程指南,第 2 部分”(文档编号:253669),可在线获取http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.html http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3b-part-2-manual.html

该事件之所以必要,是因为 TLB 未命中处理时间主要由读取包含页表条目的高速缓存行所需的时间决定。如果该高速缓存行位于 L2 高速缓存中,则 TLB 未命中的开销将非常小(大约 10 个周期)。如果该行位于 L3 高速缓存中,则可能是 25 个周期。如果该行位于内存中,则约为 200 个周期。

  • 如果上层页转换缓存中也存在未命中,则需要多次访问内存来查找和检索所需的页表条目(例如,https://stackoverflow.com/a/9674980/1264917 https://stackoverflow.com/a/9674980/1264917).
  • 在某些处理器上,L2 缓存计数器可以告诉您 L2 中命中和错过的表遍历数量,但 Nehalem 上则不然。 (在这种情况下,这不会有太大帮助,因为在 L3 中命中的 TLB 遍历也相当快,而您真正想要的是必须进入内存的 TLB 遍历。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

测量 x86-64 中的 TLB 未命中处理成本 的相关文章

  • “类别不存在。”为 MSMQ 队列创建性能计数器

    我正在尝试这样做 using System Diagnostics var queueCounter new PerformanceCounter MSMQ Queue Messages in Queue machinename priva
  • 性能计数器与 ETW

    性能计数器是 ETW 的一部分吗 如果不是 两者有什么区别 性能计数器和 ETW 是不同的技术 性能计数器不通过 ETW 公开 基本区别 性能计数器提供有关系统行为的高级指标 例如计时器 读取的字节和分配的对象 而 ETW 是一种诊断跟踪和
  • 使用 C# 以编程方式确定计算机的最大硬盘数据传输速率

    我使用 C 编写了一个小型 WPF 小部件 以三个小百分比类型条显示当前的 CPU 活动 使用的 RAM 和磁盘活动 为此 我使用了以下 PerformanceCounters diskCounter PerformanceCounter
  • Mac OS 的 Perf stat 等效项?

    Mac OS 上有等效的性能统计吗 我想对 CLI 命令做同样的事情 但谷歌搜索没有产生任何结果 Mac OS X 中有 Instruments 工具来分析应用程序 包括硬件 PMU 默认是对 CPU 使用情况进行采样分析器 一些文档 ht
  • PHP Profiler 具有方法执行计数、次数等,无需扩展

    除了 CI 的默认分析器之外 是否有任何类或库可以在我的本地 php 环境中用于分析 查找瓶颈 查看不必要的执行时间等 我要远程使用它 我的主机没有安装任何调试扩展 我不想要求他们安装 如果有任何 PHP 解决方案 那就太好了 如果可能 请
  • 使用 ARM TrustZone 防止从非安全世界访问内存区域

    Context 我想拥有一个有钱人GNU Linux操作系统运行在正常的世界和一个带有集成的小型操作系统Monitor运行在安全世界 要求 我们必须绝对避免 the 正常的世界访问安全世界内存区域 Question 具有哪些特征信任区我们需
  • 测量 Java 程序内存使用情况的最佳方法?

    我目前正在使用VisualVM 但我遇到的问题是我无法保存它生成的图表 我需要报告一些有关其内存使用情况和运行时间的数据 尽管运行时间很容易获得System nanoTime 我也尝试过NetBeans 分析器但这不是我想要的 因为我不是在
  • ContentPresenter 布局传递

    我正在尝试分析 wpf 应用程序 以加快ListView显示复杂的多列数据模板项 我无法理解申请时间表报告中的数字 描述说 这是此列模板 xaml
  • 以独立于区域设置的方式访问 Windows 性能计数器

    我有一组混合服务器 一些运行英语 Windows 另一些运行意大利语 Windows 有没有一种方法可以在不使用与区域设置相关的字符串的情况下读取性能计数器的值 我读到Zabbix 文档 http www zabbix com docume
  • 如何获取 .NET 中的资源监视器值?

    我需要获取 Windows 7 资源监视器中的一些值 特别是每个进程的内存使用情况 CPU 和带宽 我研究了 PerformanceCounter 类 但没有找到深入到进程级别的方法 资源监视器正是我正在寻找的东西 在你问之前 我知道这是重
  • 为什么 React devtools Profiler 不向我显示组件属性?

    我开始学习React的优化 并看到一些学习资源 在它们上 我可以在探查器中看到组件道具 但在我的 Profiler 中 我没有看到任何道具 为什么 如何在 Profiler 中查看当前渲染组件的 props A make screensho
  • 从 eclipse 运行 Visual VM

    我正在尝试在 Eclipse kepler 中使用 Visual VM 调试 java 应用程序 我正在执行具有选择 Visual VM 作为启动器的主要方法的类 我已经按照中给出的说明配置了 Visual VMhttp blog idrs
  • list.count() 与 Counter() 性能

    在尝试查找字符串中一堆字符的频率时 为什么对 4 个不同的字符运行 string count character 4 次会比使用 collections Counter string 产生更快的执行时间 使用 time time 背景 给定
  • DRAM 访问的性能计数器

    我想找回DRAM 存取次数在我的应用程序中 准确地说 我需要区分数据和代码访问之间 该处理器是一个Intel R Core TM i7 4720HQ CPU 2 60GHz Haswell 基于英特尔软件开发人员手册 第 3 卷 https
  • 线程的cpu使用率

    如何在c 中获取 net中线程的cpu使用率 Check 如何获取Windows上每个线程的CPU使用率 win32 https stackoverflow com questions 1393006 how to get the cpu
  • Haswell 微架构在性能中没有停滞周期后端

    我在 Haswell CPU Intel Core i7 4790 上安装了 perf 但 性能列表 不包括 stalled cycles frontend 或 stalled cycles backend 我检查了http www int
  • 造成这种性能下降的原因是什么?如何调查它?

    Context 我正在使用 NEON SIMD 指令为 ARM64 编写一些高性能代码 我正在尝试进一步优化 我只使用整数运算 不使用浮点数 此代码完全受 CPU 或内存限制 它不执行任何类型的系统调用或 I O 文件系统 网络或其他任何内
  • 如果分析器不是答案,我们还有什么其他选择?

    看完Joshua Bloch的演讲 绩效焦虑 后 我读了他在演讲中建议的论文 评估 Java 分析器的准确性 http www plan cs colorado edu klipto mytkowicz pldi10 pdf 引用结论 我们
  • C#/.NET 分析器应具有哪些功能?

    这可能是一则边缘广告 更不用说主观了 但这个问题是诚实的 在过去的两个月里 我一直在为 NET 开发一个新的开源分析器 称为 SlimTune Profiler http code google com p slimtune http co
  • 什么是 Linux 上易于使用的 C++ 分析器? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要分析一些在 Linux 上运行 C 的代码 你们能推荐一些分析器吗 使用 gprof 只需编译 pg标志 我认为 但不确定 你必须关

随机推荐