Est-ce que quelqu'un connaît 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 la configuration minimale requise pour un système, à partir d'une image de système d'exploitation spécifique que je possède. Je vois des moyens de limiter RAM ainsi que la taille du disque dur et le nombre de cœurs, mais je dois ralentir le processeur à 800 MHz afin de simuler réellement la configuration du système. En outre, l'ordinateur exécutant la machine virtuelle est une machine Windows 7.
Le même problème m’a été confié et j’ai installé Oracle VirtualBox sous 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 8 Go de RAM.
En supposant que votre installation fonctionne correctement, sur votre ordinateur invité (par exemple Ubuntu dans mon cas), sélectionnez "Paramètres ..." dans "Ordinateur" dans le menu principal. sélectionnez "Système" et cliquez sur l'onglet "Processeur". Vous pouvez régler la vitesse d'horloge (intitulée "Cap d'exécution") en faisant glisser l'indicateur situé sur la barre au maximum 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 de processeur nulle sur l'ordinateur hôte .i.e. Windows 7 dans mon cas). Par conséquent, l’aspiration de 100% de "plafond d’exécution" équivaut à celle 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.
Sur VMWare ESX et ESXi, vous pouvez créer un pool de ressources et limiter les ressources de la CPU pour ce pool. Cela vous permettrait de limiter la vitesse du processeur de tout système créé dans ce pool de ressources.
Compilé et utilisé: cpulimit fonctionnant à merveille pour ralentir le VM.
--cpuexecutioncap <1-100>: Ce paramètre détermine la durée d'utilisation d'un processeur virtuelle. Une valeur de 50 implique qu'un seul processeur virtuel peut utiliser jusqu'à 50% d'un seul processeur hôte.
Bien que je ne sois pas un expert des 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 de l'ensemble des actions des machines hôtes. Par conséquent, si vous avez un hôte 8 cœurs fonctionnant à 2 GHz, vous pouvez essayer de limiter la machine virtuelle cliente à un seul cœur et à 45% maximum.
Cependant, ce 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.
Je peux confirmer que ceci n'est pas supporté par VirtualBox. Cependant, la documentation semble incertaine quant à savoir si VMware est capable de le faire.
EDIT: Pour VMware: "Cela n’est pas possible avec les produits Player et Server, mais je crois que c’est dans ESXi (le" produit gratuit "d'hyperviseur à nu") et dans les produits payants tels que VMWare Workstation. "
Vous pourrez peut-être simuler ceci avec un épinglage de CPU. Créez ensuite des processus liés au processeur épinglés au même processeur. La vitesse du processeur estimée est (vitesse réelle du processeur/nombre de processus).
Certains logiciels limitant les ressources vous permettent 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.
Sur VirtualBOX, il existe un curseur dans lequel vous pouvez configurer le pourcentage de CPU hôte que le CPU invité peut utiliser. Un tel pourcentage s'applique à chaque noyau.
Sur VirtualBOX, il n’ya aucun moyen de simuler un multicœur avec des vitesses différentes sur chaque cœur, un seul curseur pour tous les cœurs.
Si vous réglez le curseur sur 50%, les cœurs des invités seront exécutés à la moitié de ceux de l'hôte (notions de base par cœur).
Ainsi, si vous avez un noyau déca (10 cœurs) sur l'hôte et un tricœur sur l'invité (trois) et que vous voulez que l'invité soit exécuté à 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 la suivante: Pourcent = 100 * X/Y
J'espère que cela aidera également d'autres personnes à venir ici pour l'avenir.