Mover o aplicativo explicitamente para trocar

1

É possível em sistemas Linux / Unix, mover um processo explicitamente para a troca de memória? Eu investiguei swap* tools e kill , mas eles não podem fazer o que eu quiser.

Exemplo : O processo FOO está atualmente em execução e quero iniciar outro processo BAR que não se ajustará à RAM e, portanto, será trocado. Gostaria de preferir BAR para ser executado mais rapidamente por enquanto, então quero que FOO seja movido para o espaço de troca primeiro e depois execute BAR . Depois que BAR sair, eu gostaria de remover o FOO .

    
por Tik0 09.09.2017 / 16:26

1 resposta

2

Não estou ciente de nenhuma maneira de solicitar que uma parte específica da memória seja movida para swap no Linux. No entanto, o contrário é possível. Você pode pré-carregar explicitamente os arquivos usados pelo BAR para armazenar em cache simplesmente executando cat /path/to/file >/dev/null .

Se o BAR já estiver em execução e parcialmente trocado, no Linux, você pode organizar o carregamento de suas páginas lendo /proc/BAR_PID/mem . Veja Como eu leio em / proc / $ pid / mem no Linux?

Além disso, se você quiser disponibilizar alguma memória para o consumo rápido do BAR, você pode iniciar um programa que alocará muita memória. Isso não é ideal porque o kernel pode decidir trocar algum outro processo ou remover arquivos úteis do cache de disco. Para obter melhores resultados, faça isso antes de trocar qualquer coisa que você queira explicitamente trocar e suspenda FOO ( kill -STOP FOO_PID ). perl -e '$a = "a" x 1234567' aloca cerca de 2 × 1234567 bytes de memória mais alteração.

    
por 09.09.2017 / 17:08