Pourquoi devrais-je désactiver le fichier d'échange sous Mac OS X?

51

Je suis tombé sur un fil concernant l'installation d'un lecteur SSD dans MacBook Pro.
Quelqu'un dans les commentaires a également recommandé de désactiver le fichier d'échange mais n'a pas expliqué pourquoi:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
sudo rm /private/var/vm/swapfile*

Je me demande pourquoi on voudrait désactiver le fichier d'échange sous Mac OS X.
Augmente-t-il les performances? La stabilité?
Des inconvénients?

Enfin, est-il judicieux de désactiver le fichier d'échange lorsque vous n'utilisez pas de disque SSD?

Dan
la source
11
Il est souvent désactivé par les moins avertis car ils ont entendu sur certains blogs que la performance a explosé. Les disques SSD constituent également un bon banc d’essais car ils sont intrinsèquement rapides. Ne fais pas ça. Cela diminuera la stabilité et, avec le temps, conduira à des effets catastrophiques. À ce jour, je n'ai vu aucune donnée réelle (valide et fiable) montrant une augmentation des performances. Et c'est un composant essentiel d'un système d'exploitation, que vous
2
Quels effets catastrophiques? Juste curieux ... il semble que ma machine (MacBook Pro de 4 Go) soit beaucoup plus rapide. Par exemple, lorsque j'ouvre de nouvelles fenêtres de terminal, il n'y a plus de blocage ... c'est instantané où cela prenait plusieurs secondes auparavant. Et j'ai pu ouvrir deux fois plus d'applications que d'habitude et rien de grave ne s'est produit.
orange80 le
4
orange80: La cause habituelle des fenêtres de terminal lentes est le processus de connexion à la recherche de la connexion précédente, qui peut être corrigé par hushlogin: apple.stackexchange.com/a/54167/22570 - avez-vous déjà redémarré après avoir modifié les paramètres de swap, par exemple ? Il n'y a aucune raison pour que la vitesse de la fenêtre de terminal soit améliorée en supprimant l'échange.
Ken
Je comprends qu’avec un disque SSD de petite capacité, vous souhaiterez peut-être libérer de l’espace. Mais du côté des performances, les disques SSD sont bien plus rapides que les disques durs. Je ne vois donc pas comment le fait de désactiver l’échange dans un système d’exploitation basé sur SSD améliorerait réellement les performances. Une expérience à ce sujet? Merci.
1
En super utilisateur, avec une réponse acceptée: Désactiver le dynamic_pager de Mac? (2012-04-27)
Graham Perrin

Réponses:

39

se demander pourquoi on voudrait désactiver le fichier d'échange sous Mac OS X. Augmente-t-il les performances? La stabilité? Des inconvénients?

Je suppose que les gens le feraient pour un lecteur SSD, car ces lecteurs n'ont pas la même durée de vie que les lecteurs de disque à rotation magnétique standard. Le nombre de cycles d'écriture étant plus limité, il est donc probable que leur utilisation avec un fichier d'échange utiliserait ces cycles plus rapidement.

Enfin, est-il judicieux de désactiver le fichier d'échange lorsque vous n'utilisez pas de disque SSD?

Si vous avez beaucoup de RAM, cela pourrait éventuellement améliorer les performances, mais ce n'est pas une bonne idée en général. Si vous vous heurtez au plafond de la mémoire, les choses vont devenir instables.

De plus, la mémoire câblée n'est pas libérée lorsqu'elle devient invalide, elle l'est uniquement lorsqu'un événement de sortie de page est déclenché, ce qui ne se produira pas si la mémoire virtuelle est désactivée. Il ne faudra donc pas longtemps pour que toute votre mémoire soit engloutie, même si elle n'est plus utilisée.

