Da bin ich ein bisschen ratlos.
Ich führe einen großen Import in die Apertur aus, und mein System wird dadurch langsamer, bis es vollständig gecrawlt ist. Dies macht es praktisch unbrauchbar für alles, auch für das Surfen im Internet. Da dies etwas unnatürlich erscheint, habe ich mich ein wenig umgesehen.
Laufen ps -Al
zeigt , dass offenbar standardmäßig das Dock
, Finder
und SystemUIServer
alle zu laufen scheinen eine Priorität weit dann Userland - Anwendungen senken. Während Benutzeranwendungen normalerweise eine Priorität von 33 haben, haben Dock, Finder usw. eine Priorität von 53.
Das Endergebnis ist, dass JEDE prozessorintensive Aufgabe die Benutzeroberfläche vollständig überlastet und das System unbrauchbar macht, bis es fertig ist.
Wenn Sie renice -20 -p <prid>
Bumps mit derselben Priorität wie die übrige Benutzeroberfläche verwenden, müssen Sie nicht 1-3 Sekunden (!) Warten, bis die Benutzeroberfläche auf einen einfachen Mausklick reagiert.
Thad sagte, ich habe zwei Fragen:
Gibt es einen Grund, warum ich die Thread-Priorität des Finders nicht so ändern sollte?
Gibt es eine Möglichkeit, die Prioritätsänderung dauerhaft zu machen, z. B. bleibt dies auch nach dem Neustart der Fall.
quelle
Antworten:
Ich bin mir nicht sicher, ob jemand anderes als Apples Entwickler in der Lage wäre, diese Frage zu beantworten. Finders innere Geheimnisse sind ihre Domäne. Wenn Sie der Meinung sind, dass es auffällige Verzögerungsprobleme mit der Benutzeroberfläche gibt, können Sie Apple einen Fehlerbericht darüber senden.
Nach dem Klang der Dinge (Prozesse, die absichtlich alle Ressourcen belegen) zu urteilen, ist dies ein Randfall für die Speicherverwaltung. Ich habe noch nicht gesehen, wie ein System seine beste Leistung erbringt, ohne dass irgendwo 10-20% Ressourcen frei sind, als Pufferungshilfe.
Nur neugierig, was sind diese Prozesse, die Sie ausführen?
quelle
"Ich führe einen großen Import in die Apertur aus, und dadurch verlangsamt sich mein System auf ein vollständiges Crawling."
Dann ist Aperture (wahrscheinlich) das Programm, das Sie möchten
renice
, nicht die anderen. Die von Ihnen erwähnten Prozesse sind im Verhältnis zu durchschnittlichen Benutzeranwendungen optimiert, sodass Benutzeranwendungen eine höhere Priorität erhalten und reaktionsfähig bleiben, da sie von den Benutzern die meiste Zeit verwendet werden.Ihr Fall ist der seltenere, bei dem eine Anwendung eine langfristige, intensive Aufgabe ausführt und der Benutzer gleichzeitig etwas anderes tun möchte. Standardmäßig erhalten die Anwendungen des Benutzers Priorität, damit diese intensiven Aufgaben mehr Ressourcen erhalten und schneller ausgeführt werden können.
Für jeden Benutzer, der sich darüber beschwert, dass andere Anwendungen nicht schnell genug reagieren, gibt es einen anderen Benutzer, der sich darüber beschwert, dass die aktive Anwendung nicht schnell genug ausgeführt wird.
Wenn Sie eine lange, ressourcenintensive Aufgabe ausführen und wissen, dass sie eine niedrigere Priorität haben soll, damit Sie während der Ausführung der Aufgabe andere Prozesse verwenden können - und es macht Ihnen nichts aus, wenn die intensive Aufgabe länger dauert -, sollten Sie die Priorität von verringern der Prozess, der die intensive Aufgabe ausführt.
Für Ihre zweite Frage gibt es mehrere mögliche Lösungen, um die
renice
Automatisierung zu verbessern. Sie können beispielsweise ein Skript-Applet erstellen, das Aperture mit einer niedrigeren Priorität ausführt und zum Starten von Aperture verwendet. Sie können Aperture auch über ein Shell-Skript starten, das in einer * .command-Datei gespeichert ist. Dadurch wird jedoch Terminal geöffnet und der Befehl in einem Terminalfenster ausgeführt, das möglicherweise nicht Ihren Vorstellungen entspricht. Jedes von diesen ist ein wenig beteiligt. Wenn Sie Beispiele wünschen, kann ich diese später zur Verfügung stellen.quelle
renice
, aber das eigentliche Problem ist die Priorität des Finders.renice
auf Prozesse, nicht auf Threads.Ich habe vor langer Zeit eine ähnliche Frage zu ServerFault gestellt, obwohl ich mich nicht so sehr auf den Finder konzentriere (obwohl ich finde, dass der Finder auch unerträglich langsam ist). Wie kann ich einen Prozess unter Mac OS X (oder iOS usw.) dauerhaft „erneuern“? Es wurden dort nicht viele Informationen gesammelt - was eine gute Möglichkeit ist, dies zu tun ... oder warum es so ist ...
Ich denke immer noch oft darüber nach, und es gibt tatsächlich ein paar Möglichkeiten, mit den "Grundlagen" umzugehen, wenn Sie sich trauen. Wie bereits erwähnt, können Sie verschiedene Shell-Schikanen ausführen. Ein guter Ort für solche Missetaten sind jedoch die verschiedenen
/etc/rc*
Boot-Routinen, die bereits vorhanden sind. Bearbeiten Sie diese oder lesen Sie nach, wie Sie dem Startvorgang eigene Routinen hinzufügen können.auch, wenn Sie wirklich Ihren Kopf explodieren lassen wollen ..
sudo sysctl list
und es ist der Schlüssel zu Pandoras Box, aka/etc/sysctl.conf
quelle