Citation

"La science, c'est ce que le père enseigne à son fils. La technologie, c'est ce que le fils enseigne à son papa." - Michel Serres, Philosophe

jeudi 28 février 2013

A mort le swap sous Mac OS X ou comment gérer sa mémoire vive

Un Mac peu garni en mémoire vive et utilisant des logiciels de traitement d'image (comme Adobe Photoshop) et ou de compositing (comme Adobe After Effects) aura tendance à très vite saturer ses barrettes de RAM.

Mac OS X est plutôt un bon gars, il ne se contente pas de vous limiter dans votre travail avec la seule quantité de mémoire dont vous disposez physiquement... toujours dans l'espoir de rendre votre "expérience utilisateur Apple" la plus agréable possible, il veut vous éviter à tout prix un plantage de votre application (et la perte des modifications du fichier sur lequel vous êtes en train de travailler), il préfère donc vous ralentir que de vous dire "stop" de façon brutale. Une fois les barrettes remplies, Mac OS X "dépasse les bornes" et se met à utiliser automatiquement une partie de votre disque dur système comme un réservoir de mémoire vive (que l'on va plus justement appeler mémoire virtuelle dans ce cas précis), le système se met à faire du swap ! Ça parait cool dit comme ça... ça vous fait plus de mémoire d'un coup ! Surtout qu'un disque dur a très souvent une capacité bien plus importante que celle disponible sur un petit jeu de barrettes (globalement un ordinateur est vendu avec 4 à 8 Go de mémoire vive et un disque dur en contenant 100 à 200 fois plus !)

Une barrette RAM brille par la facilité et la rapidité d'accès aux données...
mais elle souffre souvent d'une trop faible capacité !
Le problème est que cette mémoire virtuelle n'est donc plus logée sur les barrettes natives de l'ordinateur qui sont souvent bien plus véloces en terme de débit brut que le disque dur... mais surtout où les données éparpillées dans tous les coins sont accessibles de manière bien plus souple et fluide. Enfin un processeur d'ordinateur accède constamment à la mémoire vive, échange des tas de données avec les barrettes toutes les secondes... et voilà donc votre disque dur qui va devoir jouer ce rôle, lire et écrire constamment, souvent de minuscules portions de fichiers ! Si vous disposez d'un disque SSD véloce, vous pouvez être relativement tranquille et au pire ressentir un ralentissement acceptable de votre système... mais si vous disposez d'un disque dur à plateaux, les choses peuvent grandement s'envenimer et vous pouvez soudain commencer à entendre ce dernier gratter comme un malade ! Sous Mac OS X la petite roue colorée peut faire son apparition à la moindre de vos actions... et l'ordinateur devenir plus lent qu'un modèle sorti 15 ans avant lui !

Pire encore, vous pouvez risquer un crash, votre disque dur trop sollicité dans tous les sens lâche l'affaire, une des têtes de lecture/écriture s'écrase sur un des plateaux, arrache des particules magnétiques et le préjudice peut-être si important que le disque dur peut mourir sur place... ou "moindre mal", vous faire perdre des fichiers, notamment ceux essentiels au système et donc au redémarrage de la machine ! Ce n'est pas de la science-fiction, je l'ai vécu, c'est ce qui m'est arrivé il y a moins d'un an sur un Mac Pro : mémoire vive pleine, activation automatique du swap, disque dur qui s'affole, ralentissements, gel de la machine, crash du disque puis redémarrage impossible. Heureusement une sauvegarde Time Machine m'avait sauvé à l'époque et m'avait permis de me remettre en selle moins de 12 heures plus tard en ne perdant que quelques plumes... mais le mal avait bel et bien été fait !

Si vous disposez d'un peu de sous à investir dans votre évolution matérielle, il est possible que vous puissiez étendre la mémoire vive de votre ordinateur (d'autant que les offres commerciales sont à prix bas en ce moment - voir les prix chez un revendeur comme Crucial par exemple - et que le coût des barrettes risque d'augmenter dans les semaines qui viennent à cause d'un déséquilibre entre l'offre et la demande).