ghoppe
la source
4
Le système de mémoire virtuelle mac est très paresseux dans la mesure où il ne crée les fichiers d'échange physiques que lorsqu'il est temps d'échanger la mémoire réelle. Quelle que soit l’accélération que vous constaterez si vous n’avez pas à retarder les choses pour permettre l’écriture à l’échange, les gains de vitesse obtenus précédemment grâce à l’échange d’échange sont presque certainement compensés. Avoir un échange rend les macs plus rapides. Le reste de la réponse est sur place - bien fait!
bmike
2
@geotavros Le système de mémoire virtuelle sous Mac OS X ne fonctionne pas de la même manière que Windows. Faites-moi confiance, votre Mac fonctionnera plus rapidement avec la mémoire virtuelle activée avec 4 Go de mémoire. Désactiver la machine virtuelle ne vous causera que des maux de tête et une instabilité du système.
ghoppe
3
Pour votre information, un disque SSD moderne avec un niveau d'écriture et une capacité décente (128 Go), écrit en continu, aura une limite de cycle d'écriture mesurée en siècles. C’était une crainte raisonnable en 2000 avec de petits disques SSD primitifs, mais plus maintenant.
Ken
3
L'amélioration des performances est spectaculaire pour un MacBookPro5,2 doté de 8 Go de mémoire. Pour Snow Leopard ou Lion dans un VirtualBoxVM, l’amélioration est stupéfiante. Dans les trois cas, le système d'exploitation semble utiliser la mémoire de manière à minimiser le risque d'atteindre la «limite» (où tout s'arrête de manière efficace), mais ce risque demeure, il est donc raisonnable d'observer l'utilisation dans Activity Monitor.
Graham Perrin
2
Pour information, VM (ou mémoire virtuelle) ne doit pas être confondu avec le fichier d'échange. Windows, OS X, * BSD, Linux et de nombreux Unix utilisent tous la mémoire virtuelle. Généralement, l’architecture de ce système d’exploitation donne une machine virtuelle par processus, la mémoire allouée au processus dans cette zone et le système d’exploitation veillant à placer cette mémoire allouée dans la mémoire vive ou le swap, selon le système d’exploitation. Avoir ou non un échange peut changer d’une manière ou d’une autre aux performances pour différents critères (rapidité, réactivité, etc.), cela dépendra de la charge de travail de chacun de nous. Comme le disent les Anglais: votre kilométrage peut varier! Et grandement dans ce cas.
Huygens
27

La raison pour laquelle ils ont désactivé le fichier d'échange est probablement due à la paranoïa du fait que les disques SSD ont un nombre maximal d'écritures par bloc. Les fichiers d'échange peuvent être écrits fréquemment, entraînant éventuellement une fragmentation du disque (ainsi que du système de fichiers) et, éventuellement, une défaillance plus rapide du disque.

Cela dit, il s’agit bien là d’une optimisation prématurée. Il est presque toujours une idée HORRIBLE , HORRIBLE de désactiver votre fichier d'échange. Le fichier d'échange est là pour que vos programmes en cours utilisent plus de mémoire que vous n'avez physiquement installée. Si vous le désactivez, vous ne pourrez peut-être pas exécuter autant de programmes en même temps (et la limite sera beaucoup plus basse que prévu), ou vous rencontrerez peut-être des problèmes (comme le gel et le redémarrage de l'ordinateur). vous manquez de mémoire.

Ce dernier que j'ai connu (avec le fichier d'échange activé) lorsque je manque d'espace disque. J'ai eu un lecteur de 120 Go avec ~ 3 concerts gratuits. Tout en jouant à Civilization IV (un grand jeu en plein écran), le système n’a plus d’espace disque disponible (environ 50 Mo disponibles) et présente la fenêtre "Tuer les applications maintenant". Cela se cachait derrière le jeu en plein écran, alors le système vient de se verrouiller. Si je n'avais pas été en mesure de faire ssh depuis un autre Mac pour tuer plusieurs applications à distance, j'aurais dû maintenir le bouton d'alimentation enfoncé.

