【问题标题】:Is memory locked (pinned) or not?内存是否锁定(固定)?
【发布时间】:2011-11-02 06:12:28
【问题描述】:

我正在尝试设置一些性能分析以及影响缓冲策略的运行时决策。我的应用程序接收到一个指向由库(CUDA 或 OpenCL)分配的缓冲区的指针。

如何测试内存区域是否被页面锁定?

据我所知,POSIX 给了我们mlock() 和munlock()。如何有效检查虚构的mislocked()?

Mac OS X 或 Linux 的答案会很有帮助。

我看到了一些参考资料,例如this 和this,这表明驱动程序库的作者已经弄清楚了如何进行此测试。如何在我的用户代码中执行此操作?

【问题讨论】:

    标签: macos unix memory-management linux-kernel posix


    【解决方案1】:

    /proc/$PID/smaps 包含 "Locked:" 行,这足以简单地确保页面是否被锁定。否则请参阅/proc/$PID/pagemap 接口。

    【讨论】:

    • 终于可以在linux系统上测试了。这是一个好的方法。希望我可以更容易地从我的程序中调用一些东西,但我可以使用它。我只是稍等片刻,看看是否有人可以建议一种不实现 proc 伪文件系统的 OS X 方法。
    • 感谢@adobriyan 的帮助!
    猜你喜欢
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 2012-04-07
    相关资源
    最近更新 更多