A única coisa que consigo pensar é inspecionar o que o mysqld está realmente fazendo usando strace, como usuário root:
strace -p 2959
Normalmente, o strace deve bloquear imediatamente e mostrar uma chamada para select(), porque o mysqld deve estar esperando por conexões.
A chamada deve ser algo como:
select(SOCKETNO, [OTHER_FDs], NULL, NULL, NULL)
especialmente importante é o quarto parâmetro, que é um timeval de tempo limite. Se for NULL, significa que o mysqld irá dormir até que alguém se conecte. Se não for NULL, significa que o mysqld aguardará o tempo especificado e então fará algum trabalho de manutenção. Um timeval muito pequeno pode explicar o consumo de CPU.
Eu acredito que o MySQL sempre emprega um tempo limite NULL (infinito). Faz sentido e é assim que os mysqlds que consigo acessar agora estão se comportando.
No entanto, pode haver alguns problemas de manipulação de conexão que impedem o select de dormir novamente. Verifique se este comportamento aparece assim que o mysqld é iniciado ou depois que alguém se conecta.