So verlangsamen Sie die Taktrate des Prozessors


12

Ich habe kürzlich ein neues MacBook Pro gekauft, das manchmal zu schnell geht. Ich programmiere häufig für Mathematica , und auf meinem alten 2007 MacBook Pro habe ich normalerweise ein Gefühl für ineffizienten Code, wenn er träge läuft (dann entscheide ich mich, "gee, ich habe Müllcode geschrieben. Vielleicht sollte ich ein paar Stunden damit verbringen, ihn zu optimieren "). Auf meinem neuen Mac läuft jedoch alles sehr schnell.

Gibt es einen Schalter am Mac, mit dem ich die CPU auf beispielsweise 1 GHz verlangsamen kann?


Verschieben wir die erweiterte Diskussion in den Chat .
bmike


Ich erinnere mich sofort an diesen Comic: xkcd.com/1172
halb

Antworten:


19

Ich glaube nicht, dass es möglich ist, den Balken für die minimale Taktrate zu manipulieren, einfach aufgrund der direkten Beziehung zwischen Leistung, Frequenz und Taktrate eines Mikroprozessors. Offensichtlich hat die Uhr eine Reichweite, so dass das System beispielsweise zum Ausführen von Simulationen mehr Leistung benötigt, um schneller unter der Reichweite zu laufen. Wenn Sie dann aufhören zu simulieren, sehen Sie den Abfall.

Eine Lösung : Haben Sie alternativ in Betracht gezogen, die Programme unter MAC OS, aber auf einem Virtualizer (z. B. einer virtuellen Box) auszuführen? Sie können dann die Anzahl der Kerne / RAMs begrenzen, die für die Ausführung des zweiten Betriebssystems vorgesehen sind. In diesem Fall können die Programme viel langsamer ausgeführt werden. weil der Virtualizer viel weniger Ressourcen hat. Dies gibt Ihnen viel mehr Flexibilität und im Falle eines Fehlers können Sie zurückgehen und die Virtualizer-Einstellungen ändern. Interessanter ist, dass Sie die auf dem Virtualizer ausgeführten Paketeinstellungen auf einen anderen Computer übertragen und dort auch ausführen können, indem Sie den Virtualizer natürlich dort haben.


3
VirtualBox ist kein Emulator. Es ist Virtualizer. Deshalb heißt es "VirtualBox". Es virtualisiert die CPU, emuliert sie nicht. QEmu ist beispielsweise ein Emulator. (Obwohl es Virtualisierung verwenden kann und dies standardmäßig tun wird, wenn möglich.)
Jörg W Mittag

1
@ JörgWMittag Es ist kein Virtualisierer. Es heißt Typ-2-Hypervisor.
Max Ried

1
@DaveRose Eine VM ist nicht erforderlich, da die Anzahl der Prozessoren (Affinität), der Arbeitsspeicher, die maximale CPU-Zeit und viele andere Ressourcen für einen einzelnen Prozess über die Befehlszeile mithilfe der Unix-Dienstprogramme ulimit und sysctl festgelegt werden können. Ich erinnere mich nicht, ob diese Dienstprogramme sind standardmäßig installiert. Möglicherweise müssen Sie die Befehlszeilen-Entwicklertools über XCode installieren. Sie würden ulimit setzen und Mathematica von der Shell ausführen
krasisch

25

Wenn Sie Bedenken haben, wie effizient Ihre Software ist, schlage ich eine technisch ausgerichtete Lösung vor, mit der Sie Ihr MacBook auf Hochtouren laufen lassen können:

Verwenden Sie den in Mathematica integrierten Profiler . Auf diese Weise können Sie die Teile Ihrer Berechnungen identifizieren, die am meisten Zeit in Anspruch nehmen, ohne auf Sitz-der-Hosen-Messungen zurückgreifen zu müssen, die nur mit langsamer Hardware funktionieren.


1
Wie würde dies den Code auf einem Mac verlangsamen und nicht auf einem anderen? Es ist eine gute Information, scheint aber für diesen Thread nicht relevant zu sein.
bmike

@bmike Das sind gute Informationen. Ich wusste nichts über den Mathematica-Profiler. Obwohl meine Frage nicht direkt beantwortet wird, kann dies dazu beitragen, sie unnötig zu machen (+1). Vielleicht wäre am besten als Kommentar hinterlassen worden.
QuantumDot

6
@bmike es verlangsamt nichts, es behebt das Problem, das das OP tatsächlich zu lösen versucht, dh ob sein Mathematica-Code effizient ist oder nicht.
nekomatisch

