Recentemente, comecei a ter muitos problemas de memória no meu Mac executando o High Sierra. Em vez de a janela forçar o encerramento aparecer, meu sistema congelaria completamente e a única maneira de recuperar é forçar uma reinicialização.
Após algumas investigações, descobri que meu sistema não está criando nenhum arquivo de troca, mesmo quando a pressão da memória é crítica. Não há nada no /private/var/vm/
diretório
Eu já tentei sudo launchctl load -wF /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
.
Existe alguma outra maneira de ativar a troca? Ou para executar alguns diagnósticos?
Detalhes adicionais:
Estou inicializando a partir de um SSD Thunderbolt externo (não sei se essa é a causa).
Abaixo está a saída de vm_stat
. Se eu fizer algo com muita memória nesse estágio, meu sistema congelará.
Mach Virtual Memory Statistics: (page size of 4096 bytes)
Pages free: 4116.
Pages active: 854231.
Pages inactive: 825841.
Pages speculative: 27754.
Pages throttled: 0.
Pages wired down: 606483.
Pages purgeable: 22070.
“Translation faults”: 75731290.
Pages copy-on-write: 401121.
Pages zero filled: 49766457.
Pages reactivated: 17690835.
Pages purged: 1577284.
File-backed pages: 503400.
Anonymous pages: 1204426.
Pages stored in compressor: 6563399.
Pages occupied by compressor: 1875311.
Decompressions: 21012443.
Compressions: 32102441.
Pageins: 2172708.
Pageouts: 35123.
Swapins: 0.
Swapouts: 0.
Editar:
Mais alguns detalhes:
Esta é a saída de diskutil ap list
APFS Container (1 found)
|
+-- Container disk4 6BE5FDB5-A68F-4CBF-A404-68AE73E61C10
====================================================
APFS Container Reference: disk4
Capacity Ceiling (Size): 499898105856 B (499.9 GB)
Capacity In Use By Volumes: 452259872768 B (452.3 GB) (90.5% used)
Capacity Available: 47638233088 B (47.6 GB) (9.5% free)
|
+-< Physical Store disk3s2 39853349-6B62-4961-99DE-811BA56465EC
| -----------------------------------------------------------
| APFS Physical Store Disk: disk3s2
| Size: 499898105856 B (499.9 GB)
|
+-> Volume disk4s1 99688E85-E9EF-3688-A324-913D00FF6A0E
| ---------------------------------------------------
| APFS Volume Disk (Role): disk4s1 (No specific role)
| Name: System (Case-insensitive)
| Mount Point: /
| Capacity Consumed: 449420767232 B (449.4 GB)
| FileVault: No
|
+-> Volume disk4s2 729366E4-48AA-45A3-95DA-8871B8A29778
| ---------------------------------------------------
| APFS Volume Disk (Role): disk4s2 (Preboot)
| Name: Preboot (Case-insensitive)
| Mount Point: Not Mounted
| Capacity Consumed: 20357120 B (20.4 MB)
| FileVault: No
|
+-> Volume disk4s3 431C0191-2B1F-480C-94D0-AF4748E6D213
| ---------------------------------------------------
| APFS Volume Disk (Role): disk4s3 (Recovery)
| Name: Recovery (Case-insensitive)
| Mount Point: Not Mounted
| Capacity Consumed: 509820928 B (509.8 MB)
| FileVault: No
|
+-> Volume disk4s4 5DE0EA6B-CA57-4226-B038-2E256FCC5B98
---------------------------------------------------
APFS Volume Disk (Role): disk4s4 (VM)
Name: VM (Case-insensitive)
Mount Point: Not Mounted
Capacity Consumed: 2147504128 B (2.1 GB)
FileVault: No
E a saída de mount
:
/dev/disk4s1 on / (apfs, local, journaled)
devfs on /dev (devfs, local, nobrowse)
/dev/disk2 on /Volumes/Storage (hfs, local, journaled)
map -hosts on /net (autofs, nosuid, automounted, nobrowse)
map auto_home on /home (autofs, automounted, nobrowse)
Solução (atualizada): são sugeridas várias boas soluções. Depois de revisar o problema novamente, eu recomendaria a solução do lint abaixo. É a maneira mais geral de explicar as alterações nos nomes dos volumes.
fonte
Respostas:
Eu tive o mesmo problema ao executar o High Sierra (e o Mojave desde) em um SSD externo. Eu não tentei a sugestão de Glorfindel para limpar o disco no Sierra no HFS + antes de restaurar no High Sierra, o que parece muito trabalhoso.
No entanto, tenho usado meu próprio daemon de lançamento com um script bash desde janeiro, semelhante à solução de chrisgooley; no entanto, meu script também verifica qual ID de volume montar. Pensei em compartilhar minha solução com a verificação dinâmica do ID do volume correto.
Inicialmente, eu codifiquei o ID do volume também, mas isso era problemático porque, sempre que o sistema inicializava com unidades adicionais conectadas, o ID do volume mudava, o volume de troca falha na montagem.
Meu script e daemon estão abaixo:
mountvm.sh
com.local.mountvm.plist
Algumas notas:
Mude o [/ path / to / script] no plist para onde quer que você coloque o script bash.
Remova o # nas linhas de eco no script bash para solucionar problemas (você precisará executar o script no Terminal com sudo ou especificar um caminho stdout no plist).
O script verifica se / private / var / vm / sleepimage existe. Caso contrário, o volume de troca não será montado e tentará montar o volume correto. Caso isso aconteça, ele verifica novamente mais quatro vezes em intervalos de dois minutos antes de sair. A razão pela qual adicionei isso foi porque descobri que, se simplesmente tentasse montar o volume assim que o daemon fosse carregado, ele falharia.
fonte
Eu tive o mesmo problema ao instalar o High Sierra no SSD externo.
Solução :
Crie um arquivo plist como usuário root e coloque-o na
/Library/LaunchDaemons/
pasta Ele deve ser escrito em notação de domínio reverso como esta:Basta copiar esses dados xml no seu arquivo plist e alterar o nome do volume da VM do APFS com o seu.
No meu caso, fica assim:
Reinicie o seu Mac
fonte
O volume APFS da VM dedicado não está montado corretamente:
Ele deve ser montado no ponto de montagem / private / var / vm.
Entrar
mount
no Terminal deve revelar algo como:O motivo não é claro. Pelo menos alguns arquivos de troca foram criados no passado porque 2,1 GB (= dois arquivos de troca à 1 GiB) são consumidos pela VM.
Uma solução temporária é especificar outro diretório de arquivo de troca. Após incapacitante SIP , isto pode ser conseguido através da modificação do ficheiro /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist com
sudo nano ...
ou LaunchControl .Original:
Mod:
Se o diretório / vm não existir, crie-o:
Reinicie o seu Mac depois. Ative o SIP novamente!
Na minha opinião, isso está relacionado à atualização suplementar 10.13.3. Pelo menos nas minhas várias VMs High Sierra VMs / vm adicionais foram criadas - cada uma contendo um arquivo de troca abandonado0. O diretório de troca real é / private / var / vm -> disk1s4 (volume da VM do APFS) - testado
sudo memory_pressure -l critical
no Terminal.Eu tenho que investigar mais isso.
Para realmente resolver o problema, remover e adicionar novamente o volume APFS da VM de alguma forma quebrado deve ajudar:
diskutil ap list
para obter os detalhes do APFSRemova o volume da VM do APFS:
No seu caso, av_vmUUID é 5DE0EA6B-CA57-4226-B038-2E256FCC5B98, portanto:
Adicione um volume de VM do APFS:
with diskX: Referência do contêiner APFS do contêiner com o UUID 6BE5FDB5-A68F-4CBF-A404-68AE73E61C10 mostrado no
diskutil ap list
(provavelmente disco3, disco4 ou disco5)O volume será criado, mas não será montado porque o ponto de montagem especificado não existe no sistema básico do Modo de recuperação!
mount
. O teste comsudo memory_pressure -l critical
.fonte
Eu tenho o mesmo problema após a atualização. Minha maneira é simplesmente apagar o contêiner APFS e usar o Time Machine para restaurar o Sierra com HFS + e restaurar o High Sierra com partições APFS. Abaixo estão minhas configurações que o fazem funcionar.
fonte
Eu tenho exatamente os mesmos sintomas. Eu instalei o High Sierra 10.13.4 em um SSD externo de Thunderbolt APFS recém-formatado. O Activity Monitor não mostra espaço de troca e
diskutil apfs list
mostra que a partição da VM não está montada, exatamente como acima. Tenho pânico repetido quando a memória está acabando (meu computador possui apenas 4 GB de RAM).Minha solução, que ainda não testei, é criar um Carbon Copy Clone do disco externo, depois apagá-lo e reformatá-lo (usando o comando "Partição" do Disk Utility) como Mac OS Extended (Journaled) e restaurar usando o CCC. Isso deve me devolver minha VM.
fonte
Corri para esse problema quando atualizei para o Mojave. Meu sistema operacional está instalado em um SSD externo. Minha correção acabou sendo semelhante à de Michael Golban, mas eu precisava de um comando extra.
Acabei escrevendo um pequeno script bash e carregando-o com um LaunchDaemon.
/usr/local/sbin/mount_swap.sh
com.local.mountswap.plist
Assim que esses comandos foram executados durante o teste, a linha "Trocar Usado" no Monitor de Atividade começaria a mostrar valores positivos.
fonte
Também estou nessa situação, inicializando a partir de um SSD Samsung T5 conectado a USB3. Eu tentei a solução do fiapo, no entanto, no meu caso, o comando
gera duas respostas, pois o disco rígido interno e o SSD externo contêm uma partição de troca (VM). Não consigo encontrar uma solução para esse problema (automatizando o processo de montagem na inicialização), então alguém pode ajudar?
[Pinetops] Estranhamente, não posso adicionar um comentário, por isso editarei sua "resposta". Eu estava em uma situação semelhante (macOS Mojave inicializando em um SSD Samsung T5 de 1GB). Também vejo duas respostas ao executar o
diskutil
comando acima , então acho que a resposta do lint não funcionará para mim (além disso, vejo um arquivo nomeado/private/var/vm/sleepimage
mesmo que a VM não esteja montada). No entanto, tentei a resposta de Michael Golban e funcionou com o mínimo esforço. Primeiro, tive que descobrir qual VM deveria ser montada ao inicializar o SSD da Samsung. Fiz isso com o seguinte comando e depois olhei para ver em que disco estava montado/
.O resultado relevante para mim foi:
Então agora eu sei que a VM deve estar no disco5. Eu olho mais abaixo na saída de
diskutil
e vejo:Viola! Ele deve montar o disk5s4 como espaço de troca. Então, eu segui a resposta de Michael Golban, substituindo em
disk5s4
todos os lugares que ele usoudisk3s4
em seu exemplo específico. Após uma reinicialização,diskutil ap list
mostra quedisk5s4
está montado corretamente.Além disso,
vm_stat
mostra valores diferentes de 0 para Swapins e Swapouts.fonte
Eu tive uma experiência semelhante, mas minha configuração é um pouco incomum. Eu tenho:
Agora, aqui é onde / quando o problema apareceu: decidi converter o SSD de 256 GB em APFS. A conversão correu bem. Sem problemas. NO ENTANTO, assim que isso terminou, minha ferramenta de monitoramento (iStat) começou a mostrar uma unidade extra chamada "VM". Eu suspeitava ... Também único no meu caso: eu executo máquinas virtuais usando o Parallels. Como eu disse, fiquei curioso para saber o que esta nova unidade denominada VM estava fazendo no meu menu do iStat ... Continuei bisbilhotando e percebi que esse deveria ser o arquivo de troca. Abri o Activity Monitor e, para minha surpresa, minha memória estava quase no máximo, e o valor do arquivo de troca estava lendo 0, o que NÃO está correto. O OS X deve começar a paginar as coisas na unidade de troca, em vez de ficar sem memória.
Fiquei convencido de que o sistema operacional está faltando alguma coisa quando converte um volume em APFS e que bastava reiniciar para colocar as coisas em ordem novamente. Bem, no meu caso, isso funcionou. Após a reinicialização, o sistema começou a paginar de volta para o arquivo de troca como deveria, e o iStat não mostrou mais a unidade "misteriosa" da VM. E todas as minhas unidades estavam em suas respectivas versões corretas do sistema de arquivos.
Desculpa. Eu sei que isso provavelmente não ajuda a resolver a questão original, mas pode lançar alguma luz sobre o funcionamento interno do problema.
Seja bem pessoal, Rapha.
fonte
O Mac OSX High Sierra é um tipo de derivado do Linux, e muitos SOs Linux recomendam desativar a troca ao instalar em um SSD, pois o tipo de armazenamento usado em uma partição de troca sobrecarrega a mídia magnética do SSD de uma maneira potencialmente destrutiva. Então, eu acho que o High Sierra desabilita o espaço de troca nos ssds como padrão. Minha opção preferida é instalar o espaço de troca em uma unidade tradicional separada.
https://askubuntu.com/questions/652337/why-no-swap-partitions-on-ssd-drives
fonte