CajunLuke
la source
6
Je voudrais faire écho à quelle mauvaise idée c'est. Le swap est utilisé même si vous avez 16 Go de RAM. Pas autant, mais un tout petit peu est déjà écrit en swap. Toujours. C'est une sauvegarde. Et même si le système d'exploitation peut fonctionner sans cela, vous ne pouvez pas savoir comment se comportent les applications tierces. HD être écrit à. C'est un fait si la vie. Et non, il n'y aura pas d'augmentation de la performance du "monde réel". C'est un placebo.
4
@cksum Dans certains scénarios de serveur spécifiques, les administrateurs système désactivent le fichier d'échange car cela accélère cette configuration spécifique, mais ils ne le font pas sans effectuer de tests, afin de s'assurer qu'ils ne manqueront pas de mémoire (a) et ) il est en fait plus rapide. Mais c'est un serveur géré par des professionnels: ce n'est jamais nécessaire sur une machine grand public.
CajunLuke le
@ cksum Je suis d'accord avec votre première phrase, vous avez raison avec les deuxième, troisième et quatrième phrases, mais le reste, c'est de la foutaise. Un système d'exploitation ne remplace pas la "sauvegarde", il échange pour rendre plus de mémoire disponible au processus actif qui l'exige ou pour accélérer les E / S en mettant en mémoire tampon les données, de sorte qu'une mémoire inactive peut être libérée longtemps dans la RAM. Lorsque vous développez une application, vous demandez de la mémoire au système d'exploitation. Cette mémoire fait partie de votre utilisation de la mémoire virtuelle. En tant que développeur ou application, vous ne savez pas si le système d'exploitation met cette mémoire ou une partie de celle-ci dans la RAM physique ou dans un swap. (à suivre)
Huygens le
Par conséquent, si une application tierce demande plus de mémoire que nécessaire, le système d'exploitation lui attribue une erreur. Ceci est indépendant d'avoir swap ou non. Avoir un échange ne fera que placer la limite plus haut, c'est tout. En ce qui concerne les performances, si vous avez 2 utilisateurs connectés, si l'utilisateur actif utilise un éditeur vidéo avec des fichiers volumineux, le système d'exploitation peut commencer à mettre des pages de mémoire de l'utilisateur inactif dans l'échange afin d'accélérer les tâches effectuées par l'utilisateur actif. Vous obtenez de meilleures performances en termes de vitesse dans ce cas. Cependant, le passage à l'autre utilisateur sera plus lent, le système d'exploitation doit relire le swap. Ce n'est pas un placebo!
Huygens
1
Une fois (sous Linux), j'ai oublié de configurer une partition de swap lors de la configuration. Lorsque je me suis accroché, j’ai pensé que c’était un bogue du noyau. En fait, c’est le manque de mémoire swap lorsqu’on joue à mincecraft. utilisez swap.
Wyatt8740
12

Vous avez deux bonnes réponses qui expliquent pourquoi il s’agit d’une mauvaise idée dans presque tous les cas où le système peut écrire sur un périphérique de stockage.

La raison pour laquelle vous pouvez désactiver le swap est que le système peut fonctionner sur un support en lecture seule, tel qu'un CD, un DVD, une image réseau verrouillée utilisant NetBoot ou une clé USB en lecture seule, comme le nouvel installateur Lion ou une clé de récupération livrée avec certains macs dépourvus d'optique. disques.

Avoir de la mémoire virtuelle signifie que le système peut fonctionner beaucoup plus rapidement et utiliser moins de RAM lorsque de nombreux programmes utilisent le même code de bibliothèque commun. Chaque programme pense disposer d'une copie privée de tout le code dont il a besoin, mais lorsqu'il existe une mémoire virtuelle, le système dispose d'un moyen agréable de mapper la même RAM physique à différents programmes.

La désactivation de swap empêche le mac d'utiliser une petite partie de votre disque en tant que cache pour une partie de la mémoire calculée, mais le programme n'était pas assez intelligent pour écrire ces résultats dans un cache approprié.

Si vous avez une sauvegarde et le temps d'expérimenter, pourquoi ne pas l'éteindre et voir comment votre expérience change.

