O computador não usa mais de 4 dos meus 8 GB de RAM…? (Computador de 64 bits)

17

Recentemente, para testar meu computador no futuro, adicionei mais de 4 GB de memória original. Eu trouxe a memória total para 8GB, e não tenho nenhuma mudança perceptível na velocidade - mesmo quando deveria. Fui ver o Gerenciador de Tarefas e vi que meu computador NÃO passava de 4 GB de memória sendo usado, mesmo com o Chrome e o Firefox abertos com 20 guias cada.

Depois de pesquisar, tudo que todos sugeriram que fizesse era verificar o quanto de memória era utilizável. Por incrível que pareça, ele diz que eu tenho 8GB de memória, e 7.74GB é usável.

As especificações do meu HP Pavilion g7-1075dx podem ser encontradas aqui. É um notebook com o Windows 7 Home Premium de 64 bits com o AMD Phenom II.

Minha principal questão é: com meu computador de 64 bits, por que meu computador não usa mais de 4 GB de memória, mesmo quando mais de 7 é utilizável?

EDIT: se ajudar, o Monitor de Recursos descreve todas as outras RAM como "Standby"

    
por mattycfp 01.09.2015 / 00:33

7 respostas

27

if it helps, Resource Monitor describes all the other RAM as "Standby"

"Standby" RAM é em uso. Ele está sendo usado como um cache de páginas (ele armazena páginas perdidas recentemente de todos os conjuntos de trabalho do processo; isto é, falhas de páginas para esses problemas podem ser resolvidos sem ir ao disco) e também para o cache proativo de arquivos pelo SuperFetch.

Ele é considerado "disponível" porque as páginas em espera não precisam ser gravadas no disco antes de poderem ser atribuídas a outro uso. Por exemplo, quando um processo atinge uma falha de página que exige a leitura do disco, novas páginas físicas devem ser alocadas para esse processo e, se necessário, podem ser tiradas da lista de espera. (Esta não é a primeira escolha para encontrar páginas para este fim, que seria a lista de páginas livre e, em seguida, a zero.)

Em outras palavras, seu sistema está funcionando como deveria.

Você pode forçar seu sistema a obter mais RAM no estado "em uso" facilmente com a ferramenta de linha de comando testlimit , uma das ferramentas usadas nos experimentos do Windows Internals . Não faz parte das ferramentas regulares do sistema, mas está associado a elas; encontre aqui no site da sysinternals. O download é um arquivo zip que contém duas versões, testlimit.exe e testlimit64.exe. Ambos estão vinculados a endereços grandes, portanto, a versão de 32 bits poderá alocar até 3 GiB em uma máquina de 32 bits inicializada com / 3GB, até 4 GiB em uma máquina de 64 bits.

c:\> testlimit -? dá ajuda.

c:\> testlimit -d 4 -c 512 tentará alocar 2 GiB de espaço de endereço virtual de processo privado em 512 alocações de 4 MiB cada. Isso deve funcionar bem em uma máquina de 64 bits. Em uma máquina de 32 bits não inicializada com / 3GB (a maioria não é), pode ser um erro antes b / c já há algumas MiB de coisas no processo (como o próprio programa, todo o DLLs, etc.), portanto, não há um total de 2 GiB disponíveis para o programa alocar.

Em ambos os casos, haverá uma redução na RAM "disponível" e um aumento na RAM "Em uso", mas não necessariamente em 2 GiB porque não há garantia de que o SO irá sair todos os 2 GiB no processo conjunto de trabalho privado. Mesmo que isso aconteça a curto prazo, você pode ver o conjunto de trabalho do processo diminuir mais tarde, à medida que o sistema operacional decide "hm, você não está realmente fazendo nada com ele, outros processos precisam mais" e o exibe.

Aumente demais o tamanho da alocação, reduzindo o número de trechos de acordo e provavelmente ele falhará mais cedo, pois cada alocação deve ser virtualmente contígua. por exemplo. tente encontrar sete blocos de 512 MiB em um espaço de endereço de 4 GiB e você provavelmente falhará.

