17 votes

vm_compressor_mode (vm.compressor_mode) valeurs pour la mémoire compressée activée dans OS X

Contexte

En super utilisateur, avec un réponse acceptée :

Aussi dans Super Utilisateur :

- et d'après la première réponse, nous comprenons que la valeur de argument de démarrage vm_compressor ne correspond pas à la valeur de variable sysctl vm.compressor_mode .

Dans le code source ouvert Apple pour OS X 10.9, Mavericks ; dans xnu-2422.1.72 :

Dans vm_compressor.c :

/*
 * vm_compressor_mode has a heirarchy of control to set its value.
 * boot-args are checked first, then device-tree, and finally
 * the default value that is defined below. See vm_fault_init() for
 * the boot-arg & device-tree code.
 */

Sur un MacBookPro5,2 avec 8 GB de mémoire je trouve :

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

Près du pied de vm_pageout.h :

extern int vm_compressor_mode;
extern int vm_compressor_thread_count;

#define VM_PAGER_DEFAULT                0x1 /* Use default pager. */
#define VM_PAGER_COMPRESSOR_NO_SWAP         0x2 /* In-core compressor only. */
#define VM_PAGER_COMPRESSOR_WITH_SWAP           0x4 /* In-core compressor + swap backend. */
#define VM_PAGER_FREEZER_DEFAULT            0x8 /* Freezer backed by default pager.*/
#define VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP     0x10    /* Freezer backed by in-core compressor only i.e. frozen data remain in-core compressed.*/
#define VM_PAGER_FREEZER_COMPRESSOR_WITH_SWAP       0x20    /* Freezer backed by in-core compressor with swap support too.*/

#define VM_PAGER_MAX_MODES              6   /* Total number of vm compressor modes supported */

#define DEFAULT_PAGER_IS_ACTIVE     ((vm_compressor_mode & VM_PAGER_DEFAULT) == VM_PAGER_DEFAULT)

#define COMPRESSED_PAGER_IS_ACTIVE  (vm_compressor_mode & (VM_PAGER_COMPRESSOR_NO_SWAP | VM_PAGER_COMPRESSOR_WITH_SWAP))

#define DEFAULT_FREEZER_IS_ACTIVE   ((vm_compressor_mode & VM_PAGER_FREEZER_DEFAULT) == VM_PAGER_FREEZER_DEFAULT)

#define DEFAULT_FREEZER_COMPRESSED_PAGER_IS_ACTIVE      (vm_compressor_mode & (VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP | VM_PAGER_FREEZER_COMPRESSOR_WITH_SWAP))

Question

Est-il possible d'avoir un activé mode autre que 4 pour mémoire comprimée ?

Si c'est le cas, peut-on trouver une explication en clair des modes ?

0 votes

Le fichier d'en-tête que vous citez semble indiquer que les modes 2 et 4 signifient que le pager compressé est activé. C'est pourquoi votre question me laisse un peu perplexe : voulez-vous dire que vous avez essayé le mode 2 et qu'il n'a pas activé la mémoire compressée ?

1 votes

4voto

Antonio Malcolm Points 141

Je ne suis pas complètement certain des options FREEZER, si ce n'est qu'une option FREEZER_COMPRESSOR utilise le swap (utilise l'espace libre sur un disque) lorsque la RAM est faible ou épuisée, alors que l'autre ne le fait pas.

Ce que je pense, c'est que les options FREEZER servent à gérer la mémoire pour les processus gelés. Peut-être est-ce quelque chose d'expérimental, à utiliser en combinaison avec App Nap ? Je pense que c'était quelque chose qu'ils testaient avec iOS il y a quelques années.

Ce que je sais, c'est que l'option 1 n'utilise pas de compression et correspond à la bonne vieille gestion de la mémoire d'OS X que nous connaissons tous mieux. Si vous rencontrez des problèmes que vous soupçonnez d'être liés à la compression de la mémoire, vous pouvez essayer ce paramètre.

L'option 2 utilise une mémoire comprimée sans swap (pas d'écriture sur le disque lorsque la RAM est faible ou épuisée).

L'option 4 utilise à la fois la compression et le swap.

L'option 8 utilise le FREEZER quel qu'il soit, soutenu par la mise en œuvre de l'option 1.

3 votes

Existe-t-il une documentation sur les fonctions du congélateur ?

0 votes

Il est intéressant de noter que la modification de apple.stackexchange.com/questions/175572 Apple a répondu à un radar, à un retour d'information ou à un cas d'assistance et l'option traditionnelle 1 est connue pour échouer dans certains cas et n'est plus un mode pris en charge.

0 votes

@bmike C'est logique, compte tenu de la chronologie. Je suis depuis passé à Linux + LXDM + Openbox, avec une personnalisation lourde mais réutilisable, car je voulais plus de contrôle sur mon système d'exploitation et mon environnement logiciel de travail, plutôt que l'inverse.

1voto

own2pwn Points 143

Je ne peux pas ajouter de commentaire, alors je vais écrire comme réponse : On dirait que le congélateur est le brevet d'Apple technologie et si vous utilisez VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP il ne devrait pas utiliser le compresseur aussi ? (voir, le compresseur est présent, mais n'est pas activé)

En répondant à la question, vous pouvez avoir :

  1. VM_PAGER_COMPRESSOR_WITH_SWAP - mémoire comprimée + swap
  2. VM_PAGER_COMPRESSOR_NO_SWAP - mémoire comprimée sans swap
  3. VM_PAGER_COMPRESSOR_NO_SWAP_PLUS_FREEZER_COMPRESSOR_WITH_SWAP - mémoire compressée + swap du congélateur

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X