Como dizer ao Linux para trocar explicitamente a memória principal de um processo suspenso?

6

Eu corro um processo que consome memória ( mkcromfs ) que consome mais memória do que eu tenho em meu latop, então é paginação e swappin e thrashing o tempo todo e loadavg é cerca de 2 ( compcache já está em uso com a habitual partição swap também), mas avançando lentamente (embora eu tenha medo que ele finalmente tente alocar > 2GB e travar a drenagem de 2 dias de thrashing).

Quando quero usar o laptop para outra coisa, paro o processo, inicio o servidor X, o firefox e outros programas. O problema é que quando eu inicio o Firefox o loadavg pula para 10 e o sistema quase não responde (tempo para ligar / desligar o caps lock, atualizações lentas da posição do cursor do mouse, mudança lenta do servidor X para o console Linux, login lento) .

O mkcromfs parado ainda possui muita memória (464,8 MiB e cai lentamente) e o move para trocar somente quando mais memória é necessária para algum outro programa, o que resulta em uma grande lentidão.

Como dizer ao Linux para trocar este processo inteiramente (por exemplo, eu não pretendo resumi-lo em curto prazo), possivelmente despertando do swap de outros dados? Também será útil poder especificar o dispositivo de troca exato para trocar o processo dado (por exemplo, a memória de mkcromfs é inútil em ramzswap).

Atualização: agora só escrevo 400 a 600 milhões de dados de /dev/erandom para tmpfs e isso faz com que mkcromfs diminua. Existe uma maneira mais adequada?

    
por Vi. 07.04.2010 / 15:42

1 resposta

1

Você pode tentar jogar com o parâmetro sysctl "swappiness" ... IIRC quanto maior o valor, mais "provável a troca" é. Dê uma olhada aqui

    
por 07.04.2010 / 16:52