A memória inativa não é um desperdício de recursos?

87

Estou procurando uma explicação sobre o uso de memória na minha máquina, especialmente à luz do exemplo nesta captura de tela abaixo:

Uso de memória

Eu entendo o que é Freee o que Activesignifica
Mas quais são os significados de Wirede Inactive?

Especialmente inactive, por que usa tanta memória para algo que não usamos?

GusDeCooL
fonte

Respostas:

142

A memória inativa teve um rap horrível devido a um nome ruim. Deveria ter sido chamado de algo como "torne seu Mac realmente rápido na segunda, terceira e quarta vez que executa a mesma tarefa" de memória, exceto que também é um nome horrível.

A Apple reescreveu o monitor de atividades quando introduziu vários novos recursos e adicionou memória compactada; portanto, isso não se aplica mais ao macOS que não mostra "Memória Inativa", mas ainda se aplica ao gerenciamento de memória do Mac OS X, conforme documentado neste documento. versão do Activity Monitor: https://support.apple.com/en-us/HT201538

Eis como expliquei as coisas a alguém novo no conceito de memória virtual no OS X:

  • Com fio : o sistema não pode ser executado sem essa quantidade de RAM (nunca trocada)
  • Ativo: os programas estão realmente usando essa memória agora ou nos últimos segundos
  • Inativo: coisas que os programas leram do disco lento ou de outro lugar e disseram que nunca mais precisariam. Os engenheiros sabem melhor: você voltará ao Facebook em alguns minutos ou reiniciará o Word depois de sair. As mesmas coisas acontecem repetidamente nos computadores.
  • Livre: RAM totalmente desperdiçada - o sistema precisa apenas de um ou dois MB livres para cobrir solicitações de alocação de curto prazo. Para alocações maiores, ele simplesmente usa parte da RAM Inativa, alocando-a para ativo / com fio e removendo as informações sobre o que costumava conter.

O problema surge quando Free + Inactive é inferior a aproximadamente 1/3 do total e as coisas podem realmente ficar lentas.

Memória inativa é velocidade bônus / RAM de serviço duplo. Ele funciona como livre a qualquer momento, mas também torna as tarefas repetidas muito, muito mais rápidas se o sistema adivinhou corretamente e manteve algo na RAM que você fará novamente. É mais rápido que a memória trocada, pois já está carregado na RAM e acelera as coisas quando o sistema de memória virtual faz boas suposições.

Quando você está se perguntando se a RAM é um problema, em vez de olhar para cada uma das 4 categorias (5 se você contar com troca ativa), você pode associar W + A como desacelerar um novo programa / tarefa e F + I como acelerar uma novo programa / tarefa. Quanto mais F + I você tiver, mais novos programas poderá ser iniciado antes que a RAM precise confiar na troca para manipular a memória que foi alocada.

Você realmente não precisa saber como o swap funciona desde que eu mencionei acima. Basicamente, quando um programa está ocioso e não é usado por dias (ou horas), o sistema grava essa RAM no disco rígido em vez de interromper o programa. Isso permite que o sistema embaralhe e lide com todos os tipos de coisas relacionadas ao gerenciamento de memória e evita que cada programa precise conversar entre si para concordar com quem usará menos memória quando o sistema acabar.

Aqui está um exemplo do mundo real de como a RAM inativa é usada.

  1. Saia de todos os aplicativos e verifique se os dois aplicativos que estamos testando não estão definidos para iniciar automaticamente quando você faz login
  2. Reinicie o seu Mac
  3. Ligue o Monitor de Atividade e assista à RAM
  4. Tempo quanto tempo leva para iniciar o Aplicativo A (o MS Word seria uma boa escolha)
  5. Saia de A
  6. Tempo quanto tempo leva para iniciar o Aplicativo B (algo da Adobe também seria bom)
  7. Saia de B
  8. Tempo quanto tempo leva o segundo lançamento de A
  9. Saia de A
  10. Segundo lançamento do Time B.
  11. O tempo A começa pela terceira vez com B. em execução.

Você verá acelerações dramáticas para o segundo / terceiro lançamento, à medida que o sistema aprende a manter na RAM inativa as coisas que esses dois aplicativos precisam executar.


No seu caso - o total de Wired e Active significa que algumas trocas de disco provavelmente estão acontecendo e seu Mac não é tão rápido quanto poderia ser, pois sua RAM inativa não é grande o suficiente para armazenar todas as coisas que você pode precisar reutilizar . Se você tiver uma unidade SSD rápida, essa alocação de RAM está OK e, em vez de começar a desacelerar uma vez que menos de 1/2 da sua RAM seja F + I, é possível reduzir as coisas para cerca de 1/4 da RAM total de F + Eu antes de ver lentidão perceptível. Essas diretrizes são gerais e você deve assistir vm_stat 15ou algum intervalo semelhante para garantir que a troca contínua e de volume médio não esteja diminuindo a velocidade do seu Mac.

