Spiega a macOS di usare solo lo swap e la memoria compressa quando è veramente necessario (macOS 10.14 Mojave)

5

Siccome disabilitando swap e / o comprimendo la memoria non è raccomandato e anche non un'opzione stabile dopo 10.9 Mavericks (nonostante l'impostazione di vm esiste), sono condannato dopo alcuni giorni di esecuzione del mio Mac con la mia memoria scritta al lontano- da pagine ottimali di memoria. Dato che tutto può scambiare o comprimere la memoria così facilmente, ho bisogno di riavviare il mio sistema relativamente spesso (nonostante la mia RAM da 16 GB).

Sto cercando una soluzione che mi salvi da questi rallentamenti.

Ad esempio in Linux zramswap è facoltativo. Anche Linux ha il suo valore di swappiness tra 0 e 100 variabile come

vm.swappiness=5

Potrei anche prendere in considerazione una soluzione sulla cache dei file (che di solito mangia in modo casuale tonnellate di memoria senza un motivo valido e non riesce a rilasciarlo prima che la RAM si trasformi in purgatori meno ottimali di memoria e scambio compressi). Ad esempio qui ZFS ha un'opzione su FreeBSD per massimizzare la dimensione della cache dei file in memoria:

vfs.zfs.arc_max="1536M"

In macOS la soluzione più nota per il problema della cache dei file è in esecuzione

# /usr/sbin/purge

Che è persino "cronnable". Quindi questo svuota la cache dei file, ma improbabile che sia ottimale. Arrossisce troppe cose. Anche se qualcosa è già in swap e / o memoria compressa, nonostante l'epurazione rimane lì, quindi quei software che li usano rimangono lenti (e io sento che la lentezza, credimi).

C'è qualche soluzione per rendere MacOS meno probabile che usi la cache dei file, la memoria compressa o lo swap (ma mantenga comunque il primo per le prestazioni e gli ultimi due per l'emergenza)?

    
posta dszakal 22.10.2018 - 18:16
fonte

3 risposte

3

La prima e migliore linea di difesa sarebbe quella di uccidere processi o servizi non necessari.

Quindi potresti controllare la compressione di vm:

$ sysctl -a vm.compressor_mode
vm.compressor_mode: 4 

Imposta queste variabili tramite un comando nvram:

Mode 0x1, VM_PAGER_DEFAULT, turns off memory compressor and swapping, which is proved to be harmful to the system stability. Modes 0x8, 0x10 and 0x20 are the so-called “freezer” modes, which “freeze” the OS instantly when memory is under pressure. You don’t want to try them.

Mode 0x2, VM_PAGER_COMPRESSOR_NO_SWAP, is the best choice here. It provides memory compressor with swapping disabled. In other words, when memory is under pressure, macOS will try to compress the active but non-wired memory, thus freeing part of the memory back to the system. macOS uses WKdm algorithm to compress and decompress the memory, which is fast and battery-efficient. Yet, kernel panic is still possible if there is no more compressible memory. To change from mode 0x4 to 0x2, use this command and reboot:

$ sudo nvram boot-args="vm_compressor=2"

When using mode 0x2, memory pressure must be monitored closely to avoid kernel panic. Once the compressed memory grows close to 50% of total memory capacity, you would either like to close some of the running applications, or simply reboot the system.

Avoid memory being compressed
Although memory compression is fast and is designed to relieve memory pressure, the best performance can only be achieved when none of the memory is being compressed. Use Activity Monitor or the following command to keep an eye on memory usage:

$ top -o CMPRS

From my experience, macOS starts to compress memory when the memory utilization is close to 80%. Try limiting the number of running apps to a low number, and restart or kill apps that consume excessive memory. Then your Mac should run as fast as it should. Use Activity Monitor or the following command to see which apps are using most of the memory:

$ top -o MEM

via medium

Ci sono più impostazioni con cui giocare e accessibili in modi simili ma sembra che non ne valga davvero la pena

    
risposta data 22.10.2018 - 18:33
fonte
1

Dico questo con gentilezza, ma no, no, no.