1

Die Profilerstellung ist, wie in der Antwort von Blrfl vorgeschlagen, die geeignetere Methode, um festzustellen, ob Ihr Mathematica-Code effizient ist oder nicht. Wenn Sie jedoch die Ausführung wirklich verlangsamen möchten, können Sie dies möglicherweise tun, indem Sie die Priorität des Mathematica-Prozesses ändern . Ich habe dies nicht ausprobiert, aber unter diesen Links finden Sie möglicherweise hilfreiche Informationen oder Software:

Gibt es eine Möglichkeit, die Priorität eines Prozesses in Mac OS X festzulegen?

Wie kann ein Prozess unter Mac OS X (oder iOS usw.) dauerhaft "neu gestartet" werden?

Appriority (ehemals Renicer) von Northern Softworks

Einige dieser Diskussionen sind jedoch etwas alt, sodass Sie möglicherweise experimentieren oder weiter suchen müssen, um herauszufinden, was auf Ihrer Mac- und OS X-Version funktioniert. Möglicherweise funktioniert die Technik auch effektiver, wenn Sie Ihren Mac so einstellen, dass gleichzeitig eine andere schwere Verarbeitungsaufgabe ausgeführt wird - beispielsweise das Konvertieren einer großen Videodatei.


Das Ändern der Priorität eines Prozesses ist keine Garantie dafür, dass er langsam abläuft. Es ist nur ein Hinweis für das Betriebssystem, dass Prozesse mit höheren Prioritäten an erster Stelle stehen, wenn es um die Prozessorzeit geht. Ohne dass etwas im Weg steht, wird ein Prozess mit niedriger Priorität mit voller Geschwindigkeit ausgeführt.
Blrfl

1

Unglücklicherweise nicht. Sie können die Taktrate auf Macintosh-Computern nicht ändern. Sie haben kein BIOS wie Windows-Motherboards, daher kann der Benutzer die Taktrate nicht ändern oder mit E / A-Dingen herumspielen.

Der Grund dafür ist vor allem , weil auf einem Mac, müssen Sie nicht müssen manuell , um diese Dinge zu ändern. Die Hardware ist bereits vorgefertigt und das Betriebssystem weiß, an welche Hardware es angeschlossen werden kann / kann.


Mac OS X KANN die Taktrate des Prozessors dynamisch ändern, um beispielsweise die Leistung beim Anschließen gegenüber der Akkulaufzeit im Akkubetrieb zu priorisieren. Dies ist also nicht wirklich richtig - oder zumindest, wenn es richtig ist, aus dem falschen Grund, dh das Betriebssystem tut dies nicht Machen Sie diese Einstellung nicht leicht zugänglich.
nekomatisch

Guter Punkt. Ich habe den Beitrag bearbeitet, um dies zu verdeutlichen
JamEngulfer

0

Ja, aber es wird nicht empfohlen. Die Taktrate wird vom Betriebssystem und vom Prozessor selbst aufgrund einer Reihe von Faktoren gesteuert, einschließlich Prozessorlast, Temperatur und Stromverfügbarkeit.

Wenn Sie den Akku auf 10 bis 20% reduzieren, eine externe Stromquelle trennen und den Laptop auf die maximale Betriebstemperatur von 35 ° C (95 ° F) erwärmen , wird er mit Sicherheit in einen niedrigeren Energiezustand versetzt , einschließlich einer deutlichen Reduzierung des Prozessortakts. Ein kleines Heizkissen, wie es bei Rückenschmerzen verwendet wird, unter dem Laptop kann ausreichend sein und im Winter sehr bequem für Sie sein.

Es ist jedoch besser, die richtigen Tools für die Leistungsoptimierung zu verwenden. Ja, Sie können Ihre alte Umgebung simulieren und dabei Ihre eigene interne Uhr verwenden. Die von Ihnen verwendete Software verfügt jedoch über Uhren, Timer und andere Tools, um die Leistung Ihrer Arbeit zu verstehen. Angesichts der Tatsache, dass Sie wahrscheinlich in einigen Jahren erneut ein Upgrade durchführen oder in der Zwischenzeit unterschiedliche Computer und Computerplattformen verwenden, ist die Verwendung von Krücken wie Emulatoren keine gute langfristige Lösung.

Ich schlage vor, dass Sie stattdessen die eingebauten Tools verwenden. Bei regelmäßiger Verwendung können Sie sie ohne zusätzlichen Aufwand verwenden, sodass Sie sie im laufenden Betrieb in Ihre Software integrieren können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.