Si vous n'avez aucun budget pour ce type d'évolution matérielle, il vous reste des solutions logicielles (gratuites !). Pour commencer certaines applications très gourmandes vous offrent parfois la possibilité de purger la mémoire utilisée en interne alors que l'application est ouverte, c'est ce à quoi il faut penser en premier, par exemple dans After Effects il faut passer par le menu "Edition / Purger / Toute la mémoire" pour vider tous les caches qui s'accumulent lors de son utilisation... les résultats en terme de mémoire libérée peuvent être spectaculaires.

Le premier réflexe dans la gestion de votre mémoire vive est de purger
la mémoire utilisée par votre application... quand elle vous le permet !
Cette possibilité s'est avérée vitale pour moi sur des Mac disposant de peu de mémoire vive, After Effects en étant un très gros consommateur avec ses prévisualisations vidéo ! Mais toutes les applications de ne vous offre pas cette opportunité... il vous reste alors 2 solutions, plus générales :

- visualiser et prévenir l'augmentation d'utilisation de mémoire vive pour empêcher toute saturation
- désactiver le swap ou l'utilisation de mémoire virtuelle sur le disque (avec un risque de plantage)

Pour la première solution, il existe (entre une centaine d'autres) une petite application simple et gratuite sur le Mac App Store, "Memory Clean" (cliquez ici pour accéder à sa page et au lien de téléchargement). Une fois installée, une petite icône fait son apparition en haut à droite de votre barre de menu, d'un coup d'œil vous pouvez savoir combien il vous reste de mémoire libre et en un premier clic vous pouvez savoir comment votre mémoire est organisée... enfin en un second clic vous pouvez libérer la mémoire inactive de votre Mac et la rendre disponible, ce qui, si l'opération est faite avant l'amenuisement total de la mémoire libre, permettra à votre Mac d'éviter le piège du swap !

Mémoire vive libre (947 Mo) avant que Memory Clean n'intervienne...
... et mémoire vive libre juste après (9,65 Go) ! Mon Mac vient de décupler sa mémoire libre !
Bien sûr il n'y a pas de magie là-dedans, vous ne pourrez jamais obtenir plus de mémoire que vous en en possédez réellement sur vos barrettes... mais Memory Clean joue surtout sur la mémoire dite "inactive". En fait, lorsque vous lancez une application, cette dernière s'octroie une quantité de mémoire vive de manière arbitraire, dans cette quantité il n'y aura qu'une part réellement utilisée (plus ou moins importante en fonction des types de fichiers que vous allez ouvrir), la part de mémoire inutilisée sera considérée comme "inactive". Memory Clean, en lançant sa procédure de purge par le biais du bouton "Clean Memory", demande au système une quantité colossale de mémoire, Mac OS X s'exécute alors et lui en donne le plus possible, notamment en puisant dans la mémoire inactive de toutes les autres applications ouvertes... et aussitôt Memory Clean va redistribuer cette importante quantité de mémoire au système, la transformer en mémoire libre, vous mettant un peu plus à l'abris d'un éventuel swap !

Evidemment pour que ça ait un intérêt il faut toujours avoir un œil sur l'évolution de la mémoire libre pour la "remonter" à temps... mais Memory Clean offre cette possibilité puisque cette quantité est indiquée en temps réel juste derrière son icône, dans la barre de menu en haut à droite.

Memory Clean indique toujours la quantité de mémoire vive libre en temps réel
Par contre si Memory Clean devient impuissant à augmenter la mémoire vive libre malgré vos clics intempestifs sur le bouton "Clean Memory", c'est que votre Mac est vraiment tout près d'une réelle saturation... il est dans ce cas urgent de quitter une ou plusieurs applications gourmandes dont l'utilisation vous semble moins pertinente. Pour savoir quelles sont les applications les plus voraces, il vous suffit de vous rendre dans le dossier "Applications / Utilitaires" et de lancer l'application "Moniteur d'activité"... puis vous cliquez sur l'onglet "Mémoire système" en bas et enfin sur la colonne "Mémoire réelle" en veillant à ordonner les valeurs de la plus grande à la plus petite (flèche grise orientée vers le bas). Vous allez obtenir la liste des applications actuellement ouvertes et connaître pour chacune leur besoin en mémoire vive... les plus gourmandes en tête de liste.

Clin d'œil sur les applications les plus gourmandes en mémoire vive avec le Moniteur d'activité
Enfin, en dernier recours, si vous voulez absolument empêcher le swap sur votre machine (en risquant le plantage d'applications qui exigeraient plus de mémoire et se trouveraient donc face à un mur), vous pouvez passer par l'utilitaire OnyX (cliquez ici pour accéder à sa page et au lien de téléchargement). Cette application est un peu le couteau suisse qui manque à Mac OS X pour s'affranchir de certaines fonctions disponibles uniquement dans le Terminal. Ouvrez OnyX, cliquez sur l'onglet "Informations" puis sur le sous-onglet "Mémoire", tout comme dans Memory Clean vous avez un petit bouton "Purger" qui lui aussi vous permettra d'optimiser la mémoire vive libre (et si possible de l'augmenter)... mais surtout vous avez tout en bas un bouton "Désactiver" que l'on peut trouver nulle part ailleurs... qui vous permettra de désactiver la mémoire virtuelle !

Le bouton "Désactiver" en bas à droite va interdire l'usage de mémoire virtuelle à Mac OS X, adieu swap !
Cette opération est délicate, car comme l'indique OnyX très justement, "si vous avez moins de 4 Go de mémoire vive installée, il n'est pas recommandé de désactiver l'utilisation des fichiers d'échange de la mémoire virtuelle, car les applications peuvent se bloquer". Bien sûr, vous risquez une saturation à empêcher le système de prendre ses aises au-delà des barrettes de RAM, un plantage d'application est à redouter, au pire un gel de Mac OS X... mais au moins jamais votre disque dur ne sera sollicité et jamais vous ne risquerez de rentrer dans ce flot ininterrompu de lectures/écritures pouvant générer des problèmes bien plus importants... notamment un endommagement matériel.

A vous de faire les choix qui s'imposent si votre machine active son swap trop rapidement et/ou si le swap vous ralentit de manière extraordinaire. Pour ma part OnyX m'a sauvé à plusieurs reprises sur un vieux Mac Pro qui avait très mal vécu sa mise à jour vers Mac OS X Lion (qui fait un usage beaucoup plus important de la mémoire vive et ne purge pas assez vite la mémoire inactive). Il existe des tas d'autres applications pour bien gérer la mémoire vive de son Mac et tout ce que nous avons vu ici est réalisable via des commandes dans le Terminal... mais voilà une manière d'aborder le problème de manière simple... et gratuite !

samedi 9 février 2013

Activer la technologie CUDA pour la CS6 sous Mac OS X

Si vous êtes un graphiste chevronné sous Mac et que vous utilisez la suite Adobe CS6, peut-être qu'en lisant ces lignes vous allez pouvoir booster de manière extraordinaire les compétences 3D de vos logiciels sous Mac OS X... à une condition cependant, que votre Mac ait une carte dite "compatible CUDA".



CUDA qu'est-ce que c'est ? Pour faire simple il s'agit d'une technologie permettant d'utiliser des processeurs graphiques, à l'origine destinés à calculer de la 3D, pour exécuter des opérations habituellement réservées au processeur de la carte mère. Si vous n'avez rien compris c'est pas grave, le seul truc à retenir c'est que d'activer la technologie CUDA permet de démultiplier la puissance d'un ordinateur en utilisant sa carte graphique !

CUDA est une technologie exclusivement développée par NVIDIA, la fameuse société qui fournit des cartes graphiques... et depuis un petit moment tous les Mac qui sortent des usines d'Apple ont tendance à adopter ce type de cartes (laissant tomber les cartes du grand concurrent AMD-ATI). Voici les Mac récemment concernés, tous les iMac de 2012 (cartes NVIDIA GeForce GT 640M, 650M, 660M, 675MX et 680MX) ou encore les MacBook Pro 15 pouces (Retina ou pas, carte NVIDIA GeForce GT 650M)... par contre les MacBook Pro 13 pouces, les MacBook Air et les Mac mini de 2012 sont hors circuit... mais il est tout de même possible que vous soyez concerné par la technologie CUDA avec un Mac d'une génération précédente, même les gens qui ont un vieillissant Mac Pro peuvent avoir des cartes compatibles CUDA ! Soit ils ont investi dans les seules cartes officielles qui existent sur le marché, notamment les coûteuses NVIDIA Quadro 4000, Quadro FX 4800 ou encore la petite GeForce GTX 285, soit ils ont dégoté des cartes modifiées issues du monde PC, on trouve facilement sur internet des GeForce GTX 480, 570, 580, Tesla C2050, C2070, Quadro 6000 (par exemple ici, chez macvidcards sur eBay)... et la liste devrait s'allonger car Mac OS X Mountain Lion est de plus en plus CUDA-friendly, certaines cartes PC ne demandent que de tous petits aménagements pour tourner sous Mac ! C'était loin d'être le cas avec les systèmes précédents Lion, Snow Leopard, Leopard... etc.

A noter qu'il existe des boîtiers Thunderbolt capables d'intégrer ce type de cartes (comme les Sonnet Echo Express, les Magma ExpressBox, le Netstor NA211TB, le mlogic mLink R, il y a un article intéressant à lire ici sur yakyakyak)... et que l'on peut brancher à son Mac qui serait dénué de carte CUDA... augmentant ainsi significativement le nombre de machines pouvant bénéficier de cette accélération matérielle... dont la vôtre ?

Alors il existe une procédure relativement simple permettant d'activer la technologie CUDA sur votre Mac... et de débloquer certains plug-ins ou de les optimiser avec Adobe CS6. Les applications concernées sont surtout Adobe Premiere CS6 et Adobe After Effects CS6...

Voici le pas à pas... en 17 étapes ! ^^

1 - Tout d'abord téléchargez le dernier driver CUDA pour Mac en ligne :


2 - Installez le driver CUDA sur votre Mac.

3 - Pour Premiere Pro, lancez GPUSniffer, ouvrez une fenêtre Terminal (c'est une application cachée ici : Applications / Utilitaires / Terminal ou faites un coup de spotlight, la petite loupe qui sert à chercher du contenu sur votre Mac et tapez "Terminal") et copiez-collez cette ligne de commande (même si cette phrase s'affiche sur 2 lignes, copiez bien du premier caractère du premier mot au dernier caractère du dernier mot, le Terminal est un tantinet tatillon) :

/Applications/Adobe\ Premiere\ Pro\ CS6/Adobe\ Premiere\ Pro\ CS6.app/Contents/GPUSniffer.app/Contents/MacOS/GPUSniffer

4 - Repérez le nom de votre carte graphique (dans la section "CUDA Device" il doit suivre la mention "Name :", par exemple pour moi la carte de mon Mac est la "GeForce GTX 680MX" que j'ai mise en surbrillance dans l'image ci-dessous... et ne vous inquiétez pas si votre Terminal n'a pas la même tête que le mien, j'ai choisi le thème "homebrew", il me rappelle de vieilles années !), copiez-collez ce nom dans un petit fichier texte qui va vous servir de mémo (sans oublier ou altérer une seule lettre !), vous en aurez besoin juste après.


5 - Toujours dans le Terminal, copiez-collez cette ligne de commande :

sudo nano /Applications/Adobe\ Premiere\ Pro\ CS6/Adobe\ Premiere\ Pro\ CS6.app/Contents/cuda_supported_cards.txt

6 - On va vous demander votre mot de passe, c'est celui de votre session, celui que vous rentrez tout le temps lorsque vous installez un logiciel... pas de panique, nous sommes en train de modifier un minuscule fichier texte "cuda_supported_cards.txt" caché dans les entrailles de Premiere Pro... donc pas de souci, vous pouvez y aller.

7 - Vous voilà face à la liste de cartes compatibles CUDA officiellement supportées par le trio Adobe-Apple-NVIDIA... et du coup il est fort probable que votre carte n'y apparaisse pas (si c'est le cas, vous avez fini, tapez "ctrl-X", puis "N" et fermez la fenêtre Terminal)... tranquillement mettez-vous à la fin de la liste en utilisant les flèches du clavier, créez une nouvelle ligne si besoin est en tapant "entrée" et ajoutez le nom de votre carte (ou copiez-collez le de votre petit fichier texte mémo).


