我想尽可能地避免我的代码刷新 L2 缓存。
您将如何在 C++/C# 中实现这一目标,以及您将如何使其负责。
编辑: 我可以选择收集 L2 缓存未命中数吗? 回答:是Can I get the L2 cache miss count of each process on the windows platform?
最佳答案
似乎人们不愿意透露这方面的信息(c++ 或 c# 无所谓)。所以我可能不得不创建自己的策略,该策略可能会使用一组方法而不是一组严格的规则或方法。
要使 Windows 应用程序达到最大命中/未命中率,我可能会:
- 为应用程序专用物理 CPU,确保没有其他进程在使用它,禁用超线程,使用 BIOS,因为服务器制造商通常会为低延迟应用程序提供特定设置
- 确保有问题的代码片段的大小小于该 CPU 内核上的二级缓存
- 确保代码没有使它显式清除缓存的东西(例如 C# 中的内存屏障)
- 监控 L2 未命中数:http://stackoverflow.com/questions/5141350/can-i-get-the-l2-cache-miss-count-of-each-process-on-the-windows-platform
关于windows - 如何在 Windows 上监控 CPU 缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14381876/