Non modificare la progettazione e il processo fondamentali della gestione della memoria virtuale di macOS perché hai un sistema o un carico di lavoro che perde così tanto da accumulare swap accumulando e l'algoritmo si rompe. Qualsiasi modifica apportata all'algoritmo si interrompe se si dispone di software che non assegna correttamente la memoria, quindi è probabile che questo problema ritorni per isolare e identificare ciò che causa la pressione della memoria, in modo che compressione e scambio diventino un sintomo del problema sottostante.

Ora - potresti avere una buona ragione per cui stai chiedendo di alterare la memoria virtuale, ma il micro-macOS macOS non è progettato per il livello di ottimizzazione di Linux e se hai veramente bisogno di gestire la VM in modo preciso, Ti consiglio di individuare il codice su un server separato inserendolo nel cloud, su un secondo dispositivo locale o persino virtualizzando il SO guest di Linux su macOS.

Quindi avrai la migliore memoria per il sistema operativo attuale e il software virtuale (VMWare Fusion è la mia prima raccomandazione generale, ma controlla Parallels o anche alcune opzioni gratuite se hai tempo e inclinazione) in modo da poter mettere il codice che ha bisogno di un pugno di ferro che governa la memoria virtuale su Linux e lascia che le mac app siano mac.

E solo per uscire su un arto, nei diciassette anni trascorsi da OS X, ho lavorato con dozzine di persone che sono scese lungo il percorso che hai proposto - trova un caso in cui la memoria virtuale segnala un problema e poi cambia VM per superare le esigenze del software, in ogni caso, abbiamo finito per sistemare le applicazioni o correggere dove gestiamo le cose invece di trovare un ambiente magico o una mortificazione che non causasse più danni che benefici.

Incoraggio tutti a provare queste cose, specialmente se si desidera conoscere le funzionalità interne di un sistema operativo, ma la premessa qui che la VM deve cambiare non sembra risuonare vera in base ai dettagli forniti o alla lunga esperienza di tentare questo in passato. Fateci sapere se trovate un'impostazione che funziona per voi e non votare le altre persone se suggeriscono delle cose - questo è il modo in cui tutti impariamo tracciando sfide ingegneristiche e software - anche contro le probabilità che non funzioni alla fine .

    
risposta data 03.11.2018 - 17:19
fonte
0

Ho lo stesso problema e completamente simpatico. Lo scambio non necessario rispetto ad altre opzioni (ad esempio la riduzione dell'area dei file memorizzati nella cache) è stato un problema per anni. È anche peggiorato sotto Mojave, dove è presente memoria libera - nemmeno la cache del disco, ma completamente gratuita - ma il sistema decide comunque di utilizzare lo swap. Su un SSD, ogni scrittura causa usura e amp; strappare all'hardware, quindi questo è in realtà (anche se in piccolo) un comportamento fisicamente dannoso. Poiché gli SSD nei moderni Mac sono saldati sulla scheda madre, la situazione è terribile.

Mi è stato detto molte volte da posters molto fiduciosi su siti come questo che la memoria libera è una cattiva idea, perché è lì che consuma energia e non serve a niente. La cache del disco (almeno) dovrebbe consumarla. Sono d'accordo con questo; Mojave non lo fa, comprimendo i dati e scambiandoli su disco anche quando sono presenti gigabyte di memoria libera. Sul mio computer portatile di casa, i cicli di sonno lo rendono ancora peggiore. In questo momento, dopo un risveglio la macchina ha 11 GB gratuiti, 5 GB in uso e 6 GB scambiati. Il colore "pressione di memoria" senza senso è verde, qualunque sia il significato di che . È completamente assurdo e irrimediabilmente spezzato.

Pensavo che ci fosse qualcosa che stavo installando o stavo facendo male, ma su Mac nuovissimi al lavoro con niente di extra installato, consumando RAM aprendo molte schede in Safari abbastanza presto mostreremo l'uso dello spazio di swap nonostante molti RAM gratuita.

E sì, è in ritardo - a volte male. Questo ha sicuramente un impatto sulle prestazioni.

Non conosco nessuna soluzione. Apple Engineering afferma che "funziona come progettato".

    
risposta data 15.01.2019 - 20:57
fonte

Leggi altre domande sui tag