8 - Tapez "ctrl-X", puis "Y", validez par "entrée" et fermez la fenêtre Terminal, vous venez d'ajouter votre carte à la liste des compatibles !

9 - Ouvrez Adobe Premiere Pro CS6 tout à fait normalement, créez un nouveau projet ou ouvrez n'importe quel ancien projet.

10 - Allez dans le menu "Projet / Réglages du projet / Généralités" et vérifiez que dans la section "Lecture et rendu vidéo / Système de rendu :" vous voyez inscrit "Accélération GPU Mercury Playback Engine (CUDA)"... si c'est le cas, c'est gagné ! Votre Premiere Pro est optimisé CUDA !



11 - Pour After Effects, rebelote, lancez GPUSniffer, ouvrez une fenêtre Terminal et copiez-collez cette ligne de commande :

/Applications/Adobe\ After\ Effects\ CS6/Adobe\ After\ Effects\ CS6.app/Contents/GPUSniffer.app/Contents/MacOS/GPUSniffer

12 - Toujours dans le Terminal, copiez-collez maintenant cette ligne de commande :

sudo nano /Applications/Adobe\ After\ Effects\ CS6/Adobe\ After\ Effects\ CS6.app/Contents/raytracer_supported_cards.txt

13 - Rentrez votre mot de passe en toute confiance, cette fois-ci on va modifier le fichier "raytracer_supported_cards.txt" caché dans les entrailles d'After Effects.

