Como controlar o uso de RAM / swap


18

Existe uma maneira (aplicativo) de controlar a política de uso de RAM / swap no nível do aplicativo.

Eu tenho alguns aplicativos que eu uso o tempo todo e quero que eles permaneçam na RAM o tempo todo e também há aplicativos que eu uso muito raramente, e eles podem ser lançados para serem trocados por demanda. Sei que as janelas configuradas padrão devem me proporcionar o melhor desempenho, mas quero verificar se consigo mais :).

Eu uso o Windows 7.


2
+1. Estou interessado em um método que funcione para o XP.
Xavierjazz 24/01

Respostas:


9

Sim, existe: faça o programa chamar a função VirtualLock :

As páginas bloqueadas por um processo permanecem na memória física até que o processo as desbloqueie ou termine. É garantido que essas páginas não sejam gravadas no arquivo de paginação enquanto estiverem bloqueadas.

Acredito que a função SetProcessWorkingSetSize também possa ser útil.


Para aquelas pessoas que pensam que sou herege por sugerir que isso pode ser útil:

Observe que existem motivos válidos para bloquear páginas na memória. Um motivo válido pode ser o fato de o usuário estar executando um gravador de CD, e o gravador de CD constantemente sai da página e, portanto, causa uma falha no buffer, criando uma montanha-russa. Nessa situação, seria válido bloquear os buffers de memória para que eles não sejam paginados, mesmo que isso signifique que o resto do computador diminua para um rastreamento, porque isso ainda é melhor do que oferecer ao usuário uma porta-copos. Também pode haver outros motivos válidos - o que quero dizer é que, embora geralmente não seja recomendado bloquear páginas na memória, situações válidas ainda existem, e eu não acho que matar a ideia ajudaria o OP aqui.


Update: Dê uma olhada em Process Hacker 's Reduce Working Setopção de menu.


Talvez citar este trecho do artigo o contextualize: "O bloqueio de páginas na memória pode prejudicar o desempenho do sistema, reduzindo a RAM disponível e forçando o sistema a trocar outras páginas críticas pelo arquivo de paginação. Cada versão do Windows possui um limite para o número máximo de páginas que um processo pode bloquear. Esse limite é intencionalmente pequeno para evitar uma grave degradação do desempenho ". (Minha ênfase)

11
@ Randolph: Eu nunca o recomendei , apenas mencionei que, ao contrário do que a maioria das pessoas parece pensar, é possível . Pessoalmente, odeio dizer ao OP "Vamos matar sua idéia" - acho que o OP entendeu que ele não deveria fazer isso, mas se ele ainda quiser, acho que tem o direito de saber como fazê-lo. (Há uma razão eles criaram essas funções, e eu não sou a pessoa para julgar se o OP deve usá-los ou não.)
Mehrdad

Há muito código no Windows que foi deixado para compatibilidade com versões anteriores. Se há uma razão para tê-lo, seria isso. Pode-se compará-lo ao recurso Encolher do SQL Server, que não deve ser usado sob nenhuma circunstância, mas foi deixado por motivos de compatibilidade. O Windows 7 é um sistema operacional moderno com gerenciamento de memória adequado, e o arquivo de paginação não deve ser excluído, nem os programas devem tentar ficar na memória fora das "regras". É uma prática muito ruim e pode resultar em um sistema instável e / ou inutilizável.

11
@ Randolph: (vejo que você abandonou a analogia.:]) Faça um pequeno programa (não deve ter mais do que ~ 10 linhas) para abrir o outro processo e ligar SetProcessWorkingSetSize. Essa é uma maneira. Se é claro, se você não sabe o que isso significa, porque você não é um desenvolvedor, obviamente não há muito o que fazer. Mas ainda é possível, e dizer que é impossível ainda está incorreto, apenas requer mais conhecimento do que o OP pode ter.
21711 Mehrdad

11
@ Randolph, você pode baixar vários aplicativos freeware que forçam os aplicativos em execução a irem para o arquivo de paginação (chamando SetProcessWorkingSetSize em cada processo).
19411 Chris O

5

