Cela peut être possible "par accident" avec une utilisation négligente de l’affinité principale. Considérons le pseudocode suivant:
- commencer un fil
- dans ce fil, savoir sur quel noyau il fonctionne
- définir son affinité CPU à ce noyau
- commencer à faire quelque chose d'intense calcul / boucle pour toujours
Si vous démarrez quatre de ceux-ci sur un processeur à deux cœurs, le réglage de l'affinité de base pose problème, ou bien deux threads encombrent les cœurs disponibles et deux threads qui ne sont jamais planifiés. À aucun moment, il n'a explicitement demandé combien il y avait de cœurs.
(Si vous avez des threads de longue durée, la définition de l'affinité CPU améliore généralement le débit)
L'idée que les sociétés de jeux "obligent" les gens à acheter du matériel plus coûteux sans raison valable n'est pas très plausible. Cela ne peut que leur faire perdre des clients.
Edit: ce message a maintenant 33 votes positifs, ce qui est assez, car il est basé sur des suppositions éclairées!
Il semble que les gens aient DA: Je coure mal sur des systèmes dual-core: http://www.dsogaming.com/pc-performance-analyses/dragon-age-inquisition-pc-performance-analysis/ Cette analyse mentionne que la situation s'améliore grandement si l'hyperthreading est activé. Etant donné que HT n'ajoute plus d'unités d'émission d'instruction ni de cache, il permet simplement à un thread de s'exécuter pendant qu'un autre se trouve dans une stalle de cache, ce qui suggère fortement qu'il est lié uniquement au nombre de threads.
Une autre affiche affirme que la modification des pilotes graphiques fonctionne: http://answers.ea.com/t5/Dragon-Age-Inquisition/Working-solution-for-Intel-dual-core-CPUs/td-p/3994141 ; Etant donné que les pilotes graphiques ont tendance à être une ruche de misères et de voyous, ce n'est pas surprenant. Un ensemble notoire de pilotes avait un mode "correct & lent" par rapport au mode "rapide & incorrect" sélectionné si appelé depuis QUAKE.EXE. Il est tout à fait possible que les pilotes se comportent différemment pour différents nombres de processeurs apparents. Peut-être (retour à la spéculation) un mécanisme de synchronisation différent est utilisé. Mauvais usage des spinlocks ?
"L'utilisation abusive de primitives de verrouillage et de synchronisation" est une source très répandue de bogues. (Le bogue que je suis censé observer au travail en écrivant ceci est "un crash si vous modifiez les paramètres de l'imprimante en même temps que le travail d'impression est terminé").
Edit 2: les commentaires mentionnent le système d'exploitation essayant d'éviter la privation de threads. Notez que le jeu peut avoir son propre quasi-ordonnanceur interne pour attribuer le travail aux threads, et il y aura un mécanisme similaire dans la carte graphique elle-même (qui est en réalité un système multitâche à part entière). Les chances d'un bug dans l'un de ceux-ci ou l'interaction entre eux sont assez élevées.
www.ecsl.cs.sunysb.edu/tr/ashok.pdf (2008) est une thèse de troisième cycle sur l'amélioration de la planification des cartes graphiques, qui mentionne explicitement qu'elles utilisent normalement la planification selon le principe du premier arrivé, premier servi, qui est facile à mettre en œuvre. systèmes non préemptifs. La situation s'est-elle améliorée? Probablement pas.