struct task_struct 中的 Linux 内核 NUMA 相关变量

Posted

技术标签:

【中文标题】struct task_struct 中的 Linux 内核 NUMA 相关变量【英文标题】:Linux Kernel NUMA related variable in struct task_struct 【发布时间】:2016-11-12 09:54:33 【问题描述】:

之前,感谢您观看并回答我的问题。

我专门看linux内核的代码,linux/kernel/kthread.c

在文件中,有一个函数 tsk_fork_get_node 如下

/* called from do_fork() to get node information for about to be created task */
int tsk_fork_get_node(struct task_struct *tsk)

#ifdef CONFIG_NUMA
    if (tsk == kthreadd_task)
        return tsk->pref_node_fork;
#endif
    return NUMA_NO_NODE;

我找不到 pref_node_fork 变量的确切含义。我想知道它的全名。

我还找到了补丁(提交 id 207205a2ba,带有“git show 207205a2ba”)

但是task_struct中的pref_node_fork变量没有解释。

总结:

    我想知道pref_node_fork变量的确切含义。

    我想知道pref_node_fork变量的全名。

【问题讨论】:

【参考方案1】:

我不知道这里有什么问题。提交消息清楚地表明它扩展了 API,以便在生成新的内核线程时,您可以知道应该使用哪个 numa 域。然后我们可以看到它是通过 perf_node_fork 字段偷偷节点参数并在 tsk_fork_get_node 的 fork 上使用它来完成的。

我不得不问你为什么要查看这段代码。

【讨论】:

我不需要任何修复的东西。我只是质疑 tsk_fork_get_node 变量的含义。我只是逐行阅读linux内核源代码。并且路径的作者只是清楚地解释了除了'tsk_fork_get_node'之外的其他东西 逐行阅读是错误的。相反,您应该了解整个内核使用的通用习惯用法,为此您应该坚持使用简单的子系统。 我正在和其他人一起学习。不是一个人。我们一行一行地看代码,并就行的含义相互交流。我明白你在说什么,但它也有助于理解内核的整体含义。我的意思是整体概念而不是子系统的例程

以上是关于struct task_struct 中的 Linux 内核 NUMA 相关变量的主要内容,如果未能解决你的问题,请参考以下文章

流程控制块,Linux中的流程描述符和task_struct?

如何通过 linux 最新内核中的“thread_info”访问“task_struct”?

Linux(内核剖析):04---进程之struct task_struct进程描述符任务结构介绍

循环遍历内核空间中的链表

Linux 内核进程管理 task_struct 结构体 ① ( task_struct 结构体引入 | task_struct 代码示例 )

PCB之task_struct结构体