Se carregar um programa, o Windows tem de copiar o executável para a memória a fim de o executar. Se você fechar a aplicação, o programa ainda existe na RAM. Se você executar o programa novamente, o Windows não terá que carregar nada do disco – tudo ficará na RAM.

Toda a sua RAM usada se torna um cache do disco rígido. Como o disco é seis ordens de magnitude mais lento que a RAM, você quer o máximo dos seus programas e arquivos de dados na RAM. A sua memória RAM não utilizada torna-se um cache. Isso é o que é a memória em espera. É memória que é dada imediatamente a qualquer aplicação que precise dela, mas que está em espera caso o conteúdo seja necessário:

  • https://i.imgur.com/NQwFGoB.png>

Então neste momento no meu computador tenho 8 GB de memória que não faz mais nada a não ser ser ser uma cache para o disco rígido.

Agora, se um programa precisa de alguma RAM, o Windows vai dar-lhe alguma memória. Mas antes que ele possa entregar a memória para um programa, ele tem que ter certeza de zerar a memória primeiro.

Reader Quiz: Por que o Windows deve zerar a memória RAM antes de poder entregá-la a outro processo?

O Windows mantém alguma memória que foi preguiçosamente zerada, e está pronto para entregar a um aplicativo em um momento de aviso. No Resource Manager esta memória zerod out ready to go chama-se *Memória livre; pode vê-la na imagem acima.

É também conhecida como a lista de páginas zerod, porque a memória foi zerod out, e não está a fazer nada de útil no computador:

    https://i.imgur.com/47xDkzT.png

O que é o SuperFetch?

O que o SuperFetch faz é trabalhar com o gerenciador de memória para carregar dados de forma proativa e preguiçosa na memória livre, para que já esteja em cache quando você for executá-lo. SuperFetch sabe quais aplicativos, jogos, ferramentas dev, você normalmente carrega, e preguiçosamente os pré-pega na RAM caso sejam necessários.

Então quando eu for carregar WoW em 3 minutos, aqueles 8 GB de texturas do jogo já estarão na RAM. O uso pode usar uma ferramenta como RAMMap para ver que arquivos toda a RAM do seu computador está em cache no momento.

Anyone dizendo para desativar o SuperFetch é um idiota, não entende de computadores, e está forçando o Windows a ser mais lento porque não entende a diferença entre:

  • Standby free memory
  • Zerod free memory

E essa pessoa precisa de um smack na parte de trás da cabeça para intencionalmente tornar o seu computador lento.

As aplicações usam memória; não RAM

Outra coisa que a maioria das pessoas não entende é a diferença entre o compromisso e o conjunto de trabalho. Isso é mais fácil de entender quando o Windows 95 rodava em 4 MB de memória.

  • em uma máquina monstruosa com 16 MB de RAM
  • i pode ter um programa que tenha comprometido 1,5 GB de memória
  • mas só está usando 117 KB de RAM

Isso porque tudo o que o programa precisa para operar pode caber inteiramente em 117 KB. O resto ou foi escrito no arquivo swap, ou já foi uma cópia de um arquivo (por exemplo, posso mapear um arquivo de dados de 1,5 GB no meu espaço de endereços, e ter comprometido 1,5 GB de memória, enquanto não consumia RAM)

Por exemplo, um dos gadgets no Windows Vista/7 Sidebar teve um vazamento de memória. Isto significava que o processo Sidebar.exe continuaria com o committing de memória (até o limite de 2 GB para um processo de 32 bits), até que o processo falhasse por estar fora de memória. Mas o Sidebar.exe estava consumindo apenas 700 KB de RAM, porque toda aquela memória vazada foi escrita no arquivo swap (porque ninguém estava usando para nada).

Esta é uma razão pela qual você não desabilita seu arquivo swap. Window pode copiar páginas de RAM para o disco rígido. Se as páginas da RAM não estão sendo realmente usadas, elas podem ser redirecionadas para outras coisas (como um cache de disco), porque a cópia de segurança desses dados está no arquivo swap. Se a sidebar alguma vez pediu novamente essa memória (o que nunca pediria, porque se esqueceu dela), o Windows pode trocar esses conteúdos de RAM do disco rígido.

tl;dr: eu tenho 8.5 GB de memória livre:

  • 8 GB está fazendo algo útil para tornar minha máquina mais rápida
  • 0.5 GB vai desperdiçar não fazendo nada

Você quer que o SuperFetch use sua memória – isso torna a máquina mais rápida. Não a desligue.

Essas pessoas são como o meu pai. Ele acha que sabe o suficiente para ser perigoso. Ele me ligou reclamando que sua máquina Windows 7 leva 3 minutos para arrancar. Eu digo-lhe:

  • É toda a merda de anti-vírus que ele corre
  • inclui um SSD; ele arranca em 13 segundos

Ele recebe um SSD, e o Windows ainda demora 3 minutos a arrancar. Eu digo-lhe que é a merda do anti-vírus dele. Rejeita minhas opiniões fora de controle. Seis meses mais tarde ele reinstala o Windows novo, e agora ele inicia em 13 segundos.

Desabilitar o SuperFetch é como desabilitar seu arquivo swap, ou instalar um disco RAM, ou usar um limpador de registro: ele faz você parecer um idiota. Em pessoa, eu sorrio e aceno com a cabeça. Nas suas costas eu falo merda sobre você no reddit.

Leitura de Bônus

Mais sobre o assunto antes:

  • /r/ProgrammerHumor/comments/68ker6/ultimate_in_garbage_collection/dh071ep/
  • /r/technology/comments/1xbofp/ramdrive_to_improve_performance_and_prolong_ssd/cf9wbmf/
  • /r/programming/comments/4nvimz/john_carmack_on_memory_mapped_gpu_assets/d4818ep/

Update – O SuperFetch Hard Drive I/O não poderia prejudicar o meu jogo?

Alguns perguntaram, eu respondi, mas vou copiar aqui para ter visibilidade e para ajudar a divulgar informações.

Para reais tho, poderia afectar o desempenho do jogo?

É simples, não vai.

Sua maior preocupação pode ser sobre o SuperFetch agitar o disco rígido, lendo em coisas enquanto está a tentar jogar o seu jogo. E todas essas I/O do disco rígido vai machucar “real” coisas do disco rígido que você precisa para jogar o seu jogo.

Não vai.

Check Resource Monitor, a guia Disco. O Windows 7 adicionou um recurso onde aplicativos podem indicar que eles querem executar operações de E/S com prioridade “de fundo”.

  • um SSD tem um tempo de resposta em torno de 1-2 ms
  • um HDD de prato giratório tem um tempo de resposta em torno de 10-20 ms

E assim, no Monitor de Recursos, você pode ver quanto tempo está demorando para executar a E/S do disco rígido. E em discos rígidos girando, você normalmente verá 10-30ms:

  • https://i.imgur.com/m4ogUc5.png

Mas enquanto isso acontece, há outras operações de E/S do disco rígido que estão rodando na prioridade Background. O Windows irá garantir que as operações de E/S em Background nunca interfiram com as E/S normais. As E/S em segundo plano podem ser punidas de tal forma que podem ser necessários 500-1000ms para servir um fundo lido:

  • https://i.imgur.com/3SATs9M.png

Então nós temos:

Tempo de resposta de leituraSSD1 msHDD10 msBackground Priority I/O500 ms

Pena que mais desenvolvedores não saibam sobre o Background I/O Priority, estou olhando para você:

  • Steam downloader
  • uTorrent
  • Battle.net updater
  • Windows Update(!!!)

Porque isso realmente ajuda.

Deixe uma resposta

O seu endereço de email não será publicado.