社区使用什么工具来帮助确定缓存未命中是否是一个问题,以及它们是否是代码中出现的问题?
第一个问题是:
我如何确定由于缓存未命中而等待来自主内存的数据所花费的时间?像 OProfile 这样的采样分析器会将时间归因于等待此数据的函数吗?例如,他们不会将时间归因于等待从磁盘读取数据的函数,因此人们不得不怀疑等待来自内存的数据是否也是如此。
第二个问题是:如果我确定缓存未命中确实是一个瓶颈,我如何确定代码的哪些部分正在请求未缓存的内存?我应该使用带有 LLC_MISSES 的 OProfile 作为事件吗?还有其他我不知道的工具吗?我宁愿远离专有解决方案,除非有令人信服的理由使用它们,因为我不想在未来被锁定在某个工具链中。
谢谢你的帮助!