O que você está vendo quando você reexecuta um comando du é o efeito do buffer do disco. Depois de ler um bloco, seu buffer de disco é mantido no cache de buffer até que esse bloco seja necessário. Para du você precisa ler o diretório e o inode para cada arquivo no diretório. Os du resultados não são armazenados em cache neste caso, mas podem ser derivados com muito menos disco IO.
Embora seja possível forçar o sistema a armazenar essas informações em cache, o desempenho geral sofreria, já que o espaço de buffer necessário não estaria disponível para arquivos acessados ativamente.
O próprio diretório não tem idéia de quão grande é um arquivo, portanto, o inode de cada arquivo precisa ser acessado. Para manter o valor em cache atualizado sempre que um arquivo mudasse de tamanho, o valor armazenado em cache precisaria ser atualizado. Como um arquivo pode ser listado em 0 ou mais diretórios, isso exigiria que o inode de cada arquivo saiba em quais diretórios ele está listado. Isso complicaria muito a estrutura do inode e reduziria o desempenho do I / O. Também como du permite obter resultados assumindo diferentes tamanhos de bloco, os dados requeridos no cache precisariam incrementar ou decrementar o valor em cache para cada tamanho de bloco possível, reduzindo ainda mais o desempenho.