Alguns anos atrás, nós tínhamos uma máquina que fazia a mesma coisa. Era como se fosse um décimo da velocidade real do relógio. Quando usamos o kernel de recuperação, foi bom e rápido, mas só reconheceu 1GB de memória. Depois de compilar muitos kernels e tentar todo tipo de coisa, acabamos descobrindo o verdadeiro problema: há um bug em alguns chipsets intel onde um pedaço de memória muito lenta no topo não está mapeado corretamente, e é claro que é aqui que o kernel é carregado, então a lentidão foi porque o kernel foi carregado em um ram muito lento.
A correção foi passar o parâmetro mem = boot e sacrificar 100MB ou RAM no topo. Também foi por isso que o kernel de recuperação funcionou tão bem, que carregou o kernel abaixo de 1GB e evitou esse bloco de memória.