Eu estou supondo que a diferença está principalmente no fato de que o kernel do servidor não é preventivo, como é o kernel do desktop. Isso é um pouco complicado:
Aprimoramento significa chutar o processo A da CPU em favor do processo B, em termos simples. Os usuários finais esperam um sistema responsivo. Portanto, um desktop executará um kernel preventivo, que pode favorecer a interação do usuário acima dos programas em execução. Isso significa que o kernel pode "chutar" um programa em segundo plano, favorecendo um programa do usuário, concedendo-lhe tempo de execução na CPU, mesmo antes que o período de tempo do programa em segundo plano termine e antes que o programa em segundo plano forneça a CPU.
Um servidor, por outro lado, é construído para rodar alguns programas em segundo plano (como o Apache) e não para interagir com um usuário. Portanto, um servidor executará um kernel não preemptivo e, portanto, será otimizado para executar programas em segundo plano.
Você pode ler um pouco sobre a configuração do kernel do Ubuntu aqui . O artigo tem alguns anos, mas tenho certeza que o bit de preempção ainda é uma das maiores diferenças entre os kernels de desktop e servidores do Ubuntu. Outra diferença é a escolha do agendador de I / O: o servidor usa o agendador de prazos, o desktop o CFQ. Admito que tirei isso do artigo vinculado.
Quanto ao cache de disco, o Linux armazena em cache. Período. O Linux terá todo o prazer em usar all da sua RAM como cache de disco. Não importa se você tem 512MB de RAM ou 1GB de RAM: o Linux irá usá-lo se achar adequado. Não há ajustes disso que eu saiba.
Também saiba que não há desvantagem nisso: como seus programas exigem mais RAM, menos memória RAM será usada para o cache. O fato de sua VM ter apenas 256 MB e de que parte dela é usada como cache, não prejudicará o desempenho de seus programas: se os programas solicitarem RAM, eles a obterão instantaneamente, ao custo de ter menos cache. Isso é uma coisa boa TM . Novamente: a memória usada como cache ainda está disponível para seus aplicativos. Ele será recuperado instantaneamente e dado a um aplicativo que não consome memória, se o kernel achar apropriado. Rodar um kernel diferente não vai mudar isso.