Reduzindo a frequência de interrupção do temporizador do kernel

1

Quando eu executo minha máquina virtual com o Gentoo como guest, descobri que existe uma sobrecarga considerável proveniente da função tick_periodic (esta é a função que é executada em cada interrupção de timer) .Esta função atualiza um jiffy global usando write_seqlocks que leva para o overhead.

Aqui está um grep de HZ e coisas relevantes no meu arquivo de configuração.

sharan013@sitmac4:~$ cat /boot/config | egrep 'HZ|TIME'
# CONFIG_RCU_FAST_NO_HZ is not set
CONFIG_NO_HZ=y
# CONFIG_HZ_100 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_300 is not set
CONFIG_HZ_1000=y
CONFIG_HZ=1000
# CONFIG_MACHZ_WDT is not set
CONFIG_TIMERFD=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_X86_CYCLONE_TIMER=y
CONFIG_HPET_TIMER=y

É evidente que definiu a configuração para 1000, mas quando eu faço sysconf(_SC_CLK_TCK) recebo 100 como a frequência do meu temporizador. Então, qual é a frequência do temporizador do meu sistema?

O que eu quero fazer é diminuir a frequência para 100, ainda mais baixo, se possível. Embora possa afetar a interatividade e a precisão do intervalo de tempo de poll / select e schedulers, estou pronto para sacrificar essas coisas por uma menor interrupção do timer como vai acelerar a VM.
Quando eu tentei descobrir o que tem que ser feito eu li em algum lugar que você pode fazer isso mudando no arquivo de configuração, mais onde eu li que adicionando divisor = 10 para o parâmetro de inicialização faz o trabalho, senão onde eu li que nada disso é necessário se você puder definir o (CONFIG_HIGH_RES_TIMERS) para obter temporizadores de baixa latência mesmo sem aumentar a frequência do temporizador e o mesmo é possível com um sistema sem ticks CONFIG_NO_HZ .
Estou excessivamente confuso sobre qual é a abordagem correta.
Tudo que eu quero é reduzir a interrupção do temporizador para o mais baixo possível. Posso saber o jeito certo de fazer isso?

Obrigado Sharan

    
por Deepthought 18.02.2013 / 19:22

0 respostas

Tags