2 votes

Commande de purge - Impossible de purger les tampons du disque, erreur #-2 ?

Lorsque j'essaie d'exécuter la commande de purge, j'obtiens la même erreur à chaque fois.

[ERROR] <CPDevice.c:3816>   Unable to create new counter client.
[ERROR] <CPOSX.c:1172>  Unable to get user client so as to poke the kernel. 
Unable to purge disk buffers, error #-2.

J'ai essayé avec et sans sudo, en pensant initialement qu'il était peut-être incapable de le faire parce qu'il n'avait pas l'accès approprié, et qu'ils n'avaient tout simplement pas programmé de vérification des autorisations. Mais c'est la même erreur.

J'ai une double installation de Xcode, ce qui, je pense, peut être le problème ici. J'ai 3.2.6 installé dans un répertoire personnalisé (/Xcode 3) et j'ai Xcode 4.6.3 depuis le Mac App Store. J'ai installé les Command Line Tools les plus récents (2013.4) à partir de Xcode 4. J'utilise OS X 10.7.4 Lion.

Avant que quelqu'un ne me dise que je devrais laisser le système d'exploitation gérer lui-même la mémoire inactive parce qu'il le fait très bien, non, il ne le fait pas. Pas le moins du monde. Normalement, cela fonctionne assez bien pour ne pas me déranger. Mais chaque fois que j'utilise un type de VM, je rencontre des problèmes avec la mémoire qui ne se libère jamais.

Par exemple, je peux démarrer une instance d'une VM d'émulation. Elle utilisera environ 600 Mo de mémoire. Lorsque je termine entièrement l'émulation, la mémoire ne se libère pas. En plus de cela, si je reviens en arrière et relance exactement la même émulation, les 600 Mo inactifs ne sont pas réutilisés comme on pourrait l'espérer. Non, ils restent là. Et un autre 600 du pool libre est utilisé. Et lorsque cette seconde émulation se termine, j'ai maintenant 1,2 Go de mémoire inactive. Normalement, cela devrait être correct, si la mémoire inactive était libérée lorsque toute la mémoire libre était utilisée. Mais ce n'est pas le cas. Elle reste là et ne se libère jamais. Elle se déplace sur le disque à la place.

Ce problème est particulièrement gênant avec les VM de virtualisation qui utilisent 4 Go, voire plus, de RAM dans le cadre de mon utilisation normale. Il suffit de les redémarrer plus d'une fois pour que les choses ralentissent à cause de l'échange de disques.

J'avais l'habitude d'utiliser la commande purge tout le temps sur 10.5 Leopard avec Xcode 3.1.4, et les problèmes sur Leopard étaient loin d'être aussi graves avec la gestion automatique de la mémoire. J'utilisais simplement la commande purge pour faire table rase sans avoir à redémarrer. Je ne peux même pas faire ça maintenant. Et contrairement à ce que certaines personnes pourraient vous dire, il est un problème grave.

Toute idée serait appréciée. Une dernière chose. J'ai utilisé xcode-select pour sélectionner Xcode 4.6.3 plutôt que 3.2.6. Je n'utilise 3.2.6 que pour le développement et la compilation. Macports, Homebrew, et d'autres choses, exigent que Xcode 4 soit installé et sélectionné, ce qui est la seule raison pour laquelle je l'ai. Mais si je me souviens bien, la purge ne fonctionnait pas non plus lorsque j'avais sélectionné Xcode 3 à la place.

0 votes

Essayez d'exécuter la commande en tant que sudo purge o sudo bash puis purge .

0 votes

Même erreur. En fait, j'ai indiqué que j'avais essayé sudo en haut de mon message. Et lancer purge à travers un shell sudo bash n'a pas fait de différence non plus. Même erreur.

0 votes

Je vous conseille de faire un peu de nettoyage autour des != versions de Xcode et de recompiler tout ce qui collait à la version 3.x. Si le problème change, mettez à jour votre OQ, cela vous aidera.

1voto

Rich Points 2429

Privilège nécessaire

Sur Mountain Lion purge peut être exécuté à partir d'un compte utilisateur normal.

Sur Mavericks La purge ne peut être exécutée qu'à partir de root (par le biais de sudo ). Si vous tentez de l'exécuter avec un compte utilisateur normal, vous obtiendrez un message d'erreur :

Unable to purge disk buffers: Operation not permitted

Fonction réelle

purge n'agit pas directement sur la mémoire principale. Sa fonction principale est de mettre fin à toutes les entrées-sorties en attente qui utilisent la mémoire principale. disque et ensuite à libérer tous les espaces occupés disque cache.

purge devrait libérer de l'espace disque pour faciliter la pagination et le swapping de la mémoire principale. C'est pourquoi de nombreuses personnes sont convaincues que purge était libérant mémoire principale. C'est une légende urbaine.

Défaut réel

Ce problème provient clairement du noyau de MacOS X. Il peut être causé par des programmes effectuant beaucoup d'E/S sur un système où la mémoire virtuelle est déjà fortement utilisée. Mais ces programmes sont de faux coupables.

Vous pouvez trouver un tel faux coupable exposé ici : Panique à Mountain Lion - décoder

Une panique du noyau est une défaillance du noyau. Le type de message d'erreur est un message d'erreur du noyau. Il s'agit d'une erreur du noyau.

D'après votre contexte actuel, je vous conseille d'exécuter sysdiagnose et ouvrez un dossier de bug chez Apple avec le résultat. Cet outil exécutera pour vous tous les outils pertinents pour analyser tout mauvais comportement de votre système ou de toute application qui y est exécutée.

Veuillez lire cette réponse professionnelle : Apple sysdiagnose

0 votes

Attention : ce n'est pas une réponse complète à la QO. Mais comme l'environnement de programmation n'est pas complètement propre (Xcode != versions), c'est un objectif inatteignable :(.

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