Kernel - Medindo a taxa de interrupções temporizadas

3

Estou trabalhando na otimização dos kernels das minhas caixas para telefonia, o que envolve (entre outras coisas) o ajuste da taxa de HZ e do modelo de preempção.

Inicialmente, o kernel foi compilado com o padrão de 250 HZ e Preempção voluntária, e o cyclictest é atualmente mostrando uma latência máxima de 5859 , o que é bom, mas não é o ideal. Idealmente, eu gostaria de ter menos de 3000, e é por isso que decidi cavar mais fundo.

A coisa confusa é, no entanto, na tentativa de obter a freqüência de interrupção do temporizador real: quando eu faço

cat /proc/interrupts | grep LOC ; sleep 10; cat /proc/interrupts | grep LOC

Eu obtenho

LOC:        212        370         92         81   Local timer interrupts
LOC:        212        370         92         81   Local timer interrupts

E meus valores não mudam (acredito que a segunda linha deva ser incrementada em 250).

Além disso, quando tento medi-lo conforme descrito aqui , obtenho

kernel timer interrupt frequency is approx. 2518 Hz

Alguma idéia de como calculá-lo corretamente?

Talvez alguma outra sugestão sobre otimização de kernel para voz (RTC / SLAB / IO Scheduler)?

Atualização: Adicionando

CONFIG_HZ_1000=y
CONFIG_HZ=1000
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
CONFIG_DEBUG_PREEMPT=y

diminuiu minha latência para

T: 0 ( 4628) P:80 I:10000 C:   4059 Min:     13 Act:   33 Avg:   69 Max:    

3634

Ainda estou procurando maneiras de melhorar isso ...

    
por user3521621 21.08.2015 / 20:51

0 respostas