A única maneira que encontrei é desativar o arquivo de paginação. No entanto, não é uma solução perfeita: você receberá mensagens de erro se ultrapassar ou ultrapassar o seu limite de RAM, e ele pode não salvar os despejos de memória corretamente, então ligue-o novamente se precisar solucionar problemas. Fora isso, uso o Win7 sem arquivo de paginação há meses sem problemas.

Minha experiência: eu tive esse problema com um software de piano (uso de 1 GB de RAM) que seria trocado depois de não ser usado por um tempo. Tocar uma tecla de piano algumas horas depois resultaria em uma confusão confusa, pois a troca não seria recarregada com rapidez suficiente para o som tocar. (Eu colocaria meu braço inteiro em todas as teclas para forçar uma recarga!)

Se a RAM é uma preocupação, sugiro que você compre mais (por exemplo, 8 a 12 GB no Windows 7 x64). Para os que têm consciência da RAM, ter bastante RAM é uma dádiva de Deus.

Mas antes, considere adquirir uma unidade SSD e colocar sua troca nela. Isso acelerará bastante a recuperação de troca, além de oferecer muitos outros benefícios do sistema. A RAM não oferece benefícios quando não está em uso.


3
Faz. Não. Excluir. O. Página. Arquivo. Sempre.

7
Eu tenho. Fui. Usando. Win7. Com. Não. Arquivo de paginação. Para. Meses. Sem. A. Hitch.
Mck

11
Eu também uso Win7 sem arquivo de página o tempo todo, no entanto, parece-me que isso pode não ser suficiente para o meu trabalho atual :(
Darqer

3
@ Randolph: A MS sabe do que está falando, porque sabe que seus clientes nem sempre são profissionais de informática. Mas para aquelas pessoas que realmente sabem exatamente o que o arquivo de paginação faz e o que não faz, não há razão para forçá-las a uma prática que não precisam.
21411 Mehrdad

2
@ Randolph: Se você ultrapassar o limite de velocidade sem cinto de segurança, poderá morrer e também matar outras pessoas, sem mencionar o aumento dos custos de seguro para outras pessoas. O pior que pode acontecer se o computador esgotar a memória é que você perderá um pouco de tempo, dependendo da situação. Você não vê algo um pouco (leia-se muito) errado com a analogia aqui? Além disso, você já usou Linux / Unix? Já reparou como eles oferecem corda mais do que suficiente para você se enforcar, ao contrário do Windows? As pessoas ainda as usam - é como dirigir sob influência ou algo assim?
Mehrdad

2

O uso do arquivo de paginação depende de vários fatores. Se você usa muitos programas e não tem RAM suficiente para todos eles ao mesmo tempo, partes deles (ou todos) podem ser trocados para o arquivo de paginação.

Se você possui 4 GB de RAM e, digamos, cerca de 3 GB estão disponíveis devido a placas de vídeo e outros usuários de recursos bloquearem partes dos 4 GB, e você usa apenas alguns programas que não ocupam muita memória, teoricamente você nunca deve precisar de um arquivo de troca. No entanto, o Windows Vista e o 7 são notoriamente agressivos na troca de programas para o disco.

Eu costumava ter uma configuração que reduzia a alternância do Windows 7 (alternância é um termo do Linux, mas também se aplica ao Windows) e, como existe uma configuração de registro para domesticar a agressividade de troca do Windows, parece que a Microsoft concorda de má vontade, embora de uma maneira boa. maneira oculta), mas não consigo mais encontrá-lo. Procurando por isso, acabei aqui. A melhor alternativa para essa configuração que encontrei é garantir que você use um arquivo de troca de tamanho fixo (eu uso 4096-4096 em sistemas operacionais de 32 bits e 12 GB em sistemas operacionais de 64 bits, pois tenho 6 GB de RAM do sistema) em uma partição dedicada. Tendo uma unidade sobressalente de 7200 rpm e 200 GB, coloco todas as minhas partições de troca (Windows XP, 7, 7 de 64 bits e vários Linux) nesta unidade. Parece funcionar para mim, mas YMMV.


1

Vale ressaltar: quando o Windows detecta que você está usando freqüentemente determinados aplicativos, o superpetch coloca esses aplicativos na memória para que eles sejam carregados mais rapidamente. Penso que confie no Windows para fazer as suas coisas aqui.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.