bmike
fonte
9
Uau resposta muito completa para iniciantes como eu. Muito obrigado, muito apreciado :)
GusDeCooL
6
Sim - eu respondo por todos - de uma vez por todas, as pessoas podem editá-lo para torná-lo melhor e você obtém sua resposta. Idéia bem legal para um site em que as pessoas podem vir e fazer perguntas interessantes. :-)
bmike
3
Uau! Bela resposta!
duci9y
3
Eu gostaria que eles explicassem assim na minha classe de sistema operacional.
Styfle 16/10/12
2
A limpeza do @cvsguimaraes não é instantânea; chat.stackexchange.com/transcript/message/12107920#12107920
Graham Perrin
6

O número mais importante para determinar se o seu Mac está ficando "estressado" na memória é o número de "Saídas de página". No Monitor de Atividade no Mavericks, isso não é mais mostrado, agora eles mostram as informações em 'Trocar Usado:'.

Saídas de página significa que o sistema operacional determinou que não há RAM disponível suficiente para executar todos os aplicativos e processos que foram solicitados. O que ele faz é "paginar" partes do disco que determinam que não estão sendo usadas ativamente. Isso significa que a memória RAM (rápida) é alterada para a memória HDD (lenta). Se isso estiver acontecendo muito porque existem muitos aplicativos em execução e o usuário estiver entre aplicativos, haverá muitas saídas de página e entradas de página.

Se você vir as saídas de página aumentando, deverá tomar medidas.

FromOZ
fonte
4

O problema no meu Mac é que a memória "inativa" nunca parece ser eliminada, a menos que eu faça uma limpeza manual na janela de comando. Ele se acumula e se acumula até eu obter uma janela pop-up me dizendo para matar aplicativos. Mesmo depois de matar todos os meus aplicativos, ainda tenho muita memória inativa para executar qualquer coisa. Portanto, no meu Mac executando a versão mais recente do Mountain Lion, NÃO é verdade que a memória inativa é recuperada quando a memória livre fica baixa. Ou eu tenho um aplicativo em algum lugar que bloqueou um pedaço de memória inativa que nunca é liberada ou o iOS possui um bug. (Eu tenho 8 GB de memória física ... isso deve ser suficiente!)

Ernie
fonte
2
Estou com você, Ernie ... no Mac OS 10.6 e 10.7 em um MacBook Pro e Mac Pro, a memória inativa aumenta e o sistema operacional começa a trocar (de acordo com "Page Ins" e "Page Outs") e o sistema irá rastrear até parar. A memória inativa parece nunca ser recuperada. Eu tenho que usar "limpar" para recuperar a memória inativa e ativar meu sistema novamente.
Eric
2
De onde vem essa janela pop-up? Qual é a situação da memória conforme relatada vm_statquando ocorre? O que faz você ter tanta certeza de que pode haver "memória" inativa "demais" para executar qualquer coisa "? Para mim, tudo isso é boato que não tem suporte no código que você conhece, na verdade, é executado no kernel.
Kubern Ober #
2
Sua alocação de memória se parece com o que Gus apresentou? Aqui estamos falando de um gigabyte com fio e um gigabyte e meio ativo. A ração inativa / livre me parece bem nessa situação. Talvez você faça uma segunda pergunta detalhando a situação em que as coisas estão se deteriorando?
bmike
2

Obrigado a todos os pôsteres e comentadores, este foi um tópico instrutivo e útil para mim. Minha experiência recente pode ser útil para alguém. Eu uso o meu Mac Mini com o OS X10.8.1 e com 16G de RAM inteiramente para prototipar software que será executado em outro lugar. Posso garantir-lhe que não "voltarei ao Facebook em alguns minutos ou relançarei o Word depois de encerrá-lo" - faço isso no meu macbook.

Minha tarefa era coletar um grande conjunto de dados, a E / S consome tempo, portanto a idéia é ler o maior número possível de dados para ramear em um único swoop, processá-lo lá e gravá-lo em disco e repita o processo até concluir, o que leva algumas horas. O que vejo é que toda vez que leio um novo bloco de dados, a memória inativa salta - suponho que a IA do sistema pressuponha que eu queira usar o antigo bloco novamente, o que não uso - e a versão livre gotas de memória.

