
Eu estava executando um sistema de demonstração no Linux com o seguinte kernel:
2.6.32-400.1.1.el5uek #1 SMP Seg, 25 de junho 20:25:08 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux
E assim que a troca acontece, o uso da CPU no sistema chega a quase 100% ocupado, entre os quais cerca de 90% é o uso da CPU do sistema. Disseram-me que isso é esperado porque o daemon da página do Linux entra em ação e começa a gravar o pedaço de memória para trocar apenas quando fica sem memória (ou a memória livre é inferior a 0,5 G), o que resulta em muito uso da CPU do sistema. "swappiness" é 60 no sistema.
É esperado que o uso da CPU chegue a 100% quando a troca acontece no Linux?
A razão pela qual tive a pergunta acima é que o comportamento acima mudou quando migro a demonstração para outro sistema com o seguinte kernel Linux:
2.6.39-400.128.14.el5uek #1 SMP Sábado, 10 de maio, 00:06:52 PDT 2014 x86_64 x86_64 x86_64 GNU/Linux
A única diferença do parâmetro vm no sistema migrado que notei é o parâmetro min_free_kbytes, alterado para 524288 no sistema migrado versus 51200 no sistema pré-migrado.
No sistema migrado, quando a memória livre atinge menos de 1,5G, ocorre a troca, então o uso da CPU sobe um pouco, algo como 30% a 40%, e o desempenho da aplicação fica irregular apenas por um curto período e depois tudo volta ao normal como antes da troca acontecer.
O que faz com que o sistema migrado se comporte tão diferente que o uso da CPU não chegue a 100% ocupado quando a troca ocorrer?
É um sistema de demonstração muito importante e a explicação das duas questões acima será muito útil. Qualquer ideia será muito apreciada.