segunda-feira, 10 de setembro de 2012

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 !!