flush
não é "coleta de lixo no kernel". Não tenho certeza de onde você leu, mas C não tem coletor de lixo. Não há gerenciamento automático de memória. Os programadores C precisam gerenciar suas próprias alocações de memória. Enfim ...
flush
é o processo que o subsistema de memória virtual usa para gravar páginas sujas no disco. Isso é chamado de pdflush
ou bdflush
nos kernels EL.
Quando você executa qualquer IO (não direto), o arquivo que você acessa vai para o pagecache. Se você ler um arquivo de texto do disco, esse arquivo de texto agora existe no disco e na memória cache. Se você fizer algumas alterações e salvar esse arquivo, a chamada real do sistema write()
feita pelo editor de texto será concluída com relação à cópia do arquivo na memória. Dessa forma, a chamada do sistema retorna rapidamente e seu editor de texto pode voltar a aceitar sua entrada, em vez de pausar enquanto grava dados no disco rígido (relativamente) lento. As páginas de memória que esse arquivo de texto modificado ocupa agora são chamadas de "páginas sujas". O kernel se preocupa em colocar o bloco real gravando no disco mais tarde, isso é chamado de "syncing" ou "flushing dirty pages".
Você esperaria ver um processo de flush obter alto uso da CPU, às vezes, porque o processo executará IO em disco e provavelmente gastará a maior parte do tempo no iowait.
Não há nada para se preocupar. Seu sistema está se comportando como qualquer outro sistema Linux.