Se você usar a opção l (eak) em vez de d (irty), o programa alocará o espaço virtual, mas nunca o referenciará. Isto não resultará em qualquer diminuição apreciável na RAM "disponível".

(A opção d (irty) recebe o nome do "bit de página sujo" na entrada da tabela de páginas x86 / x64, que é configurada quando a página virtual correspondente é acessada com um operando no estilo "modificar", significando O conteúdo da página foi alterado Esta é a indicação do Windows de que, caso a página tenha que ser removida do conjunto de trabalho do processo, seu conteúdo deve ser salvo em algum lugar antes que a página possa ser usada para outra coisa. set ir para a "lista de páginas modificadas" imediatamente após o despejo, a partir daí, o Windows grava-los em suas respectivas lojas de apoio.)

Você precisará ter "commit" suficiente para que esses testes funcionem como descrito acima (mesmo para a opção l (eak), mesmo que esta opção não use uma quantidade apreciável de RAM). Especificamente, seu "limite de confirmação" deve ser pelo menos 2 GiB (ou o quanto você estiver alocando) maior que a "taxa de confirmação" antes de iniciar seu teste. Observe que isso se aplica mesmo se você estiver usando a opção l (eak), não apenas d (irty). Se você encontrar esse limite, verá os pop-ups "o sistema está com pouca memória" ou algo semelhante. A cura, é claro, é adicionar mais RAM e / ou aumentar suas configurações de arquivo de paginação.

    
por 01.09.2015 / 03:24
17

O Windows pode ser configurado para limitar o uso da RAM. Eu não sei como ou quem teria configurado essa configuração no seu laptop, mas você deve verificar:

Este artigo tem mais detalhes, mas chegar à caixa de diálogo acima é fácil:

  1. Clique no ícone Iniciar e digite msconfig.exe na caixa de pesquisa

  2. Inicieomsconfig.exe,cliquenaguiaBoot,cliquenobotãoAdvancedOptions...evocêestaráem:

  3. Insiraumvalorsensato,porex.8192para8GBdeRAM,oudesmarqueacaixadeseleçãoMaximummemorytotalmente,oquedevefazercomqueoWindowsusetodaaRAMquevocêpossui.EudefinitivamentetentariaAMBASopções.

por 01.09.2015 / 02:22
10

Você pode usar o SysInternals RAMMap para ver exatamente o que o PC faz com o seu RAM física . Outras ferramentas, como o Gerenciador de Tarefas ou o Process Explorer, concentram-se principalmente na memória virtual e não são as melhores ferramentas para essa situação.

Na guia "Usar contagem", você pode ver que grandes partes não são usadas enquanto você não abriu muitos aplicativos.

Isso não significa que seu PC permanecerá nesse estado. Basta abrir alguns programas e a memória será usada.

    
por 01.09.2015 / 08:46
5

As citações de um bom artigo sobre o assunto:

