13 votes

Pourquoi le Finder fonctionne-t-il avec une priorité de processus aussi faible ?

Je suis un peu perdu à ce sujet.
Je suis en train de faire une grosse importation dans Aperture, et cela ralentit complètement mon système, le rendant inutilisable pour quoi que ce soit, même pour naviguer sur le web. Comme cela semble un peu anormal, j'ai passé un peu de temps à chercher.

Running ps -Al montre que, apparemment par défaut, le Dock , Finder et SystemUIServer semblent tous fonctionner à une priorité bien inférieure à celle des applications utilisateur. Alors que les applications utilisateur ont généralement une priorité de 33, le Dock, le Finder, etc. ont une priorité de 53.

Le résultat final est que N'IMPORTE QUELLE tâche à forte intensité de processeur bloque complètement l'interface utilisateur et rend le système inutilisable jusqu'à ce qu'elle soit terminée.

Quoi qu'il en soit, en utilisant renice -20 -p <prid> leur donne la même priorité qu'au reste de l'interface utilisateur, ce qui permet de ne pas avoir à attendre 1 à 3 secondes ( !) pour que l'interface utilisateur réponde à quelque chose d'aussi simple qu'un clic de souris.

Thad a dit, j'ai deux questions :
Y a-t-il une raison pour laquelle je ne devrais pas modifier la priorité du fil du finder de cette façon ?
Existe-t-il un moyen de rendre le changement de priorité persistant, par exemple pour qu'il reste inchangé après le redémarrage.

1voto

Chris Page Points 7394

"Je fais une grosse importation en ouverture, et ça ralentit mon système jusqu'à un point mort."

Alors Aperture est (probablement) le programme que vous voulez renice et non les autres. Les processus que vous mentionnez sont réglés par rapport aux applications de l'utilisateur moyen, de sorte que les applications de l'utilisateur obtiennent une priorité plus élevée et restent réactives, car ce sont elles que les utilisateurs utilisent la plupart du temps.

Votre cas est moins fréquent : une application exécute une tâche intensive de longue durée et l'utilisateur veut faire autre chose en même temps. Par défaut, ce sont les applications de l'utilisateur qui sont prioritaires afin que ces tâches intensives obtiennent plus de ressources et se terminent plus rapidement.

Pour chaque utilisateur qui se plaint que les autres applications ne sont pas assez réactives, il y a un autre utilisateur qui se plaint que l'application active ne fonctionne pas assez vite.

Si vous exécutez une tâche longue et gourmande en ressources et que vous savez que vous voulez qu'elle ait une priorité plus faible afin de pouvoir utiliser d'autres processus pendant que la tâche se termine - et que cela ne vous dérange pas si la tâche intensive prend plus de temps - vous devez diminuer la priorité du processus qui exécute la tâche intensive.

Pour ce qui est de votre deuxième question, il existe plusieurs solutions possibles pour rendre la renice plus automatique. Par exemple, vous pourriez créer une applet script qui exécute Aperture à une priorité moindre et l'utiliser pour lancer Aperture. Ou encore, vous pourriez lancer Aperture via un script shell stocké dans un fichier *.command (cependant, cela ouvrira Terminal et exécutera la commande dans une fenêtre de terminal, ce qui n'est peut-être pas ce que vous souhaitez). Chacun de ces éléments est un peu compliqué. Si vous souhaitez des exemples, je peux voir à les fournir plus tard.

1voto

alex gray Points 895

J'ai posé une question similaire - il y a longtemps, sur ServerFault - mais pas aussi spécifiquement axée sur le Finder (même si je trouve que le Finder est intolérablement lent, lui aussi). Comment "renier" définitivement un processus sur Mac OS X (ou iOS, etc.) ? On n'y a pas glané beaucoup d'informations sur la bonne façon de procéder ou sur la raison pour laquelle il en est ainsi

J'y pense encore souvent, et il y a en fait plusieurs façons de modifier les "bases" si vous l'osez. Comme mentionné précédemment, vous pouvez faire diverses chicaneries sur les coquillages mais un bon endroit pour de tels méfaits sont les différentes sections de la base de données. /etc/rc* les routines de démarrage qui sont déjà là et qui règlent toutes sortes de paramètres système arbitraires (définis par apple) pour vous. soit vous les éditez, soit vous cherchez comment ajouter vos propres routines au processus de démarrage.

Aussi, si vous voulez vraiment faire exploser votre tête

sudo sysctl list et c'est la clé de la boîte de pandore, alias /etc/sysctl.conf

1voto

Tim Points 1192

Je ne suis pas sûr que quelqu'un d'autre que les développeurs d'Apple soit en mesure de répondre à cette question, les secrets internes du Finder sont leur domaine. Si vous pensez qu'il y a des problèmes de décalage notables avec l'interface utilisateur, vous pouvez soumettre un rapport de bogue à Apple à ce sujet.

A en juger par le son des choses (processus prenant intentionnellement toutes les ressources), c'est un peu un cas limite pour la gestion de la mémoire. Je n'ai encore jamais vu un système fonctionner au mieux sans environ 10-20% de ressources libres, comme une aide à la mise en mémoire tampon.

Juste par curiosité, qu'est-ce que son ces processus que vous exécutez ?

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