Bancos de dados (bem, 99% deles) armazenam em cache tudo o que podem. Cache é bom. Isso torna as coisas mais rápidas. Você deseja que seu servidor de banco de dados consuma toda a memória possível e nunca o libere, a menos que seja necessário.
Ele não armazenará coisas em cache, a menos que você solicite (como em uma consulta). Talvez existam ferramentas para fazer os dados pré-cache do MySQL, mas não tenho ideia. Novos produtos de banco de dados estão começando a receber muitos recursos na memória, onde você pode selecionar certos dados para sempre estarem presentes na memória.
O uso da CPU não se correlaciona ao uso de RAM. Suas consultas podem ser extremamente leves, como apenas SELECTES detalhados que atingem um índice todas as vezes. Em outras palavras, o banco de dados servirá dados armazenados em cache que residem na RAM, portanto, haveria muito pouco trabalho de CPU a ser feito (como o agendamento de E / S para recuperar e processar dados do disco).
Para mim, isso parece um banco de dados muito saudável e rápido. Realmente não há problemas em tudo. Se você tem memória livre, isso significa que o banco de dados não precisa armazenar mais dados em cache, pois nunca é solicitado.
EDIT: Você limitou o pool InnoDB a 24 GB, o que é excelente, já que seu banco de dados é de 20 GB. Se o banco de dados aumentar, tome cuidado para aumentar o tamanho do buffer pool. Você também menciona que está preocupado com a diminuição da memória disponível - isso só deve ser uma preocupação se outros processos que o banco de dados estiverem consumindo. O servidor de banco de dados não crescerá além do que você limitou.