Je garderais mon échange même si je savais avec certitude que je devais payer un nouveau disque chaque année. La rapidité que me donne l'échange est énorme. Ce n'est pas toujours le cas, et parfois, lorsque le système se débat ou pagine, vous pouvez avoir le contraire. Beaucoup de gens choisissent de s'exécuter sans swap pour obtenir une erreur d'allocation de mémoire plutôt que de laisser leur mac démarrer la pagination, ce qui peut ralentir la machine lorsque tout ne fonctionne pas correctement.

Votre cas avec un SSD peut être différent, alors laissez-nous savoir si vous l'essayez.

bmike
la source
2
Je trouve le contraire, une énorme accélération lorsque dynamic_pager est désactivé . La capture d'écran actuellement affichée sur apple.stackexchange.com/a/60661/8546 indique la taille de la mémoire virtuelle et les entrées de page mesurées lorsque ce démon est désactivé (tant que les fichiers d'échange ne sont pas utilisés).
Graham Perrin
Qu'est-ce qui est précisément mesuré pour déterminer une accélération? (Ou voyez-vous l'absence de retards ou de retards dans l'interface utilisateur ou quelque chose d'autre qui n'est pas facilement quantifiable ou mesurable?)
bmike
Sans mesurer: avec Lion, la plupart des choses semblaient sensiblement plus rapides - assez pour que je puisse utiliser le mot énorme . Plus récemment: 10.8 dans VirtualBoxVM, par exemple, pour se connecter et reprendre Activity Monitor prend seize secondes avec dynamic_pager, douze secondes sans. Pour une comparaison plus large et plus mesurée, nous pourrions utiliser Phoronix Test Suite ou Geekbench .
Graham Perrin
9

Je serai le vainqueur ici: j'ai désactivé swap sur mon MacBook Pro unibody fin 2008 et cela a nettement amélioré les performances: moins d'attente, plus de commutation entre les applications.

Remarquez que je garde un oeil sur ma mémoire libre et que j'ai 6 Go installés. Les quelques fois où j'ai atteint la limite de mémoire, le système s'est écrasé :-D

Sur mon nouveau MacBook Air, je ne rêverais pas de désactiver le swap, il est déjà rapide avec ce dernier et ne dispose que de 4 Go pour commencer.

Une autre bonne raison de désactiver le swap sur un disque SSD est qu’ils ont de très petits disques SSD et qu’ils ont besoin de tout l’espace disponible. En tout cas, ne le fais pas.

w00t
la source
Génial d'avoir une expérience réelle où cela a fonctionné. Quel était l'engagement de la RAM sur la machine lorsque le swap était désactivé? Que s'est-il passé lorsque vous avez ouvert plus d'applications que la RAM ne pourrait en contenir? Combien de RAM avez-vous et quelles applications fonctionneraient dans cet espace confortablement sans erreurs?
bmike
1
@bmike, pas sûr, le système se bloque :-D, 6 Go et tous ceux que j'utilise :). Aperture ou XCode sont de véritables hordes de mémoire et ils peuvent parfois basculer sur le système, mais Skype, Mail, Adium, Safari, Chrome, iTunes et OmniFocus sont parfaitement compatibles ...
w00t
6

Mon expérience est similaire à celle de w00t. J'ai désactivé le fichier d'échange sur SL et Lion, car l'augmentation des performances fonctionne pour moi. L'utilisation câblée devient incontrôlable après environ une semaine, mais un simple redémarrage résout le problème. Je n'ai pas de disque SSD mais un disque lent à 5 400 tr / min. La durée de vie des disques SSD n'est pas aussi mauvaise que ce que les gens essaient de croire. Si vous le faites simplement parce que vous avez peur d'user votre disque SSD, rendez-vous à l' adresse suivante : http://www.anandtech.com/show/4159/ocz-vertex-3-pro-preview-the-first-sf2500- ssd / 2 et http://communities.intel.com/thread/21717?tstart=1 Intel évalue leurs lecteurs à plus de 20 Go par jour, chaque jour, jusqu'à 5 ans sur un lecteur de 80 Go. Les disques de grande taille dureront encore plus longtemps. L'utilisateur moyen n'utilise même pas 10 Go / jour.