14 - Comme précédemment avec Premiere Pro (étape 7), mettez-vous à la fin de la liste en utilisant les flèches du clavier, créez une nouvelle ligne si besoin est en tapant "entrée" et ajoutez le nom de votre carte (ou copiez-collez le de votre petit fichier texte mémo).


15 - Tapez "ctrl-X", puis "Y", validez par "entrée" et fermez la fenêtre Terminal, vous venez d'ajouter votre carte à la liste des compatibles !

16 - Ouvrez Adobe After Effects CS6.

17 - Allez dans le menu "After Effects / Préférences / Prévisualisations...", cliquez sur le bouton "Informations GPU..." et vérifiez, en choisissant "GPU" à la section "Lancer de rayon :", que votre carte apparaît bien tout en bas dans la zone "CUDA"... si c'est le cas, alors c'est gagné aussi, votre After Effects est optimisé CUDA !


Voilà ! C'est fait ! Le fait d'activer le moteur CUDA sur Premiere Pro et sur After Effects peut vous donner des résultats vraiment spectaculaires, certains sites ont mesuré des rendus jusqu'à 60 fois plus rapides en 3D sur ce dernier, notamment avec des plug-ins comme VideoCopilot Element 3D ou encore Mettle FreeForm Pro... sans compter l'accélération naturelle en mode "lancer de rayon" lorsque vous manipulez des calques 3D directement dans une composition.

Soyez vigilants cependant, il est possible qu'à la prochaine mise à jour de Premiere Pro et/ou After Effects, les petits fichiers textes que nous avons modifiés puissent être réinitialisés, dans ce cas il faudra relancer les procédures adéquates. Il est probable que, dans un futur (très) proche, votre carte apparaisse naturellement dans ces listings en ayant été ajoutée par l'équipe d'Adobe elle-même... et enfin votre carte sera considérée comme officiellement supportée !