Ubuntu: forçando processos para swap, ou para RAM

1

Agora estou resolvendo o seguinte problema no Ubuntu: É possível especificar se um processo deve ser executado apenas na RAM (ou seja, não é permitido trocar) ou reversamente apenas na parte de troca? Quero dizer que o processo deve ser morto pelo sistema, em vez de usar o outro tipo de memória.

É importante para mim, porque devo comparar o tempo de execução de mais algoritmos e devo ter certeza de que todos os processos são executados na RAM ou na parte de troca.

    
por stanekr 08.01.2013 / 13:33

2 respostas

2

Não, a menos que um processo obtenha memória e vincule essa memória usando mlock , não há nenhuma maneira garantida de garantir que ela não vá para swap.

A troca é usada para páginas sujas anônimas. Ele não tem suporte ou fonte de sistema de arquivos fixos, então nenhum programa sempre pode iniciar a partir da troca.

E a menos que o aplicativo em sua chamada para obter memória, liga a memória usando mlock (), ele pode ir para trocar. Você pode tentar eliminar toda a teoria 'go-to-swap', não usando o arquivo de troca ou a partição swap, mas esse não é um caminho realmente recomendado.

    
por 14.01.2013 / 19:19
0

Pode não haver uma maneira confortável de eliminar um processo se ele alternar no momento. No entanto, deve ser bastante fácil escrever um minúsculo deamon. O que você script precisa fazer:

  1. determine todos os IDs de processo relevantes
  2. para cada um desses IDs, consulte / proc / $ {PROCESS_ID} / smaps para seus campos "Trocar":
  3. se a soma desses campos for > 0, mata o processo

Esta pode não ser uma boa solução, mas provavelmente é melhor que nada. Uma discussão relacionada pode ser encontrada em linuxquestions.org . Para monitorar manualmente os processos, você pode informar "top" para mostrar quanto de swap é usado (dentro do topo, pressione "f" e exiba o campo SWAP). hth

    
por 19.02.2013 / 13:54