Je veille à surveiller mon utilisation de 4 Go de mémoire avec les menus iStat et à utiliser un script Automator avec la commande "purge" bash (nécessite l'installation de Xcode) pour supprimer la mémoire inactive et ouvrir fréquemment davantage de mémoire disponible. Les rares fois où des applications avec des fuites de mémoire utilisaient toute la mémoire vive, je devais effectuer une réinitialisation matérielle. Les rares occasions où cela se produit et l'accélération en général font qu'il vaut la peine de garder le fichier d'échange désactivé pour moi. Je me rends compte que je ne peux pas avoir autant d'applications ouvertes en même temps que d'autres, mais je suis capable de travailler avec ça.

Shlepto
la source
Memory Scope a une option pour purger automatiquement. (si dynamic_pager est activé, je rejette les purges.)
Graham Perrin
5

J’en viens à mes 2 centimes pour ceux qui souhaitent désactiver l’échange car de petits disques SSD: l’image en veille utilise beaucoup plus d’espace disque.

Et, pour ceux qui s'inquiètent de la durée de vie limitée du disque SSD (en particulier ceux dotés d'un MBA et de puces SSD câblées qui NE PEUVENT PAS être remplacées), si votre ordinateur dort plusieurs fois par jour, la réécriture de l'image du sommeil peut être un problème. Mon ordinateur portable dort facilement une demi-douzaine de fois par jour. Cela écrit 48 Go de données sur mon disque SSD quotidiennement.

La solution dans chaque cas consiste à désactiver l'hibernation, puis à supprimer le fichier sleepimage qui est aussi volumineux que votre RAM installée (8 Go dans mon cas).

Le risque est que si votre batterie meurt pendant que votre ordinateur portable est en veille, votre état actuel sera perdu. Cela équivaudra à un redémarrage forcé forcé. Aucun dommage physique à l'ordinateur portable, juste une perte de productivité. Si vous désactivez le mode veille prolongée, puis que votre batterie est faible et que vous ne pouvez pas charger, ayez juste le code à portée de main pour activer le mode veille prolongée!

Pour désactiver l'hibernation, dans le terminal, la commande est la suivante:

 sudo pmset -a hibernatemode 0

Pour activer le mode hibernation, la commande est la suivante:

 sudo pmset -a hibernatemode 3

Pour supprimer la dernière image de veille afin de libérer de l'espace sur les disques SSD / HDD (cela n'a de sens que si vous désactivez le mode veille prolongée, sinon une nouvelle image occupera cet espace la prochaine fois que votre ordinateur dormira):

 sudo rm -rf /var/vm/sleepimage

Source: homme pmset

utilisateur38390
la source
3

La désactivation de permutation n'augmenter les performances. Par exemple, j'utilise régulièrement Aperture et lorsque la permutation augmente, les performances se détériorent et lorsqu'elles dépassent 1 Go, je dois redémarrer l'OS pour la nettoyer et rétablir les performances. Remarque: la machine dispose de 6 Go de RAM et PAS de la totalité de celle-ci, environ 3 Go sont gratuits, mais l’échange 1G dégrade considérablement les performances.

Konstantin
la source
3

Je désactive le swap sur les machines depuis de nombreuses années, à la fois sous OS X et d'autres variantes UNIX.

J'utilise un outil pour m'alerter lorsque la mémoire est insuffisante et je ne m'inquiète pas de la panne de mon système.

Mon iMac a 12 Go, et avec le swap désactivé, j'ai presque toujours 4 Go gratuits, même avec plusieurs outils de développement, applications, navigateurs, etc.

opensourceame
la source
5
Quel outil de mémoire utilisez-vous?
Dmitriy
1

Le motif répété ici est la suivante:

Ceux qui ont désactivé le fichier d'échange ont connu de meilleures performances (avec suffisamment de RAM physique)

Ceux qui n'ont PAS désactivé l'espace de permutation sont certains que cela ne fonctionnera pas et que quelque chose de terrible se produira et ils vous conseillent vivement de ne pas le faire.

Cela est dû simplement à deux choses:

  1. Idées dépassées sur la rareté et le coût élevé de la RAM physique qui ne sont plus valables
  2. Un mécanisme de permutation vraiment médiocre sous MacOS, entraînant l’utilisation de fichiers de permutation lorsque la mémoire vive physique est suffisante.
Riches
la source
1
Si l'espace d'échange était utilisé UNIQUEMENT lorsque cela était nécessaire, ce serait génial. Cependant, ce n'est pas le cas. J'exécute des machines virtuelles 2 Go et 4 Go sur mon MacOS. Si j'ai 1,6 Go de RAM libre, je devrais pouvoir exécuter une machine virtuelle de 1 Go (ou un autre programme), mais je ne peux pas, car le système d'exploitation commence à le paginer. En conséquence, je ne peux utiliser que 85 à 90% de ma RAM. Si je veux accéder à TOUTES ma RAM, je dois désactiver la pagination. Je le fais sur toutes mes machines Windows et j'aimerais faire de même sur mon MacOS. Si un programme manque de RAM, il échouera. C'est ce que je veux arriver. Je ne veux pas d'autres applications en cours d'exécution
3
YMMV. Je ne désactive plus le swap car je ne l'ai pas trouvé pour améliorer les performances sur les ordinateurs modernes chargés de RAM. J'avais l'habitude de le faire par le passé, car cela m'aidait à l'époque des mauvais jours. De nos jours, non seulement je ne vois AUCUN changement de performances en désactivant le swap, mais je constate une instabilité accrue des applications.
Brian Knoblauch
1
La chose indésirable qui se produira est qu’un humain oubliera qu’il ne peut pas lancer un autre programme et qu’à terme, la machine se bloquera en raison d’une erreur de mémoire insuffisante. Que ce soit terrible, humoristique ou éducatif dépend du timing, de la fréquence de vos sauvegardes et de votre tolérance aux retards.
bmike
1

Juste une expérience personnelle.

Memory Amount    |
 4 GB            | Don't disable it, Mountain Lion itself boots with about 1 GB.
 8 GB            | Do if you don't run apps that requires more than 1 GB of memory, in short, virtualization software, Photoshop, and stuff.
16 GB or more    | Do it! Even Xcode or Final Cut won't use more than 4 GB of memory, at least as I've seen. Just don't run too many virtual machines though.

Remarque rapide: si votre Mac utilise des graphiques intégrés, sa mémoire est partagée avec votre mémoire principale avec kernel_task. Ainsi, vous devrez soustraire ce montant de votre total utilisable.

Utilisateurs de disques SSD, il est satisfaisant d’avoir plus d’espace, mais il est important de savoir que la mémoire virtuelle prospère sur les disques SSD. Vous pouvez en tirer un gain de performances considérable. Cela fait-il mal au SSD? Oui, mais vous allez longtemps remplacer votre Mac avant de vous en rendre compte.

Shane Hsu
la source
1
J'ai personnellement désactivé la mémoire virtuelle sur mon MacBook Pro Retina avec seulement 8 Go de mémoire. Voici le calcul, le système utilise environ 2 Go de mémoire pour compter les graphiques intégrés. Donc, ça fait 6 Go pour moi. Je fais Xcode pour le travail, ça ne consomme pas plus de 2 Go de mémoire. J'ai donc beaucoup à épargner.
Shane Hsu
1

Résumé

Une zone d'échange (appelée partition d'échange, fichier d'échange ou fichier de page) est simplement un mécanisme permettant d'augmenter la mémoire physique adressable par le système d'exploitation.

