Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

BOINC (et d'autres pas en tâche de fond)

4 réponses
Avatar
Yliur
Bonjour

J'ai installé BOINC et il fait du calcul en basse priorité. Depuis un
moment il ne semble plus fonctionner en "tâche de fond". D'après top,
les processus de calcul qu'il lance sont bien en priorité 19 (nice
19) mais si je lance un traitement en priorité 0 ("normale") les deux se
partagent le processus équitablement (la moitié chacun), alors que le
calcul BOINC devrait ne rien faire (ou presque ?) quand un autre
processus a besoin du processeur.

Précisons qu'il s'agit bien d'un processeur mono-coeur.

Le fait que boinc soit lancé avec son propre utilisateur m'a fait
penser à une histoire de quotas, bien que je n'aie rien touché de ce
côté a priori, mais le problème se produit aussi avec des logiciels que
je lance en priorité 18 avec mon utilisateur.

Des ides sur ce que ça pourrait être ? Ou des choses à regarder pour
avoir plus d'informations ?

Tout ce que j'ai pour l'instant c'est le résultat de top, qui affiche
quelque chose dans ce genre (simplifié ici) :
USER PR NI %CPU COMMAND
moi 20 0 32.2 progtest
boinc 39 19 31.9 garli-2.0
moi 38 18 15.5 truc
...


* progtest est un programme qui effectue une boucle sans intérêt, pour
utiliser le processeur. Juste pour les essais, mais ça marche avec
n'importe quel programme (par exemple firefox).

* garli-2.0 est un des programmes de calcul de BOINC, lancé en basse
priorité donc.

* truc est un autre programme qui ne consomme pas tout le processeur
mais en basse priorité, donc qui devrait laisser sa place à progtest
aussi.

Merci

Yliur

4 réponses

Avatar
Fabien LE LEZ
On Sat, 18 Feb 2012 22:08:25 +0100, Yliur :

* progtest est un programme qui effectue une boucle sans intérêt, pour
utiliser le processeur.



Modifie ce programme pour qu'il affiche, toutes les secondes par
exemple, le nombre de calculs effecués. Lance-le tout seul, et note
les résultats. Puis, lance BOINC en priorité faible, et regarde si la
vitesse de ton premier programme baisse effectivement.
Avatar
Yliur
Le Sun, 19 Feb 2012 01:32:49 +0100
Fabien LE LEZ a écrit :

On Sat, 18 Feb 2012 22:08:25 +0100, Yliur :

>* progtest est un programme qui effectue une boucle sans intérêt,
>pour utiliser le processeur.

Modifie ce programme pour qu'il affiche, toutes les secondes par
exemple, le nombre de calculs effecués. Lance-le tout seul, et note
les résultats. Puis, lance BOINC en priorité faible, et regarde si la
vitesse de ton premier programme baisse effectivement.



J'ai fait un programme qui incrémente un compteur pendant 10 secondes.
Quand le calcul de BOINC est lancé en même temps (en basse priorité,
vérifié avec top comme dans mon message précédent), il fait en gros
deux fois moins d'additions (sur plusieurs essais, pour être sûr).

De manière plus analogique, quand je lance Firefox et que BOINC fait
des calculs, il met nettement plus de temps à se lancer et à réagir, on
sent bien la différence.
Avatar
Yliur
Pas d'idée(s) ? :,(
Avatar
Yliur
Le Sat, 18 Feb 2012 22:08:25 +0100
Yliur a écrit :


Bonjour

J'ai installé BOINC et il fait du calcul en basse priorité. Depuis un
moment il ne semble plus fonctionner en "tâche de fond". D'après top,
les processus de calcul qu'il lance sont bien en priorité 19 (nice
19) mais si je lance un traitement en priorité 0 ("normale") les deux
se partagent le processus équitablement (la moitié chacun), alors que
le calcul BOINC devrait ne rien faire (ou presque ?) quand un autre
processus a besoin du processeur.

Précisons qu'il s'agit bien d'un processeur mono-coeur.

Le fait que boinc soit lancé avec son propre utilisateur m'a fait
penser à une histoire de quotas, bien que je n'aie rien touché de ce
côté a priori, mais le problème se produit aussi avec des logiciels
que je lance en priorité 18 avec mon utilisateur.

Des ides sur ce que ça pourrait être ? Ou des choses à regarder pour
avoir plus d'informations ?

Tout ce que j'ai pour l'instant c'est le résultat de top, qui affiche
quelque chose dans ce genre (simplifié ici) :
USER PR NI %CPU COMMAND
moi 20 0 32.2 progtest
boinc 39 19 31.9 garli-2.0
moi 38 18 15.5 truc
...


* progtest est un programme qui effectue une boucle sans intérêt, pour
utiliser le processeur. Juste pour les essais, mais ça marche avec
n'importe quel programme (par exemple firefox).

* garli-2.0 est un des programmes de calcul de BOINC, lancé en basse
priorité donc.

* truc est un autre programme qui ne consomme pas tout le processeur
mais en basse priorité, donc qui devrait laisser sa place à progtest
aussi.




Je viens de refaire des essais avec une idée trouvée sur des forums.

Si je lance deux processus à goinfrer le processeur avec le même
utilisateur, un avec nice -n19 et l'autre normalement, les deux
processus utilisent chacun la moitié du processeur.

Si je tape cette commande (avec root) et qu'ensuite je relance mes deux
processus, ils se comportent normalement (celui qui a la très faible
priorité n'utilise que très peu le processeur) :
echo 0 > /proc/sys/kernel/sched_autogroup_enabled
(ce fichier contenait la valeur 1 avant)

Bon, ça met le doigt sur la source du problème mais je ne comprends
toujours pas : sur une autre machine semblable le problème se pose
aussi, mais sur une machine plus récente (i7 quadricoeurs avec
hyperthreading) je n'arrive pas à la même chose : les 8 processus lancés
par BOINC laissent effectivement de la place quand un processus est
lancé avec une priorité normale et utilise le processeur (ce processus
peut alors utiliser un coeur entier). Le fichier nommé plus haut
contient bien la valeur 1, j'ai vérifié.

Est-ce que quelqu'un a une idée, une piste, ... ?

Comment le noyau crée-t-il les groupes ? Comment décide-t-il que tel
processus ne mérite pas de prendre une plus grande part qu'un autre du
processeur ?

Et donc pourquoi sur certaines machines le découpage est "pourri" (en
tout cas ne me convient pas) ? Je suppose que la création de groupes ne
consiste pas simplement à mettre chaque processus dans un groupe pour
ignorer leur priorité tant qu'on n'a pas explicitement mis plusieurs
processus dans le même groupe, si ?