2 votes

Un noyau qui supporte le multi-core peut-il réduire l'overhead du cpu, réduire la surchauffe du cpu ?

Je n'ai trouvé qu'un seul noyau identifié par le noyau à partir de /proc/cpuinfo . C'est pourquoi j'installe un noyau 686 pae pour identifier tous les cœurs et obtenir des fonctionnalités multi-cœurs.

J'ai lu qu'un processus peut utiliser plus d'un cœur s'il est disponible, c'est-à-dire qu'une application doit être programmée pour utiliser les plusieurs cœurs disponibles sur une machine.

Mais je me demande si un noyau 686 pae est capable de diviser le total des processus et 1. assign a set of processes to different cores 2. share a process between different cores ce qui peut réduire le travail de chaque noyau. Cela permet de réduire le nombre de processus en attente et d'achever les processus plus rapidement. Un noyau qui supporte le multitraitement peut-il réaliser cela et aider à réduire l'overhead du processeur ?

Y a-t-il d'autres méthodes que je peux suivre pour partager efficacement les processus entre les cœurs ?

1voto

Breakthrough Points 33693

On peut déjà limiter les cœurs sur lesquels un processus peut être exécuté en définissant l'affinité des processus . Sous Linux, cela peut être accompli en utilisant taskset pour limiter les cœurs sur lesquels le processus peut être exécuté. Par défaut, Linux utilise un planificateur de tâches préemptif qui est presque identique à ce que vous décrivez dans le document (2) . Presque tous les principaux systèmes d'exploitation utilisent ce type de planificateur de tâches, ce qui fait qu'un processus est exécuté sur plusieurs cœurs par défaut.

En fait, pour garantie votre processus fonctionne pendant X temps passé sur le noyau Y comme vous l'avez laissé entendre dans (1) nécessiterait l'utilisation d'un système d'exploitation en temps réel ; il existe également un module de noyau en temps réel pour Linux (par ex. RTLinux ).


TL,DR : En réponse à la question Comment puis-je partager efficacement un processus entre les cœurs ? Tous les principaux systèmes d'exploitation le font déjà en raison de l'utilisation du planificateur de tâches. Le rôle d'un système d'exploitation est de contrôler quel processus s'exécute à quel moment et à quel endroit. Bien qu'il soit possible d'"épingler" un processus à un cœur particulier (ou à un ensemble de cœurs) et de l'empêcher de s'exécuter sur d'autres cœurs (par l'intermédiaire de la fonction taskset ), le système d'exploitation continuera à programmer l'exécution d'autres processus sur ce noyau lorsque le processus est préempté.

Si jamais vous avez besoin de garantie l'exécution de votre programme pendant au moins X temps passé sur le noyau Y vous devriez envisager d'utiliser un noyau en temps réel, ou "mettre au point" le planificateur de tâches que vous utilisez déjà d'utiliser différentes politiques de préemption (ou même de remplacer l'ensemble du planificateur de tâches par un autre !) Notez que seul un système d'exploitation en temps réel garantie exécution.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X