Linux kernel 在内核中的特定内核上调用指令

Linux kernel 在内核中的特定内核上调用指令,linux-kernel,Linux Kernel,我知道我可以使用smp\u call\u function\u single()[1]在Linux内核中的一组选定内核上调用函数 如果我只想在特定内核上执行一条指令,比如说rdmsr,该怎么办 我知道我可以把它包装成一个函数,但我认为它太昂贵了,因为我只执行一条指令 有人知道在Linux内核或Xen内核中是否可以调用特定内核上的指令吗 非常感谢你的帮助 [1] 您的程序的这一部分是否真的对性能至关重要(也就是说,您做了实验,发现这一部分是瓶颈)?如果没有,只需将指令包装到函数中即可。跨cpu交

我知道我可以使用
smp\u call\u function\u single()
[1]在Linux内核中的一组选定内核上调用函数

如果我只想在特定内核上执行一条指令,比如说
rdmsr
,该怎么办

我知道我可以把它包装成一个函数,但我认为它太昂贵了,因为我只执行一条指令

有人知道在Linux内核或Xen内核中是否可以调用特定内核上的指令吗

非常感谢你的帮助


[1]

您的程序的这一部分是否真的对性能至关重要(也就是说,您做了实验,发现这一部分是瓶颈)?如果没有,只需将指令包装到函数中即可。跨cpu交互比包装可能带来的性能损失要昂贵得多。从另一方面来说,包装到函数对于将来内核的更改是清晰而稳定的。@Tsyvarev,非常感谢您的回复!说得好!现在,它不在热门路径中。但是,我不确定是否将其移动到热路径,例如调度程序逻辑。所以我想知道这是否可能,如果可能的话,我想知道应该如何实现它。(我想获得更多的知识。;-)正如你所建议的,我现在把它封装在一个函数中。@Tsyvarev我不太明白为什么跨cpu交互要昂贵得多。你介意分享一些关于跨cpu交互的建议吗?非常感谢你!一个CPU无法直接强制另一个CPU执行某些操作。它唯一能做的就是将一些共享变量设置为回调函数,这样其他CPU将在某个时候检查该变量并调用该函数。但通过共享变量进行交互至少需要使用原子指令,而且这些指令比简单的函数调用成本要高得多。只有当此变量仅由所有者cpu写入时,每个cpu变量才有助于避免使用原子指令和内存障碍。若变量是由其他CPU编写的,它们将竞争此变量,并应使用一些同步来保留正确变量的值。