web-dev-qa-db-fra.com

Comment activer plusieurs cœurs dans mon environnement virtuel?

J'ai installé Ubuntu dans un environnement virtuel utilisant Oracle VM VirtualBox Manager et cela fonctionne très bien.

Toutefois, j'aimerais activer plusieurs cœurs - comme le montre l'image ci-dessous, ma machine Windows a 2 cœurs:

enter image description here

Maintenant, lorsque j'exécute lscpu dans Ubuntu, les informations suivantes sont révélées, indiquant qu'un seul noyau est utilisé:

enter image description here

J'ai essayé de modifier les paramètres de la boîte virtuelle pour activer plusieurs processeurs, mais cela ne me permet pas de le faire, comme le montre l'image ci-dessous:

Image

Comment activer plusieurs cœurs (processeurs) dans mon environnement virtuel?

20
Hasse Andersen

Pour activer plus de 1 CPU dans votre VM, vous devez également définir les paramètres suivants:

  • Matériel d'invité virtuel 64 bits dans l'onglet Paramètres généraux (pour les invités 64 bits)

    enter image description here

  • activer I/O APIC dans l'onglet Paramètres de la carte mère

    enter image description here

  • activer la virtualisation matérielle (VT-x/AMD-V) dans l'onglet Accélération

    enter image description here

Notez que si vous exécutez votre VM sur tous les cœurs disponibles, les performances de l'hôte risquent de s'améliorer lorsque vous affectez une limite d'exécution au processeur.

Si vous n'aviez pas activé processeur hot-plug , la modification du nombre de cœurs par la virtualbox ne peut s'effectuer que sur une machine qui a été arrêtée .

Une amélioration des performances de l’invité n’est attendue que pour les logiciels utilisant plusieurs cœurs. Ce n’est qu’alors que donner à tous les cœurs un plafond d’exécution devient logique.

16
Takkat

Si votre VM est en cours d'exécution (ou "Enregistré"), vous ne pouvez pas modifier cette valeur. Mettez d'abord votre VM hors tension.

15
0x80

Je travaillais sur un programme multithread exécuté dans un ordre séquentiel sur une machine virtuelle. J'ai eu le même problème que toi. Je l'ai corrigé par:

  1. Arrêtez la machine virtuelle ou quittez.
  2. Lancez VMWare -> Sélectionnez une machine -> Cliquez sur Système -> Cliquez sur Processeur -> Modifier les processeurs de numéros.
  3. Démarrer la machine virtuelle.

Plus tôt, std :: thread :: hardware_concurrency () du thread standard avait renvoyé 1, mais après les modifications, il renvoie le nombre de processeurs définis dans les paramètres de la machine virtuelle.

Maintenant, j'ai pu exécuter mes programmes multithread sur VM avec succès.

1
Prashant Nidgunde