CentOS 7 lento – CPU Governor

Recentemente um cliente instalou um novo servidor, com tudo do bom e do melhor em termos de hardware, incluindo RAID 10 em SSD.

O Sistema Operacional escolhido foi CentOS 7, para MySQL 5.7, tudo atualizado. Mas mesmo a aplicação sendo a mesma, o desempenho estava sofrível, muito pior do que no servidor antigo.

E qual o sintoma? O MySQL estava cheio de Thread States (as “esperas” do MySQL, que aparecem com o comando SHOW PROCESSLIST), mas todos os recursos do Sistema Operacional estavam sobrando, incluindo CPU. Na maior parte do tempo o uso de CPU estava baixo, e de repente subia, e depois descia de novo. Este padrão se repetia o tempo todo.

Então descobri que a configuração padrão das CPUs no CentOS (que não é o padrão do Oracle Enterprise Linux, não sei qual é o padrão do Red Hat Enterprise Linux) é para economizar energia.

Bem, dane-se a energia.

[root@ServidorDoCliente ~]# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
conservative
[root@ServidorDoCliente ~]# cat /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor
conservative
[root@ServidorDoCliente ~]# man cpupower
[root@ServidorDoCliente ~]# cpupower frequency-set -g performance
Setting cpu: 0
Setting cpu: 1
Setting cpu: 2
Setting cpu: 3
Setting cpu: 4
Setting cpu: 5
Setting cpu: 6
Setting cpu: 7
Setting cpu: 8
Setting cpu: 9
Setting cpu: 10
Setting cpu: 11
Setting cpu: 12
Setting cpu: 13
Setting cpu: 14
Setting cpu: 15
Setting cpu: 16
Setting cpu: 17
Setting cpu: 18
Setting cpu: 19
Setting cpu: 20
Setting cpu: 21
Setting cpu: 22
Setting cpu: 23
Setting cpu: 24
Setting cpu: 25
Setting cpu: 26
Setting cpu: 27
Setting cpu: 28
Setting cpu: 29
Setting cpu: 30
Setting cpu: 31
Setting cpu: 32
Setting cpu: 33
Setting cpu: 34
Setting cpu: 35
Setting cpu: 36
Setting cpu: 37
Setting cpu: 38
Setting cpu: 39
[root@ServidorDoCliente ~]# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
performance
[root@ServidorDoCliente ~]#

Esta configuração também é alterada automaticamente com o profile throughput-performance do tuned, e dessa forma persiste após o reboot.

[root@ServidorDoCliente ~]# yum -y install tuned
...
Complete!
[root@ServidorDoCliente ~]# tuned-adm active
Current active profile: virtual-guest
[root@ServidorDoCliente ~]# tuned-adm list
Available profiles:
- balanced - General non-specialized tuned profile
- desktop - Optimize for the desktop use-case
- latency-performance - Optimize for deterministic performance at the cost of increased power consumption
- network-latency - Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
- network-throughput - Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
- powersave - Optimize for low power consumption
- throughput-performance - Broadly applicable tuning that provides excellent performance across a variety of common server workloads
- virtual-guest - Optimize for running inside a virtual guest
- virtual-host - Optimize for running KVM guests
Current active profile: virtual-guest
[root@ServidorDoCliente ~]# tuned-adm profile throughput-performance
[root@ServidorDoCliente ~]# tuned-adm active
Current active profile: throughput-performance
[root@ServidorDoCliente ~]#

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.