2011-08-23 40 views
4

我试图设置一些性能分析以及影响缓冲策略的运行时决策。我的应用程序接收一个指向由库(CUDA或OpenCL)分配的缓冲区的指针。内存是否被锁定(固定)?

我该如何测试内存区域是页面锁定的?

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

对于Mac OS X或Linux的答案会有所帮助。

我见过几个参考文献,如thisthis,表明驱动程序库的作者已经找出了如何进行这个测试。我如何在我的用户代码中执行此操作?

回答

2

/proc/$PID/smaps包含“Locked:”这一行应该足以保证页面是否被锁定。否则请参阅/proc/$PID/pagemap界面。

+0

终于可以在linux系统上测试这个了。这是一个好方法。希望能够从我的程序中更方便地打电话给我,但我可以使用它。我只是延长一点时间,看看是否有人可以提出一种不实现proc伪文件系统的OS X方法。 – NoahR

+0

感谢您的帮助@adobriyan! – NoahR