Comment ralentir la vitesse d'horloge du processeur

12

J'ai récemment acheté un nouveau MacBook Pro qui va parfois trop vite. Je programme fréquemment pour Mathematica , et sur mon ancien MacBook Pro 2007, j'ai généralement l'impression d'un code inefficace quand il tourne lentement (c'est là que je décide "bon sang, j'ai écrit du code poubelle. Peut-être devrais-je passer quelques heures à le peaufiner) "). Cependant, sur mon nouveau Mac, tout fonctionne très rapidement.

Existe-t-il un commutateur sur le Mac qui me permet de ralentir le processeur à, disons, 1 GHz?

Point quantique
la source
Déplaçons la discussion étendue vers le chat .
bmike
Vous devriez jeter un œil à apple.stackexchange.com/questions/24998/…
Max Ried
Je me souviens immédiatement de cette bande dessinée: xkcd.com/1172
justhalf

Réponses:

19

Je ne pense pas qu'il soit possible de manipuler la barre de vitesse d'horloge minimale, simplement en raison de la relation directe entre la puissance, la fréquence et la vitesse d'horloge d'un microprocesseur. Évidemment, l'horloge a une plage, donc par exemple pour exécuter des simulations, le système prend plus de puissance pour fonctionner plus rapidement sous la plage, puis lorsque vous arrêtez de simuler, vous voyez la baisse.

Une solution : Vous avez également envisagé d'exécuter les programmes dans MAC OS mais sur un virtualiseur (par exemple, une boîte virtuelle)? Vous pouvez ensuite limiter le nombre de cœurs / RAM dédiés à l'exécution du deuxième système d'exploitation. Dans ce cas, les programmes peuvent être forcés à s'exécuter beaucoup plus lentement; parce que le virtualiseur a des ressources beaucoup plus faibles. Cela vous donnera beaucoup plus de flexibilité et en cas de panne, vous pouvez revenir en arrière et modifier les paramètres du virtualiseur. Plus intéressant, vous pouvez apporter les paramètres du package qui s'exécutent sur le virtualiseur à une autre machine et l'exécuter également, en ayant le virtualiseur là bien sûr.

o-0
la source
3
VirtualBox n'est pas un émulateur. C'est virtualiseur. C'est pourquoi cela s'appelle "VirtualBox". Il virtualise le CPU, il ne l'émule pas. QEmu, par exemple, est un émulateur. (Bien qu'il puisse utiliser la virtualisation, et le fera par défaut, si possible.)
Jörg W Mittag
1
@ JörgWMittag Ce n'est pas un virtualiseur. C'est ce qu'on appelle l'hyperviseur de type 2.
Max Ried
1
@DaveRose Un vm n'est pas nécessaire car des limites sur le nombre de processeurs (affinité), la mémoire, le temps de processeur maximal et de nombreuses autres lignes de ressources peuvent être définies pour un seul processus via la ligne de commande à l'aide des utilitaires unix ulimit et sysctl - je ne me souviens pas si ceux-ci les utilitaires sont installés par défaut, vous devrez peut-être installer les outils de développement en ligne de commande via XCode. Vous devez définir ulimit et exécuter Mathematica à partir du shell
crasic
25

Si votre souci est l'efficacité de votre logiciel, laissez-moi vous suggérer une solution plus orientée vers l'ingénierie qui vous permettra de faire fonctionner votre MacBook à pleine vitesse:

Utilisez le profileur intégré à Mathematica . Cela vous permettra d'identifier les parties de vos calculs qui consomment le plus de temps sans avoir à recourir à des mesures de siège du pantalon qui ne fonctionnent que sur du matériel lent.

Blrfl
la source
1
Comment cela ralentirait-il le code sur un Mac et non sur un autre? Ce sont de bonnes informations, mais ne semblent pas pertinentes pour ce fil.
bmike
@bmike C'est une bonne information. Je ne connaissais pas le profileur Mathematica. Bien que cela ne réponde pas directement à ma question, cela peut aider à la rendre inutile (+1). Il aurait peut-être été préférable de laisser un commentaire.
QuantumDot
6
@bmike, il ne ralentit rien, il résout le problème que l'OP essaie de résoudre, à savoir si son code Mathematica est efficace ou non.
nekomatic
1

