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:
Maintenant, lorsque j'exécute lscpu
dans Ubuntu, les informations suivantes sont révélées, indiquant qu'un seul noyau est utilisé:
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:
Comment activer plusieurs cœurs (processeurs) dans mon environnement virtuel?
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)
activer I/O APIC dans l'onglet Paramètres de la carte mère
activer la virtualisation matérielle (VT-x/AMD-V) dans l'onglet Accélération
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.
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.
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:
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.