[RÉSOLU] Configuration multicœurs «On demand» pour économiser la puissance électrique // «performance» pour éviter les Xruns
Bonjour,
Configuration multicœurs «On demand» pour économiser la puissance électrique // «performance» pour éviter les Xruns.
résumé : Finis les Xruns de captures audio à cause du changement de fréquence avec l'économie d'énergie de l'ordinateur à CPU multicœurs !
Je me suis fait une réflexion toute bête : lors de la capture sonore, Jack doit tourner sur un cœur qui ne change pas de fréquence (pas d'économie d'énergie Quiet possible dans le BIOS de la TYAN S2915-E), mais c'est embêtant de bloquer les 2×4 cœurs à 2,3 GHz au niveau consommation électrique.
Merci à Monsieur Christian DELAIR de m'avoir mis sur la piste.
Alors c'est très simple : il suffit de dédier un cœur CPU fixé en mode performance à 2,3 GHz pour l'utilisation de Jack, et de lancer Jack sur cet unique cœur dédié. (on pourrait changer de cœur à chaque démarrage afin de ne pas user tout le temps la même cœur CPU).
extrait de http://manpages.ubuntu.com/manpages/jaunty/fr/man1/taskset.1.html
…
0xFFFFFFFF est un masque : 8×4=32 processeurs.
Un exemple avec le moniteur système, à adapter avec Jack :
Il ne reste plus qu'à configurer tous les processeurs en mode gouverneurs «ondemand» pour économiser la puissance à la prise secteur, sauf pour le processeur dédié à Jack qui sera en mode gouverneur «performance» afin de ne pas changer de fréquence et de ne pas générer de Xrun dans Jack.
(ne l'ayant pas effectué, il prévoir d'ajouter d'autres processus que Jack si les Xruns continuent).
J'espère que ça intéresse des gens qui font de la MAO ;)
Si quelqu'un peut finir la configuration, je n'ai exposé que le brouillon, l'idée générale.
Merci
LDVC@
Configuration multicœurs «On demand» pour économiser la puissance électrique // «performance» pour éviter les Xruns.
résumé : Finis les Xruns de captures audio à cause du changement de fréquence avec l'économie d'énergie de l'ordinateur à CPU multicœurs !
Je me suis fait une réflexion toute bête : lors de la capture sonore, Jack doit tourner sur un cœur qui ne change pas de fréquence (pas d'économie d'énergie Quiet possible dans le BIOS de la TYAN S2915-E), mais c'est embêtant de bloquer les 2×4 cœurs à 2,3 GHz au niveau consommation électrique.
Merci à Monsieur Christian DELAIR de m'avoir mis sur la piste.
Alors c'est très simple : il suffit de dédier un cœur CPU fixé en mode performance à 2,3 GHz pour l'utilisation de Jack, et de lancer Jack sur cet unique cœur dédié. (on pourrait changer de cœur à chaque démarrage afin de ne pas user tout le temps la même cœur CPU).
extrait de http://manpages.ubuntu.com/manpages/jaunty/fr/man1/taskset.1.html
TASKSET(1) Commandes utilisateur TASKSET(1) NOM taskset - Récupérer ou définir l'affinité processeur d'un processus SYNOPSIS taskset [options] masque commande [paramètres] ... taskset [options] -p [masque] PID DESCRIPTION taskset est généralement utilisé pour récupérer ou définir l'affinité processeur d'un processus en cours d'exécution en donnant son PID ou de lancer une nouvelle commande avec une affinité processeur fournie. L'affinité processeur est une propriété de l'ordonnanceur qui « lie » un processus à un ensemble de processeurs donné sur un système. L'ordonnanceur de Linux respectera l'affinité processeur et le processus ne s'exécutera sur aucun autre processeur. Notez que l'ordonnanceur Linux gère également l'affinité processeur dite « naturelle » : l'ordonnanceur essaie de maintenir les processus sur le même processeur tant que ça a du sens pour des raisons de performances. Ainsi, forcer une affinité processeur spécifique n'est utile que dans certaines applications. L'affinité du processeur est représentée par un masque de bits, avec le bit de poids le plus faible correspondant au premier processeur logique et le bit de poids le plus fort au dernier processeur logique. Tous les processeurs peuvent ne pas exister dans un système donné, mais un masque peut indiquer plus de processeurs que ceux qui sont présents. Un masque récupéré n'aura que les bits correspondants aux processeurs présents physiquement sur le système. Si un masque erroné est fourni (c'est-à-dire, un masque qui correspond à un processeur absent sur le système actuel) une erreur est alors renvoyée. Les masques sont généralement codés en hexadécimal. Par exemple : 0x00000001 correspond au processeur nº 0 0x00000003 correspond aux processeurs nº 0 et nº 1 0xFFFFFFFF correspond à tous les processeurs (nº 0 à nº 31). …
…
0xFFFFFFFF est un masque : 8×4=32 processeurs.
Un exemple avec le moniteur système, à adapter avec Jack :
# ps -ec|grep multiload 1918 TS 19 ? 00:00:02 multiload-apple # taskset -p 0x1 1918 pid 1918's current affinity mask: 3 pid 1918's new affinity mask: 1 #le moniteur système s’exécute uniquement sur le processeur de masque 1 : le premier CPU #mais on peut forcer la tache 1918 de cet exemple, à utiliser le deuxième processeur : # taskset -p 0x2 1918 pid 1918's current affinity mask: 1 pid 1918's new affinity mask: 2
Il ne reste plus qu'à configurer tous les processeurs en mode gouverneurs «ondemand» pour économiser la puissance à la prise secteur, sauf pour le processeur dédié à Jack qui sera en mode gouverneur «performance» afin de ne pas changer de fréquence et de ne pas générer de Xrun dans Jack.
(ne l'ayant pas effectué, il prévoir d'ajouter d'autres processus que Jack si les Xruns continuent).
J'espère que ça intéresse des gens qui font de la MAO ;)
Si quelqu'un peut finir la configuration, je n'ai exposé que le brouillon, l'idée générale.
Merci
LDVC@