Le profilage, comme suggéré dans la réponse de Blrfl, est le moyen le plus approprié pour déterminer si votre code Mathematica est efficace ou non. Cependant, si vous voulez vraiment ralentir son exécution, vous pourrez peut-être le faire en modifiant la priorité du processus Mathematica. Je n'ai pas essayé ceci mais vous pouvez trouver des informations ou des logiciels utiles parmi ces liens:

Existe-t-il un moyen de définir la priorité d'un processus sous Mac OS X?

Comment «renier» définitivement un processus sur Mac OS X (ou iOS, etc.)?

Appriority (anciennement Renicer) par Northern Softworks

Certaines de ces discussions sont cependant un peu anciennes, vous devrez donc peut-être expérimenter ou rechercher plus loin pour trouver ce qui fonctionne sur votre version Mac et OS X. Vous pouvez également constater que la technique fonctionne plus efficacement si vous définissez votre Mac sur une autre tâche de traitement lourde à exécuter en même temps - la conversion d'un gros fichier vidéo, par exemple.

nekomatic
la source
La modification de la priorité d'un processus n'est pas une garantie qu'il s'exécutera lentement. C'est juste une indication pour le système d'exploitation que s'il y a conflit pour le temps processeur, les processus avec des priorités plus élevées doivent commencer en premier. Sans rien se mettre en travers de son chemin, un processus de faible priorité se déroulera à pleine vitesse.
Blrfl
1

Malheureusement non. Vous ne pouvez pas modifier la vitesse d'horloge sur les ordinateurs Macintosh. Ils n'ont pas de BIOS de la même manière que les cartes mères Windows, il n'y a donc aucun moyen pour l'utilisateur de changer la vitesse d'horloge ou de jouer avec les trucs d'E / S.

La raison en est principalement parce que sur un Mac, vous n'avez pas besoin de modifier manuellement ces choses. Le matériel est déjà pré-construit et le système d'exploitation sait à quel matériel il sera / peut être connecté.

JamEngulfer
la source
Mac OS X PEUT changer la vitesse d'horloge du processeur de manière dynamique, par exemple pour hiérarchiser les performances lorsqu'il est branché par rapport à la durée de vie de la batterie lorsqu'il est sur batterie, donc ce n'est pas vraiment correct - ou du moins s'il est correct, c'est pour la mauvaise raison, c'est-à-dire que le système d'exploitation ne fonctionne pas 'rend pas ce paramètre facilement accessible.
nekomatic
Bon point. J'ai édité le message pour clarifier cela
JamEngulfer
0

Oui, mais ce n'est pas conseillé. La vitesse d'horloge est contrôlée par le système d'exploitation et le processeur lui-même en raison d'un certain nombre de facteurs, notamment la charge du processeur, la température et la disponibilité de l'alimentation.

Si vous réduisez la batterie à 10-20%, déconnectez toute source d'alimentation externe et chauffez l'ordinateur portable jusqu'à sa température de fonctionnement maximale, 95F (35C) , il entrera certainement dans un état d'alimentation inférieur, y compris en réduisant considérablement l'horloge du processeur. Un petit coussin chauffant, comme ceux utilisés pour les maux de dos, sous l'ordinateur portable peut être suffisant, et pendant l'hiver peut être très confortable pour vous.

Cependant, il serait préférable d'utiliser les bons outils pour l'optimisation des performances. Oui, vous pouvez simuler votre ancien environnement et ainsi utiliser votre propre horloge interne, mais le logiciel que vous utilisez possède des horloges, des minuteries et d'autres outils pour comprendre les performances de votre travail. Étant donné que vous pouvez probablement mettre à niveau à nouveau dans plusieurs années, ou que vous pouvez utiliser différents ordinateurs et plates-formes informatiques dans l'intervalle, l'utilisation de béquilles comme des émulateurs n'est pas une bonne solution à long terme.

Je vous suggère plutôt d'utiliser les outils intégrés. Une utilisation régulière vous permettra de les utiliser sans trop d'effort supplémentaire, de sorte que vous puissiez les intégrer dans votre logiciel à la volée.

Adam Davis
la source