Si vous avez peu de RAM physique disponible et sur la machine d'aujourd'hui, je dirais si vous avez 4 Go de RAM ou moins. Ensuite, vous devriez probablement avoir un échange. Mais cela dépend de votre charge de travail et de la manière dont vous utilisez votre machine.

Si vous disposez de plus de 4 Go de RAM, il est fort probable que votre système n'utilise jamais l'échange. Donc, si le swap est activé ou non, cela ne changera pas beaucoup.
Bien que cela dépende d'autres facteurs, plus votre ordinateur fonctionnera longtemps, plus le système d'exploitation échangera vraisemblablement une petite partie inutilisée de la mémoire RAM contre un événement d'échange, même s'il reste apparemment beaucoup de place. Cependant, le système utilise souvent la RAM "libre" pour les tampons de fichiers et autres, et certaines charges de travail peuvent faire en sorte que votre tampon de fichiers utilise toute la RAM disponible.

Informations d'arrière-plan

De toute façon, que se passerait-il si vous désactiviez l'échange et que votre mémoire était complètement utilisée? Eh bien, la prochaine fois qu'une application demandera plus de mémoire (comme avec un malloc ou un realloc), elle recevra une erreur! S'il est correctement codé, l'application le détectera, mais le traitement d'une telle erreur et la fermeture du programme en douceur pourraient être un défi! Cependant, de nombreux développeurs ne testent pas l'allocation de mémoire réussie et l'application se bloque dès que cette mémoire non allouée va être utilisée. Il y a donc de fortes chances que l'application se bloque et que de nombreuses applications tombent en panne, car plusieurs applications s'exécutent généralement en même temps. J'espère que le noyau lui-même devrait être immunisé, mais d'après mon expérience, ce n'était pas toujours le cas.

Si vous avez un échange, vous aurez le même comportement , mais vous avez une limite plus élevée et il est donc probable que vous n'atteignez pas cette limite.

J'ai personnellement 2 machines avec 8 et 16 Go de RAM. Mon utilisation personnelle de ces machines ne devrait jamais m'amener à utiliser toute cette mémoire vive (aujourd'hui! Peut-être dans quelques années, cela pourrait être différent). La seule raison pour laquelle je voudrais atteindre les limites physiques de la RAM est qu'un processus est devenu frauduleux et consomme toute la RAM. En l'absence de swap est un soulagement, le noyau va rapidement tuer le processus non autorisé dès qu'il atteint la limite de RAM. Si vous avez un échange, vous vivrez une expérience douloureuse (peut-être pas sur SSD ...), car votre système échangera et échangera et deviendra parfois totalement insensible jusqu'à ce que votre noyau tue le coupable!

Conseille

Vous ne devriez pas avoir peur que des gens vous disent que quelque chose de terriblement mauvais pourrait arriver si vous supprimez l'échange. Si vous le faites, votre espace d'adressage physique sera réduit, comme si vous passiez de 4 Go de RAM à 2 Go. Feriez-vous une telle chose? Ensuite, vous ne devriez pas retirer le swap. Vous pouvez cependant décider de le limiter, et ce serait sage .

Si on pense que sa charge de travail l’amène à utiliser plus de RAM physique ou plus que la RAM physique disponible, ou s’il faut beaucoup d’E / S (lecture / écriture sur disques), l’échange doit être conservé.

Lorsqu'un échange doit être conservé, un utilisateur doit essayer de définir des limites à la quantité de mémoire qu'un processus peut utiliser. Sur un système Linux, on pourrait utiliser les limites de mémoire des groupes de contrôle pour éviter que certains processus ne deviennent incontrôlables. Je ne connais pas l'équivalent sous OS X, mais cela devrait être la solution.

Toutefois, si un utilisateur dispose de suffisamment de mémoire pour sa charge de travail, il peut désactiver le swap en toute sécurité ou le conserver. Cela ne changera pas beaucoup, même en termes de performances, car si le système n'utilise pas le swap, vous ne serez pas affecté par une baisse des performances (particulièrement visible sur un ancien disque dur rotatif, moins sur SSD).

Utiliser la même astuce que ci-dessus pour essayer de définir des limites de mémoire par processus ou groupe de processus est également bénéfique dans le cas où la RAM disponible est plus que suffisante.

Mon propre exemple

J'ai un vieux PC avec 1 Go de RAM, là j'ai un gros swap: 4 Go pour pouvoir exécuter Firefox et d'autres applications dessus. J'ai tendance à utiliser le moins d'applications possible (ou d'onglets dans Firefox) pour avoir une expérience utilisateur correcte.

