Mudando a Prioridade do Processo VKTM no Oracle 11G R2
Fala Pessoal,
Tive um problema recente com o processo VKTM em um ambiente linux(RED HAT) virtualizado.
Esse Processo tem a seguinte descrição segundo a documentação:
VKTM is responsible for providing centralized time tracking
• wall-clock time (updated every second)
• reference-time counter (updated every 20 ms)
Ele é utilizado pelo scheduler.
Porém ele tem um consumo altíssimo de CPU .
No meu ambiente ele consumia 13% de CPU
13.2 19414 oracle ora_vktm_opscgold RR
Dando um trace no processo verifiquei que ele chama a função gettimeofday mais de 100 vezes por segundo.
[root@orarac1 ~]# strace -p 6723
Process 6723 attached - interrupt to quit
gettimeofday({1323711237, 10495}, NULL) = 0
gettimeofday({1323711237, 10555}, NULL) = 0
nanosleep({0, 10000000}, {1323711237, 10495}) = 0
gettimeofday({1323711237, 21947}, NULL) = 0
gettimeofday({1323711237, 21999}, NULL) = 0
nanosleep({0, 10000000}, {1323711237, 21947}) = 0
Estudando mais afundo verifiquei que esse processo(VKTM) e o (LMS) são os únicos que rodam em RR (Roud Robin) alta prioridade de CPU , comentando tambem pelo kerry osborne
Esse processo estava realmente prejudicando a performance do ambiente e como era um ambiente de teste no meu caso foi melhor diminuir a prioridade dele e colocalo em TS (SCHED_NORMAL) .
Para mudar a prioridade de um processo basta alterar o parâmetro não documentado.
_high_priority_processes
Então alterei meu ambiente da seguinte forma
alter system set "_high_priority_processes"='LMS*' scope=spfile;
Após isso o consumo de CPU caiu drasticamente, porém é valido ressaltar que essa mudança provavelmente ira causar problemas no scheduler e algumas outras anomalias.
Mas no meu caso, no meu ambiente foi melhor assim, já passou 2 meses e a melhora foi significativa.
Abraços !!