Após algumas iterações desse processo, a memória livre diminui para apenas alguns MB, a memória inativa libera mais alguns MB e, eventualmente, após alguns minutos de troca entre a memória livre e a inativa, a memória inativa libera alguns GB de uma vez. Tudo é como o @bmike descreve, e o vm_stat 15 e o monitor de atividades mostram 0 saídas de página.

Exceto talvez não exatamente. Várias vezes as coisas andam bem, eu saio para tomar um café ou jantar e não estou monitorando o processo, e o que não deveria acontecer acontece e o processo repentinamente lança um monte de páginas e sai lentamente. Estipule que provavelmente é o meu código de baixa qualidade que está causando o problema, mas eu gostaria de poder desligar a memória inativa apenas para eliminar essa fonte de variabilidade. Está quebrado? Eu não diria nada, mas diria que acho que o gerenciamento de memória não é otimizado para o meu caso de uso.

user100345
fonte
0

Memória inativa usada por aplicativos ativos e encerrados recentemente. O OS X o mantém reservado caso o usuário queira abrir o programa novamente. Por acaso, o OS X não precisa realocar a memória que acelera a velocidade do desempenho. Se você não abrir novamente o programa, após algum tempo a memória do inativo será liberada ou realocada.

Esse recurso é interessante quando você tem muita RAM, mas quando não é, é bastante irritante. Na verdade, é tudo sobre coisas de maçã. Quando você tem um gadget poderoso ou Mac, tudo é legal, mas quando o dispositivo envelhece, todos os recursos o tornam lento.

Então você tem que usar truques especiais para gerenciá-lo.

Para memória inativa, existe um comando purgepara liberá-lo.

A. Shulev
fonte
-3

Basicamente, está quebrado. A RAM inativa deve ser "limpa" automaticamente quando a RAM livre estiver baixa. Qual é o sentido de armazenar RAM para aplicativos abertos anteriormente, esperando que o usuário o abra novamente? O fato de a RAM livre estar baixa indica que os aplicativos ATIVOS existentes podem não ter RAM suficiente e estão trocando AGORA. Manter GB de RAM para aplicativos fechados é simplesmente idiota. De acordo com a descrição da Apple, a RAM inativa deve ser eliminada ou emprestada automaticamente quando a RAM livre estiver baixa. Este claramente não é o caso.

rouser
fonte
3
Os sistemas de memória virtual desperdiçam grandes quantidades de RAM livre. Quando um programa solicita uma alocação de memória, o kernel compõe mais memória virtual e a distribui como doce. Somente quando um programa preenche essa memória com dados reais, o sistema precisa liberar espaço na RAM para essa operação. Essa "abertura de espaço" retira a memória livre e depois a inativa - e o atraso para liberar a memória inativa é incomensuravelmente pequeno. A remoção que você descreve é ​​exatamente o que acontece - apenas que você implica que o sistema deve executar o trabalho de remoção com antecedência quando o sistema for preguiçoso e só funcionará se necessário.
bmike
@bmike Mas isso não significa que, quando não houver mais RAM livre e eu iniciar um novo aplicativo, a porção de RAM inativa diminuiria e a ativa aumentaria? Isso claramente não é o caso e, pela minha experiência, o sistema fica extremamente lento sempre que não há mais RAM livre, apesar de haver gigabytes de RAM inativa. O sistema parece preferir trocar de disco antes de considerar a reutilização da ram inativa.
precisa saber é o seguinte
4
@ codingFriend1 Sejamos precisos - quantas páginas grátis vm_statvocê considera "sem mais RAM grátis"? Quando o Mac está "lento", para que servem as entradas e saídas de página vm_stat 1? Sempre que eu assisto isso em um sistema com problemas, gosto de vm_stat 15rodar em uma janela do terminal (ou fazer logon no sistema de arquivos) para saber com precisão qual é a atividade de paginação ao decidir se / quando ajustarei coisas como o pager. Este exemplo possui 100 MB de RAM livre, portanto, não é provável que esteja sob pressão de paginação.
Bmike
-4

A memória inativa, em essência, torna mais rápida a abertura de processos anteriormente fechados. Se você achar que o Mac OS está consumindo muita memória, você realmente não precisa, como as dezenas de guias que você abriu no Safari ou Chrome, basta usar o comando 'limpar' no Terminal. No OS X Mavericks, basta usar 'sudo purge' (será necessário inserir sua senha). Ele economiza preciosos segundos quando você precisa abrir algo novamente, mas se você quiser jogar um jogo intensivo de RAM ou abrir um aplicativo com fome de RAM, eu definitivamente sugiro usar o comando purge.

Kaness K
fonte
2
Como isso difere de outras respostas?
user151019