Ubuntu e o tal boot com "concurrency"
Como ativar todos os núcleos do seu processador no boot do Ubuntu (Diolinux)
O mau cheiroso script
Mask /etc/init.d/rc and /etc/init.d/rcS from initscripts
Trata-se de entulho remanescente do tempo das cavernas.
Rode aí:
(Ubuntu 16.04)
Um serviço
Tem influência no desempenho o serviço
On Ubuntu, provide an "ondemand.service" that replaces /etc/init.d/ondemand
O shell script
Quanto ao número de núcleos ativos, não há nada a fazer. O kernel ativa todos, a menos que passemos a opção de boot
Resumo: ao que tudo indica, a tal configuração milagrosa não tem efeito algum.
[1]
O mau cheiroso script
/etc/init.d/rc
nem é executado no boot:Mask /etc/init.d/rc and /etc/init.d/rcS from initscripts
Trata-se de entulho remanescente do tempo das cavernas.
Rode aí:
(Ubuntu 16.04)
$ systemctl is-enabled rc.service masked
Um serviço
masked
está super ultra desabilitado.Tem influência no desempenho o serviço
ondemand.service
. Por padrão, o kernel do Ubuntu configura o escalonador de frequência de todos os núcleos com performance
[1], que os mantêm sempre na frequência máxima nominal — faz sentido durante o boot, para usar ao máximo o hardware, sem preocupar-se com consumo elétrico. O serviço, depois de 60 segundos, altera todos os núcleos para ondemand
, com objetivo de aproveitar os recursos SpeedStep, Cool'n'Quiet e similares. Até o Ubuntu 16.04, esse serviço é na verdade um script SysV (/etc/init.d/ondemand
), suportado pelo systemd através do sysv-generator. No futuro Ubuntu 16.10, será um pouco diferente:On Ubuntu, provide an "ondemand.service" that replaces /etc/init.d/ondemand
O shell script
/lib/systemd/set-cpufreq
é chamado através de um arquivo .service nativo, Type=idle
, executado pelo systemd quando não houver mais unidades pendentes, em outras palavras, no final do boot. Outra mudança é que, ao ser detectado o uso do driver intel_pstate
, o script não mexe no escalonador e mantém performance
. Esse driver funciona de forma diferente do acpi-cpufreq
e powernow-k8
e com ele não é recomendado usar ondemand
(bons dados vindos do pessoal da Canonical podem ser obtidos aqui).Quanto ao número de núcleos ativos, não há nada a fazer. O kernel ativa todos, a menos que passemos a opção de boot
maxcpus=<número>
. A saída de lscpu
diz quantos núcleos estão ativos ("On-line CPU(s) list"). É uma maneira amigável de mostrar o que está em /sys/devices/system/cpu/online
.Resumo: ao que tudo indica, a tal configuração milagrosa não tem efeito algum.
[1]
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
.
Parabens !
ResponderExcluir