J'ai un petit serveur avec 8 Go de RAM. Là, je connais exactement ma charge de travail et je ne veux pas que mon serveur ralentisse, car un processus est devenu malveillant et consomme toute la mémoire. Là, je n’ai aucune barrière imposant la mémoire swap et cgroup, ce qui empêche les applications ou les services de tomber en panne, mais pas le noyau. Btw, c'est une machine Linux.

Ensuite, j'ai mon Mac avec 16 Go de RAM. Je n'en suis pas le seul utilisateur, et cela ne nous dérangerait pas d'attendre lors du changement d'utilisateur. Là, nous avons un échange, il m'est difficile de planifier la charge de travail des autres utilisateurs de cet ordinateur. Même si je serais le seul à utiliser swap. J'utilise souvent plusieurs machines virtuelles et utilise des applications consommant de la mémoire, mais pas toutes en même temps. Par conséquent, je ne voudrais pas que le système d'exploitation permute en une application inutilisée pour pouvoir obtenir des E / S de disque plus rapides ou lancer une autre machine virtuelle. Jusqu'à présent, je n'ai pas vu cette machine échanger!

Huygens
la source
0

Je viens de désactiver le fichier d'échange sur mon Macbook air 2011 (4 Go de RAM, 128 Go de SSD) parce que j'en avais marre du fichier d'échange de consommer lentement tout mon espace disque restant, puis de le redémarrer. De cette façon, l’idée est que je vais exécuter moins de programmes.

Je verrai si cela fonctionne vraiment, ou si je devrai redémarrer de toute façon pour vider la mémoire "Wired", mais pour l'instant cela semble bien fonctionner. La seule fois où la mémoire était vraiment pleine, l'ordinateur a ralenti de la même manière que lorsque mon SSD est à court de mémoire - mais la récupération a été beaucoup plus rapide dès que j'ai quitté les applications. (Et j’ai effectivement pu quitter des applications, ce que je ne suis généralement pas lorsque le SSD est plein).

Je vais voir comment ça se passe en termes de stabilité, mais jusqu'à présent, je suis un bon campeur. Cela me force également à exécuter moins d'applications (et d'onglets Chrome) à la fois, ce qui est bon pour la focalisation sur les tâches.

Josh Penman
la source
0

La principale raison de désactiver le fichier d'échange n'est pas la vitesse, mais l'espace disque.

S'il s'agit d'un utilisateur qui s'exécute régulièrement à moins de 5 Go d'un lecteur complet, la désactivation de l'échange interrompt le harcèlement constant du manque d'espace; Je termine régulièrement avec un fichier d'échange de 4 Go ou plus provenant de la navigation de routine.

L’amélioration de la vitesse est stupéfiante sur les anciennes machines; ce n'est pas si impressionnant sur les machines modernes équipées de SSD. (Sous OSX 10.0 sur un iMac, l’utilisation de la mémoire virtuelle réduisait de moitié la vitesse de nombreuses opérations, y compris la copie de fichiers entre lecteurs).

aramis
la source
Cela ressemble plus à la correction du klaxon car les freins ne fonctionnent pas. Si le lecteur est trop plein, récupérez une partie des données.
Tetsujin
@Tetsujin Le fichier unique le plus volumineux sur ce lecteur était le fichier d'échange.
aramis
mon point est toujours valable. Moins de données, plus de disque dur, ou plus de RAM et vous n'auriez pas à le faire.
Tetsujin