Isolar o módulo do kernel em um núcleo específico usando o Cpuset
No espaço do usuário, podemos usarcpuset para realmenteisolar um núcleo específico em nosso sistema e execute apenas um processo específico para esse núcleo.
Estou tentando fazer a mesma coisa com um módulo do kernel. Então, eu quero que o módulo seja executado em um núcleo isolado. Em outras palavras:Como usocpuset
é de dentro de um módulo do kernel? *
Usandolinux / cpuset.h no meu módulo do kernel não funciona. Então, eu tenho um módulo como este:
#include <linux/module.h>
#include <linux/cpuset.h>
...
#ifdef CONFIG_CPUSETS
printk(KERN_INFO, "cpusets is enabled!");
#endif
cpuset_init(); // this function is declared in cpuset.h
...
Ao tentar carregar este módulo, recebo (emdmesg
) a seguinte mensagemcpusets is enabled!
. Mas eu também recebo a mensagemUnknown symbol cpu_init (err 0)
.
Da mesma forma, tentei usarsched_setaffinity
delinux/sched.h
para mover todo o processo em execução, ses para um núcleo específico e, em seguida, execute meu módulo para um núcleo isolado. Eu recebi a mesma mensagem de erro:Unknown symbol sched_setaffinity (err 0)
. Acho que recebi os "símbolos desconhecidos" porque essas funções não têmEXPORT_SYMBOL
no kernel. Então eu fui e tentei ligar para osys_sched_setaffinity
chamada do sistema (com base nissoPergunta, questão), mas novamente recebi esta mensagem:Unknown symbol sys_sched_setaffinity (err 0)
!
Além disso, não estou procurando uma solução que useisolcpus
, que é definido durante a inicialização. Gostaria apenas de carregar o módulo e depois o isolamento para ocorrer.