2017-04-25 4 views
1

Le système d'exploitation est capable de déterminer comment organiser des processus/threads différents sur différents cœurs de CPU, le planificateur d'OS fait bien le travail. Alors, quand devons-nous vraiment appeler des fonctions comme sched_setafficity() pour un processus, ou pthread_setaffinity_np() pour un pthread?linux c: quel est le cas d'utilisation courant de la fonction "sched_setaffinity"? Je ne le trouve pas utile

Il ne semble pas être en mesure d'augmenter considérablement les performances, si cela est possible, alors je suppose que nous devons réécrire le planificateur de processus Linux droit?

Je souhaite juste savoir quand devons-nous appeler ces fonctions, dans mes applications? Merci.

+0

Vous pouvez utiliser un processeur uniquement pour votre thread sans planification de tâche. Pour ce faire, d'abord vous mettez isocpu patameter dans le fichier grub, puis Linux OS n'utilise pas les processeurs, puis en utilisant sched_setafficity(), vous aurez un CPU privé –

Répondre

1

Il est très utile dans certains processus en temps réel intensifs en termes de calcul liés au DSP (Digital Signal Processing). Disons qu'un processus lié à DSP en temps réel PROCESS0 est en cours d'exécution sur l'unité centrale CPU0. En raison de certains algorithmes d'ordonnancement, la préemption par CPU0 doit se produire de sorte que process0 doit s'exécuter sur un autre CPU. Cette commutation du processus en temps réel est un surcoût. D'où l'affinité. Nous dirigeons vers le noyau que le processus0 devrait fonctionner sur CPU0.