Limiter la vitesse du processeur dans une machine virtuelle?

29

Quelqu'un connaît-il un moyen de limiter la vitesse du processeur dans une machine virtuelle? Ou s'il existe même un logiciel de virtualisation qui vous permet de le faire?

J'essaie de trouver les exigences minimales pour un système, étant donné une image de système d'exploitation spécifique que j'ai. Je vois des moyens de limiter la taille de la RAM et du disque dur et le nombre de cœurs, mais je dois ralentir le processeur à 800 MHz afin de simuler vraiment la configuration du système. De plus, l'ordinateur exécutant la machine virtuelle est une machine Windows 7.

RCC
la source

Réponses:

21

J'ai été chargé du même problème et j'ai installé Oracle VirtualBox sur Windows 7 (en tant qu'hôte) et Ubuntu (en tant qu'invité). J'ai utilisé un ordinateur portable autonome, HP EliteBook 8540W avec Intl Core i7 fonctionnant à 1,87 GigHZ et 8Gig RAM.

En supposant que votre installation fonctionne correctement, sur votre machine Invité (par exemple dans mon cas, Ubuntu) sélectionnez "Paramètres ..." dans "Machine" dans le menu principal; sélectionnez "Système" et cliquez sur l'onglet "Processeur". Vous pouvez régler la vitesse d'horloge (étiquetée «Capuchon d'exécution») en faisant glisser l'indicateur sur la barre jusqu'à 1%.

J'ai supposé que le système d'exploitation hôte (Windows 7 dans mon cas) ne consommait aucun cycle d'horloge (j'ai confirmé cela en vérifiant le "Gestionnaire des tâches" et j'ai trouvé une utilisation ZERO CPU sur la machine hôte .ie windows 7 dans mon cas). Par conséquent, j'ai aspiré à 100% le "plafond d'exécution" est égal à celui de la machine hôte (par exemple 1,87 GigHZ). Je pense qu'en prenant un pourcentage entre la vitesse d'horloge de votre machine hôte et 800 MHz, vous êtes en mesure de déterminer la valeur en pourcentage qui correspond à 800 MHz.

J'espère que ça aide.

Bonne chance.

Seif
la source
9

Sur VMWare ESX et ESXi, vous pouvez créer un pool de ressources et limiter les ressources CPU pour ce pool. Cela vous permettrait de limiter la vitesse du processeur de tous les systèmes créés dans ce pool de ressources.

LeoB
la source
J'ai lu sur l'option de pool de ressources et j'ai pensé qu'elle s'appliquait au joueur. Malheureusement, ce n'est pas le cas. Et ESX / ESxi ne sont pas gratuits ... Mais je pourrais essayer la version d'essai et si cela fonctionne, examinez-la un peu plus.
RCC
6
ESXi est gratuit. (et quelques autres personnages ...)
Tarnay Kálmán
Vraiment? Pour une raison quelconque, je ne pensais pas que c'était le cas. Mais je suis corrigé! Merci beaucoup de l'avoir signalé.
RCC
6

Compilé et utilisé: cpulimit qui fonctionnait comme un charme pour ralentir la VM.

Nicolas Modrzyk
la source
2

Bien que je ne sois pas expert sur toutes les différentes technologies de virtualisation, je pense qu'il est peu probable que vous trouviez un tel paramètre. Cependant, vous trouverez des paramètres (au moins dans MS hyper-V) qui vous permettent de limiter une machine virtuelle à un pourcentage des actions globales des machines hôtes. Donc, si vous avez un hôte à 8 cœurs fonctionnant à 2 GHz, vous pouvez essayer de limiter la machine virtuelle cliente à un cœur, et pas plus de 45% du cœur.

Cependant, cela serait très grossier et ne conviendrait pas si vous essayez de tester des boucles de synchronisation ou quelque chose où la vitesse réelle du processeur entre en jeu.

Knox
la source
J'ai vu quelques programmes qui font cela - à savoir limiter le pourcentage d'utilisation du processeur par processus - mais je n'avais vu que les options Linux. Certes, je n'y ai pas beaucoup réfléchi. Si la solution que j'essaie, telle que décrite dans ma réponse à MaxMackie, ne fonctionne pas, j'examinerai ces options plus en détail.
RCC
Oui, cela pourrait avoir un très mauvais effet sur les boucles de synchronisation. Tout dépend si elle fonctionne à pleine vitesse jusqu'à 45%, puis s'arrête, ou si elle essaie de fonctionner à 45%.
Zan Lynx
2

--cpuexecutioncap <1-100>: ce paramètre contrôle le temps de processeur qu'un processeur virtuel peut utiliser. Une valeur de 50 implique qu'un seul processeur virtuel peut utiliser jusqu'à 50% d'un seul processeur hôte.

Oh non
la source
1
Plus d'informations rendraient cette réponse acceptable.
Ramhound
1

Je peux confirmer que cela n'est pas pris en charge dans VirtualBox. Cependant, la documentation semble incertaine quant à savoir si VMware est capable de le faire ou non.

EDIT: Pour VMware: «Ce n'est pas possible avec les produits Player et Server, mais je crois que c'est dans ESXi (le produit gratuit« hyperviseur à nu ») et les produits payants comme VMWare Workstation.

n0pe
la source
Je peux également le confirmer - j'ai tout configuré sur VirtualBox puis je l'ai découvert. J'utilise actuellement VMware et j'ai essayé de modifier le fichier config.ini pour limiter le host.cpukHz à 800000. Cela semble induire la machine virtuelle en pensant que le CPU MHz est 800. Je ne suis pas sûr si cela fera réellement ce que je veux mais c'est ce que j'espère. Des idées?
RCC
D'après ce que j'ai vu, cela devrait fonctionner. Assurez-vous simplement de définir host.noTSC = "TRUE" dans ce même fichier de configuration. Cela régule l'horloge du processeur pour s'assurer qu'elle ne ralentit pas. De plus, dans le système d'exploitation invité, accédez à l'onglet Options et assurez-vous que la synchronisation de l'heure entre la machine virtuelle et le système d'exploitation hôte est sélectionnée.
n0pe
Oui, j'ai également host.noTSc = "TRUE". Je n'ai pas été en mesure de trouver où activer la synchronisation de l'heure entre le vm et l'hôte dans le lecteur vmware ...
RCC
Je suis sûr que vous devez être en cours d'exécution dans le système d'exploitation invité
n0pe
1

Vous pourrez peut-être simuler cela avec l'épinglage du processeur. Créez ensuite des processus liés au processeur épinglés sur le même processeur. La vitesse estimée du processeur est (vitesse réelle du processeur / nombre de processus).

Certains logiciels de limitation des ressources vous permettront de limiter les pourcentages de ressources. Cela faciliterait la limitation de la vitesse du processeur. Pour ce faire, vous devez désactiver l'accès aux ressources disponibles.

BillThor
la source
0

Sur VirtualBOX, il y a un curseur où vous pouvez configurer le% de CPU hôte que le CPU invité peut utiliser. Ce pourcentage s'applique à chaque cœur.

Sur VirtualBOX, il n'y a aucun moyen de simuler un multicœur avec des vitesses différentes sur chaque cœur, un seul curseur pour tous les cœurs.

Régler le curseur à 50% fera fonctionner les cœurs invités à la moitié des cœurs hôtes (une base par cœur).

Donc, si vous avez un noyau déca (10 cœurs) sur l'hôte et un tri-cœur sur l'invité (trois), et que vous voulez que l'invité s'exécute à X MHz tandis que l'hôte s'exécute à Y MHz, ignorez simplement le nombre de cœurs pour calculer le pourcentage.

La formule serait: Pourcentage = 100 * X / Y

J'espère que cela aidera également d'autres personnes à venir ici pour l'avenir.

Laura
la source