我正在尝试设置一些性能分析以及影响缓冲策略的运行时决策。我的应用程序收到指向库(CUDA或OpenCL)分配的缓冲区的指针。
如何测试内存区域是否已锁定页面?
据我所知,POSIX为我们提供了mlock()
和munlock()
。如何有效地检查虚构的mislocked()
?
Mac OS X或Linux的答案会有所帮助。
我见过几个引用,例如this和this,它们表明驱动程序库的编写者已经想出了如何进行此测试。如何在我的用户代码中执行此操作?
答案 0 :(得分:2)
/proc/$PID/smaps
包含“已锁定:”行,无论页面是否被锁定,该行都应足以简单保证。否则请参阅/proc/$PID/pagemap
interface。