More memory doesn’t actually increase [a computer's] processing speed. Only a faster CPU can do that.

E, na minha experiência, isso é absolutamente verdade, em geral. A menos que você esteja executando muitos programas ao mesmo tempo, e esses programas possuem requisitos de RAM significativos, você dificilmente verá qualquer benefício real em ter mais de 4 GB de RAM.

As pessoas parecem não perceber que 4GB é um monte de RAM. Fazer com que o Windows use mais do que isso exige esforço. Você terá que abrir vários aplicativos diferentes e, nesses aplicativos, abrir alguns arquivos grandes. Adicione algumas guias dos vídeos do YouTube e você poderá começar a ver a utilização de mais de 4 GB.

    
por 01.09.2015 / 01:43
5

O Windows faz algumas coisas inteligentes, como a memória de paginação. Pode ser que ele veja a maioria das tarefas que você está fazendo como desnecessárias e decida descarregar uma carga de coisas no arquivo de paginação, fazendo parecer que está fazendo isso apenas para evitar o uso de toda a sua memória RAM. Você poderia testar essa teoria desativando a paginação, embora isso não seja uma coisa que você deva ter configurado permanentemente. Existem muitos tutoriais na internet para fazer isso. Uma das coisas que faz (mesmo nas máquinas de 24 GB e 64 GB) é tornar as regras de paginação muito mais rígidas quando atinge aproximadamente 50%, 80% e 90% de consumo (esses valores são aproximados). Eu observei em cada um desses estágios que uma carga de coisas é despejada no arquivo de paginação.

Uma coisa divertida para fazer pode ser algo assim:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define PAGE_SZ (1<<12)

int main() {
    int i;
    int gb = 2; // memory to consume in GB

    for (i = 0; i < ((unsigned long)gb<<30)/PAGE_SZ ; ++i) {
        void *m = malloc(PAGE_SZ);
        if (!m)
            break;
        memset(m, 0, 1);
    }
    printf("allocated %lu MB\n", ((unsigned long)i*PAGE_SZ)>>20);
    getchar();
    return 0;
}

Isso é algum código C. Pegue o GCC ou algum compilador, faça você mesmo um exe e observe seu consumo de memória subir. Se você quiser consumir mais de 2 GB de memória, precisará compilar e executar como um processo de 64 bits. Se você gosta desse tipo de coisa, pode ser uma experiência interessante, se nada mais:)

Edit: Só queria notar que o programa não vai morrer com isso. Eu o editei de algum código anterior, pois não tenho certeza se outro código teria funcionado (a memória seria paginada, resultando em nenhuma memória sendo consumida, lol). O novo código contém uma linha int gb = 2; // memory to consume in GB - mudar o 2 irá ajustar a quantidade de memória que o programa deve consumir, assim você pode configurá-lo para usar tanto quanto você quiser. Configurá-lo para algo acima do que seu sistema provavelmente fará com que ele trave (não testado, portanto, use com cuidado)

    
por 01.09.2015 / 01:10
1

Você está usando um programa de 32 bits para testar a velocidade de execução do computador? Nesse caso, observe que os endereços de 32 bits podem apontar apenas para 4 GB da RAM, mesmo que você tenha mais RAM presente. Você precisará repetir o teste usando um programa de 64 bits e verificar sua velocidade com 4 GB de RAM presentes e novamente com 8 GB de RAM presentes, se desejar obter resultados úteis. Além disso, ele precisará ser um programa de 64 bits que pode usar mais de 4 GB de memória para rodar mais rápido - nem todos eles podem. Para saber se um programa é de 32 bits, inicie o programa e deixe-o em execução, inicie o Gerenciador de Tarefas do Windows, clique em Processos e role para baixo até encontrar o programa de interesse. Se o nome do programa na coluna Image Name for seguido por um espaço, então * 32, então é um programa de 32 bits.

    
por 30.01.2016 / 06:08
0

Obtenha o explorador de processos (procexp) da Sysinternals . Ele possui um gráfico de recursos e pode mostrar o uso de memória por processo, muito melhor do que a visualização do processo de estoque.

Você pode olhar para o uso físico da memória RAM em vez do uso do espaço virtual, para ver se você simplesmente não está usando tudo ou você parece precisar de mais, mas está limitando o uso físico.

A maioria dos programas comuns usa um tamanho conjunto de trabalho diferente que manterá a demanda baixa. Se um programa aloca uma tonelada de memória, não está realmente usando tudo ao mesmo tempo ...

O Windows moverá agressivamente páginas do seu programa para uma lista onde elas estão disponíveis, mas se ocorrer uma falha na página, ele será retirado da lista sem ter que carregá-lo no swapfile. O standby pode estar incluindo estes. Diferentes ferramentas rotulam conjuntos diferentes de maneiras diferentes.

Você pode tentar desativar o arquivo de troca, pelo menos para este teste. Isso fará com que a memória de dados seja realmente usada. Embora o procexp possa ser suficiente para ver isso claramente.

    
por 01.09.2015 / 06:47