Por algum motivo, quero que 10 processos compartilhem o mesmo núcleo de CPU por afinidade.
Como você sabe, para conseguir o compartilhamento de CPU entre processos, podemos explorar a política de escalonamento do Linux round robin (RR).
Para o kernel Linux 3.9 e posterior, o intervalo de agendamento RR pode ser definido alterando o arquivo /proc/sys/kernle/sched_rr_timeslice_ms
. O intervalo de agendamento RR padrão é de 100 ms.
Minhas perguntas são:
Eu quero que o intervalo de agendamento de RR seja 100µs, ou seja, um processo é executado por um período de 100µs, então outro processo é executado. Mas eu não consegui definir o /proc/sys/kernle/sched_rr_timeslice_ms
com um valor inferior a 1 ms. Gostaria de saber se o intervalo mínimo de agendamento RR suportado pelo kernel atual do Linux é de 1 ms.
Alguém sabe qual intervalo mínimo de agendamento RR é suportado pelo Windriver Linux? Como o Windriver Linux é amplamente utilizado para sistemas embarcados, o que requer um bom desempenho em tempo real do SO.
Gostaria de saber se posso ter todos os 10 processos a serem executados pelo menos uma vez dentro de 1 ms usando o mutex. Ou seja, um processo é executado por 100µs e, em seguida, desbloqueia o mutex para que outro processo possa ser bloqueado e executado. Esse mecanismo funciona?
Se o método mencionado acima não funcionar, e se os 10 processos forem alterados para 10 segmentos. Existe algum mecanismo de chave de alta eficiência disponível?
Tags linux-kernel scheduling