【发布时间】:2013-08-02 05:14:28
【问题描述】:
我有两个问题:
(i) 假设线程 X 在 CPU Y 上运行。是否可以使用系统调用 migrate_pages - 甚至更好的 move_pages(或它们的 libnuma 包装器) - 将与 X 关联的页面移动到连接 Y 的节点?
之所以出现这个问题,是因为两个系统调用的第一个参数都是 PID(而且我需要一个每个线程的方法来进行一些研究)
(ii) 在 (i) 的肯定回答的情况下,我怎样才能获得某个线程使用的所有页面?我的目标是,例如移动包含数组 M[] 的页面...如何将数据结构与其内存页面“链接”,以便使用上面的系统调用?
额外信息:我正在使用 C 和 pthreads。提前致谢!
【问题讨论】:
-
一般来说,当内核系统调用记录为采用“pid”参数时,您应该不信任手册并进行更多研究。几乎所有这样的系统调用实际上都采用 tids。不幸的是,很多文档都是由不知道区别的人编写的......
-
非常感谢..我尝试了 TID 并且它有效!
标签: c memory-management pthreads system-calls numa