PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Pierre-Alain Bandinelli : Comment LEDE a sauvé mes "vieux" points d'accès Wifi

samedi 28 octobre 2017 à 21:03

J'avais acheté il y a peut-être 2-3 ans des petits points d'accès Wifi d'une marque chinoise. Lors de la divulgation de KRACK, je vérifiais le site du fabricant mais je constatais qu'aucune mise à jour n'était publiée pour ces appareils.

Je me tournais alors vers LEDE, le fork open source d'OpenWRT. En quelques minutes, j'identifiais le matériel dans la liste des matériels supportés, je téléchargeais la version 17.01.4 publiée le 18 octobre avec les corrections nécessaires pour KRACK.

L'installation de LEDE sur les points d'accès fut très facile :

  1. réinitialiser les points d'accès à l'aide du bouton RESET
  2. se connecter à l'interface du constructeur chinois, et se rendre dans la section "Firmware upgrade"
  3. téléverser le fichier de micrologiciel de LEDE
  4. ... patienter pendant le processus et le redémarrage
  5. se connecter sur http://192.168.1.1 pour trouver LuCI, l'interface graphique de LEDE

Deux enseignements :

Gravatar de Pierre-Alain Bandinelli
Original post of Pierre-Alain Bandinelli.Votez pour ce billet sur Planet Libre.

debian-facile.org : Présentation du Manuel de référence Debian

samedi 28 octobre 2017 à 20:29
Le guide de référence Debian

Le guide de référence Debian est destiné à procurer un large aperçu du système Debian en tant que guide de l?utilisateur d?un système installé. Il couvre de nombreux aspects de l?administration du système à l?aide d?exemples de commandes de l?interpréteur pour les non-développeurs.

Le but de ce document:

    fournir un aperçu et passer les cas marginaux (vue d?ensemble) ;
    le garder court et simple ;
    ne pas réinventer la roue (utiliser des liens pointant vers les références existantes) ;
    mettre l?accent sur les outils n?ayant pas d?interface graphique ou en mode console (utiliser des exemples en ligne de commande) ;


On y trouvera:

Toutes les bases pour comprendre et administrer un système type Unix.

    L'administration des utilisateurs ;
    le compte administrateur ;
    la gestion des permissions ;
    le système de fichiers ;

Toutes les bases de la gestion des paquets

    Les mises à jour ;
    les opérations de base pour la gestion des paquets ;
    aptitude ;
    apt-get ;
    apt-cache ;
    les archives Debian ;
    création d?une petite archive publique de paquets ;

Des explications sur l'initialisation du système

Les différentes étapes du processus d?amorçage du système ;
    l'Initialisation des modules du noyau ;

Des notions sur l'authentification

    Les fichiers de configuration importants ;
    gestion des informations des comptes et des mots de passes ;
    avoir un mot de passe de qualité ;
    sudo ;
    mot de passe sûr avec internet ;
    sécuriser le mot de passe de l?administrateur ;

Des explications sur la configuration réseau

    La gestion du périphérique réseau ;
    La configuration du réseau ;
    Le pare-feu ;

Des présentations sur les applications réseau

    Le navigateur web ;
    le courrier électronique ;
    leur configuration ;
    les serveurs POP3/IMAP4 ;
    Le serveur et les utilitaires d'impression ;
    Les serveurs d'accès à distance comme SSH ;

Tout savoir sur votre interface graphique (X Window)

    Configurer votre environnement de bureau ;
    Le serveur X ;
    Démarrer le système X Window ;
    les applications de bureautique ;
    les applications utilitaires pour X ;

Comprendre les paramètres linguistiques

    Le clavier ;
    l'affichage de sortie ;
    la reconfiguration des paramètres linguistiques ;

On trouvera aussi un chapitre astuces

    Commandes colorisées ;
    afficher les fichier ouverts par un processus ;
    tracer l?activité d?un programme;
    astuces de maintenance du système ;
    astuces relatives au stockage des données ;
    gestion de l'espace disque ;
    créer le fichier image du disque ;
    le noyau Linux ;
    La virtualisation ;

On apprendra à synchroniser, archiver, sauvegarder

    Partager, copier et archiver ;
    sauvegarder et restaurer ;
    et plus encore ;

Il est aussi proposer un chapitre sur la conversion de données

    Imprimer convenablement une page de manuel ;
    créer une page de manuel ;
    fusionner deux fichiers PS ou PDF ;
    extraire des données XML
    etc...


Ce document est parcemé de petites choses qui facilitent sa compréhension, on y verra:

Des mises en garde


Attention
"En utilisant une source d?archive mixte, vous devez vous assurer par vous-même de la compatibilité des paquets car Debian ne la garantit pas.
S?il existe des incompatibilités de paquets, vous pouvez casser votre système. Vous devrez être capable d?apprécier ces exigences techniques.
L?utilisation de sources mixtes d?archives aléatoires est une opération entièrement facultative et son utilisation est quelque chose que je ne vous encourage pas à faire."


Des avertissements

Avertissement
"Ne jouez pas avec les chargeurs d?amorçage sans avoir un support de secours amorçable (CD ou disquette) créé à partir des images du paquet grub-rescue-pc.
Il vous permettra de démarrer votre système sans même avoir de chargeur initial fonctionnel sur le disque dur."


Des astuces

Astuce
Les n?uds de périphériques n?ont pas besoin d?être statiques pour les règles de montage se trouvant dans « /etc/fstab ».
Vous pouvez utiliser UUID à la place de leur nom de périphérique tel que« /dev/sda » pour monter les périphériques.
Consultez Section 9.5.3, « Accès à une partition en utilisant l?UUID ».


Des Tableaux

    Tableau 4.7. Liste des services et ports sûrs et non sûrs;
    Tableau 6.1. Liste de navigateurs web;
    Tableau 6.2. Liste des paquets de greffons pour les navigateurs;
    ETC...


Des notes

Note
Une fois que quelqu?un a accès à l?interpréteur de commandes de l?administrateur, il peut accéder à l?ensemble du système et en réinitialiser tous les mots de passe.
De plus, il peut compromettre le mot de passe de n?importe quel utilisateur en utilisant des outils de cassage de mots de passe par force brute tels que les paquets john et crack
(consultez Section 9.4.11, « Vérification de la sécurité et de l?intégrité du système »).
Ces mots de passes cassés peuvent permettre de compromettre d?autres systèmes.


Note
L?installation de logiciels tels que scribus (KDE) sous l?environnement de bureau GNOME est acceptable puisqu?il n?existe pas de fonctionnalité équivalente sous l?environnement de bureau de GNOME.
Cependant, l?installation de nombreux paquets ayant les mêmes fonctionnalités pollue votre menu.


Des exemple de fichiers

Script d?exemple pour la sauvegarde du système

#!/bin/sh -e
# Copyright (C) 2007-2008 Osamu Aoki , Public Domain
BUUID=1000; USER=osamu # UID and name of a user who accesses backup files
BUDIR="/var/backups"
XDIR0=".+/Mail|.+/Desktop"
XDIR1=".+/\\.thumbnails|.+/\\.?Trash|.+/\\.?[cC]ache|.+/\\.gvfs|.+/sessions"
XDIR2=".+/CVS|.+/\\.git|.+/\\.svn|.+/Downloads|.+/Archive|.+/Checkout|.+/tmp"
XSFX=".+\\.iso|.+\\.tgz|.+\\.tar\\.gz|.+\\.tar\\.bz2|.+\\.cpio|.+\\.tmp|.+\\.swp|.+~"
SIZE="+99M"
DATE=$(date --utc +"%Y%m%d-%H%M")
[ -d "$BUDIR" ] || mkdir -p "BUDIR"
umask 077
dpkg --get-selections \\* > /var/lib/dpkg/dpkg-selections.list
debconf-get-selections > /var/cache/debconf/debconf-selections

{
find /etc /usr/local /opt /var/lib/dpkg/dpkg-selections.list \\
     /var/cache/debconf/debconf-selections -xdev -print0
find /home/$USER /root -xdev -regextype posix-extended \\
  -type d -regex "$XDIR0|$XDIR1" -prune -o -type f -regex "$XSFX" -prune -o \\
  -type f -size  "$SIZE" -prune -o -print0
find /home/$USER/Mail/Inbox /home/$USER/Mail/Outbox -print0
find /home/$USER/Desktop  -xdev -regextype posix-extended \\
  -type d -regex "$XDIR2" -prune -o -type f -regex "$XSFX" -prune -o \\
  -type f -size  "$SIZE" -prune -o -print0
} | cpio -ov --null -O $BUDIR/BU$DATE.cpio
chown $BUUID $BUDIR/BU$DATE.cpio
touch $BUDIR/backup.stamp




Comme on le voit ce document peut être votre livre de chevet ou alors il peut se picorer à l'envie selon le problème que l'on recontre.



https://www.debian.org/doc/manuals/debi ? ex.fr.html

Gravatar de debian-facile.org
Original post of debian-facile.org.Votez pour ce billet sur Planet Libre.

Remi Collet : Astuces de configuration de PHP

samedi 28 octobre 2017 à 08:48

Traduction de l'article PHP Configuration Tips.

Cet article regroupe les informations actualisées qui ont été publiées ici au cours des dernières années.

RHEL 7 fournit le serveur HTTP Apache  version 2.4 et PHP version 5.4.

Le configuration la plus commune pour Apache et PHP utilise mod_php, mais présente quelques limites et inconvénients :

Cet article explique comment déléguer l'exécution des scripts PHP à un service d'arrière plan utilisant le protocole  FastCGI, comment utiliser une version récente de PHP, comment utiliser plusieurs versions de PHP, et comment améliorer les performances d'Apache..

Le paquet du serveur HTTP d'apache disponible dans RHEL fournit l'ensemble des fonctionnalités nécessaires pour une telle configuration.

1. Basculer vers php-fpm

1.1. Supprimer mod_php

Il est conseillé de supprimer ou de désactiver mod_php afin de réduire la consommation mémoire de chaque processus httpd.

Vous pouvez soit déinstaller le paquet php, qui ne contient que ce module

yum remove php

ou simplement le désactiver en commentant la directive LoadModule directive dans le fichier /etc/httpd/conf.modules.d/10-php.conf.

# disabled # LoadModule php5_module modules/libphp5.so

1.2. Installer php-fpm

Vous pouvez maintenant installer php-fpm et activer son service

yum install php-fpm
systemctl start php-fpm
systemctl enable php-fpm

Remarque: le paquet php-fpm est disponible dans le canal optional, qui doit être activé.

Pour configurer l'exécution des scripts PHP, modifiez ou créez le fichier de configuration /etc/httpd/conf.d/php.conf :

Les lignes suivantes interdise l'accès aux fichiers .user.ini depuis les clients Web!

  
    Require all denied
  

Activation de la gestion du Multiviews par php:

  AddType text/html .php

Ajouter index.php à la liste des fichiers utilisés pour fournir le contenu d'un dossier :

  DirectoryIndex index.php

La ligne suivante active les entêtes d'autorisation :

  SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=

Rediriger l'exécution des scripts PHP vers le service FPM

  
    SetHandler "proxy:fcgi://127.0.0.1:9000"
  

Si des directives php_value sont présentes dans ce fichier, vous devez les supprimer, elles ne concernent que mod_php.

Vous pouvez maintenant redémarrer le serveur web et, avec une simple page de test



vérifier qui PHP est désormais exécuté à par le service FastCGI:

  PHP Version 5.4.16
  Server API= FPM/FastCGI

1.3. Réglages de PHP

Le fichier de configuration principal est /etc/php-fpm.conf, qui contient beaucoup de commentaires expliquant chaque option.

FPM pour exécuter plusieurs services (pool), chacun exécutant les scripts PHP avec des options pouvant être différentes, le fichier de configuration du service par défaut (www) est /etc/php-fpm.d/www.conf, qui contient aussi de nombreux commentaires.

1.3.1. php_value, php-flag

Les options de PHP peuvent être configurées en utilisant les directives php_value, php_admin_value, php_flag et php_admin_flag :

  • avec mod_php,  dans les fichiers de configuration d'Apache
  • avec FPM, dans les fichiers de configuration de chaque service (pool)

1.3.2. .htaccess

Les options peuvent, en plus, être définies pour un dossier spécifique :

  • avec mod_php, en utilisant un fichier .htaccess
  • avec FPM, en utulisation un fichier .user.ini (les mot clés php_* ne sont pas nécessaires).

1.3.3. Réglages des processus

FPM fonctionne en service et lance plusieurs processus pour gérer les différentes requêtes en parallèle, il existe plusieurs modes :

  • pm = ondemand, un processus est lancé uniquement lors d'une nouvelle connexion, et arrêté lorsqu'il n'y a pas d'activité, ce mode est  adapté pour les environnements de développement
  • pm = dynamic, un groupe de processus est toujours en fonctionnement, plus de processus seront démarrés en cas de besoin, ce mode adapté à la production
  • pm = static, un nombre fixe de processus est toujours présent, ce mode est adapté à la production et peut améliorer les performances

1.4. Réglages du Serveur HTTP Apache

1.4.1. Mode threadé

Par défaut, le serveur HTTP apache utilise un ensemble de processus pour gérer les requêtes entrantes (MPM prefork).

Comme nous n'utilisons plus mod_php, nous pouvons basculer sur un MPM threadé (worker or event), et c'est un ensemble de threads qui gérera les requêtes, réduisant le nombre de processus, la consommation mémoire, et améliorant les performances, en particulier lorsqu'il s'agit de servir de nombreux fichiers statiques.

Changer leMPM utilisé dans le fichier de configuration /etc/httpd/conf.modules.d/00-mpm.conf :

  # disabled # LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
  # disabled # LoadModule mpm_worker_module modules/mod_mpm_worker.so
  LoadModule mpm_event_module modules/mod_mpm_event.so

1.4.2. Unix Domain Socket

Par défaut, FPM écoute sur un socket réseau, mais il peut aussi utiliser un socket local (UDS), ce qui peut améliorer sensiblement les performances :

Dans la configuration du service (pool) FPM :

  listen = /run/php-fpm/www.sock
  listen.owner = apache
  listen.mode = 0660

Dans la configuration du serveur Apache :

  SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"

1.4.2. Séparation du frontal et des serveurs applicatifs

Par défaut, FPM écoute les requêtes entrantes sur un socket réseau local, il est évidement possible d'utiliser un serveur séparé, une machine virtuelle ou un containeur (une instance docker)

Dans le configuration du service (pool) FPM :

  listen = 10.0.0.2:9000
  listen.allowed_clients = 10.0.0.1

Dans la configuration du serveur Apache :

  SetHandler "proxy:fcgi://10.0.0.2:9000"

1.4.3 Plusieurs serveurs applicatifs

Pour traiter plus de requêtes simultanément, vous pouvez désirer répartir la charger entre plusieurs serveurs PHP, ce qui est très facile.

Exemple de configuration du serveur Apache avec 3 serveurs applicatifs :

  # Création du répartiteur de charge
  
    BalancerMember fcgi://10.0.0.2:9000
    BalancerMember fcgi://10.0.0.3:9000
    BalancerMember fcgi://10.0.0.4:9000
  
  # Redirection de l'exécution des scripts PHP
  
    SetHandler "proxy:balancer://phpfpmlb"
 

2. Utilisation d'une version récente de PHP

RHEL fournit PHP version 5.4, qui était la version courante lors de la publication de RHEL-7, mais qui peut être trop ancienne pour des projets récents.

PHP version 5.6, 7.0 et 7.1 sont maintenant supportés sur RHEL, fournit dans le produit Red Hat Software Collections (RHSCL).

Dans l'example ci-dessous, nous utiliserons la version 7.0, mais s'applique à l'identique pour les autres versions.

2.1. Installation

Installation de la  Software Collection, après avoir activé le canal RHSCL:

  yum install rh-php70

Installation du service FPM service pour cette version:

  yum install rh-php70-php-fpm

Installation des extensions supplémentaires nécessaires :

  yum install rh-php70-php-mbstring rh-php70-php-pgsql rh-php70-php-opcache

Astuce : comparer la liste des extensions disponibles, pour s'assurer que tout ce qui est nécessaire est présent.

  php --modules | tee /tmp/54
  scl enable rh-php70 'php --modules' | tee /tmp/70
  diff /tmp/54 /tmp/70

Astuce : ne jamais se fier au nom des paquets, mais préférer le nom des extensions (e.g. php-mysqli ou rh-php70-php-simplexml), en effet la découpage des paquets peut changer entre les versions.

2.2. Utiliser une nouvelle version de PHP

Lorsqu'on utilise FPM, c'est aussi simple que d’arrêter l'ancien service et de démarrer le nouveau:

  systemctl stop  php-fpm
  systemctl start rh-php70-php-fpm

2.3. Paquet additionnels

Les Software Collections fournissent les même extensions que les paquets standard de RHEL.

Les utilisateurs sont habitués à trouver des extensions supplémentaires dans le dépôt EPEL, de la même manière, des extensions sont disponibles dans le dépôt communautaire centos-sclo-sclo, pour plus d'information, cherchez sclo-php sur le site https://www.softwarecollections.org/.

3. Utiliser plusieurs versions de PHP

Puisque l'exécution de PHP est redirigée version le service FastCGI service par la directive SetHandler, elle peut être définie pour chaque hôte virtuel, chaque projet ou chaque dossier.

Dans l'exemple ci-dessous, nous utiliserons PHP version 5.4 du système de base (pour des applications anciennes, qui a été configuré précédement)  et PHP version 7.1 simultanément.

3.1. Installation

Installation de la Software Collection, après avoir activé le canal RHSCL:

  yum install rh-php71 rh-php71-php-fpm rh-php71-php-mbstring rh-php71-php-opcache ...

Configuration de FPM pour écouter sur un port différent de celui utilisé par le service php-fpm service par défaut, dans le fichier /etc/opt/rh/rh-php71/php-fpm.d/www.conf.

  listen = 127.0.0.1:9071

Configurer SELinux pour ne pas bloquer ce port :

  semanage port -a -t http_port_t -p tcp 9071

Démarrer le service :

  systemctl start rh-php71-php-fpm

Il est désormais possible de choisir la version de PHP utilisée pour chaque dossier dans le fichier de configuration du serveur Apache :

Exemple:

  # Utiliser PHP 7.1 par défaut
  
    SetHandler "proxy:fcgi://127.0.0.1:9071"
  
  # Utiliser PHP 5.4 pour une ancienne application
  
    
      SetHandler "proxy:fcgi://127.0.0.1:9000"
    
  

4. Conclusion

J'espère que ce petit article a illustré les nombreux bénéfices de basculer sur FPM pour vos applications PHP:

  • isolation des processus entre le frontal web (httpd) et les serveurs applicatifs (fpm)
  • amélioration des performances
  • utilisation des versions modernes de PHP
  • utilisation de plusieurs versions de PHP

Gravatar de Remi Collet
Original post of Remi Collet.Votez pour ce billet sur Planet Libre.

Articles similaires

genma : Quelques trucs sympa avec SSH

jeudi 26 octobre 2017 à 09:00

Le fichier config

Pour éviter les attaques par défaut sur le port 22 pour SSH, il est courant de changer de port. Du coup, il faut lancer ssh avec l'option -p. Exemple

ssh -p 1234 moi@monserveur.org

De plus, l'utilisateur que l'on veut utiliser peut être un utilisateur différent de la session courante. On peut aussi vouloir renommer le nom du serveur pour simplifier

Pour simpifier tout ça, il y a le fichier config qui se trouve /.ssh/config

Extrait du fichie ~/.ssh/config

###################################
# PERSO #
###################################
host cloud
User moi
hostname cloud.monserveur.org
Port 1234
IdentityFile /home/genma/.ssh/SSHKey

Et du coup la commande ci-dessus

ssh -p 1234 moi@monserveur.org

deviendra

ssh moi@cloud

Avoir une bannière personnalisé à la connexion ssh

Quand je suis connecté, j'aime bien avoir une petite personnalisation du genre :

genma@PC~$ ssh genma@cloud.monserveur.org
.____________.
MM. .MM | |
"MM._______.MM" | Le cloud |
/ \\ | de Genma |
/ dMMb dMMb \\ | |
/ dM"""Mb dM"""Mb \\ |____________|
| MMMMM"/O\\"MMMMM | ||o
| "MMM"/ \\"MMM" | .dMMM 8
| dMMMMMMMM
\\ \\ / dMMMMMMMP
AMMMMMMMMM\\_____/MMMMMMMMMMMM"
Enter passphrase for key '/home/genma/.ssh/SSHKey':

Pour celà, j'ai créé (repris en l'adaptant un peu) un dessin en ASCII art. Il faut ensuite créer un fichier

/etc/banner

qui contient l'ASCII art dedans. Et aux connexions SSH suivantes, ce dessin apparaîtra.

Recevoir un SMS - Freemobile à la connexion SSH

J'avais rédigé un tutoriel SSH Notification par SMS Freemobile à la connexion expliquant d'être notifié par sms lors de toutes initialisation d'une connexion sftp ou ssh quand on est un utilisateur Freemobile. Je vous renvoie donc vers cette astuce.

Avoir un prompt coloré

Pour avoir un prompt (invite de commande) coloré et savoir de suite, visuellement, sans avoir à lire sur quel machine je suis (je met du vert, du bleu, du violet) ou si je suis en root (je met alors du rouge), j'utilise la technique du prompt coloré que j'avais décrite ici : Prompt coloré pour son shell

Gravatar de genma
Original post of genma.Votez pour ce billet sur Planet Libre.

Paul Ezvan : BOINC, systemd et priorité des processus sous Linux, la suite

mercredi 25 octobre 2017 à 09:39

Dans mon précédent billet j'avais pensé réglé mon problème, le démon BOINC laissant toutes les ressources processeur libres en cas de besoin.
Pour cela j'avais configuré systemd pour allouer une priorité faible au cgroup contenant les processus de calculs BOINC:
sudo systemctl set-property boinc.service CPUWeight=1
Comme noté dans les commentaires, cet attribut n'est pas disponible dans les versions de systemd antérieures à 231, où il remplace l'attribut CPUShares.
L'équivalent pour ces versions est: systemctl set-property boinc.service CPUShares=2
Ce changement reflète une modification de l'interface cgroups du noyau, où l'attribut cpu.shares est remplacé par cpu.weight. Or cette modification n'a pas encore été intégrée dans la branche principale, ce qui conduit systemd à convertir la valeur de CPUWeight à son équivalent cpu.shares sur mon système.

Pourtant j'ai remarqué que la lecture de vidéos n'était pas fluide sur mon système. En renouvelant l'expérience précédemment décrite les résultats montraient que BOINC ne laissait pas libres toutes les ressources du processeur.
Après avoir lu quelque documentation comme la page de manuel de systemd sur la gestion des ressources et la documentation du noyau sur les cgroups, j'ai pu comprendre d'où venait le problème.
Les cgroups sont organisés hiérarchiquement. Les ressources processeur définies dans un cgroup sont partagées entre les cgroups ayant le même parent.
De plus systemd utilise une hiérarchie spécifique pour grouper les processus du système, nommée slices. systemd sépare les processus utilisés par des services et ceux utilisés par les sessions utilisateurs dans des slices différentes, user.slice et system.slice, qui font partie de la slice racine .slice. Ceci peut-être observé avec la commande systemd-cglsqui représente un arbre des processus, services et slices. Ces slices sont ensuites reflétées dans l'organisation des cgroups créés par systemd.
Le service BOINC est donc lancé dans la slice system.slice, comme la plupart des autres services. Cela signifie qu'il partage son temps processeur avec les autres service dans cette slice selon la configuration CPUWeight donnée, et que la slice partage cette ressource avec les autres slices selon leurs configurations propres.
Celle ci est pour a slice contenant les services et celle contenant les sessions des utilisateurs:
% cat /sys/fs/cgroup/cpu/system.slice/cpu.shares
1024
% cat /sys/fs/cgroup/cpu/user.slice/cpu.shares
1024

Les deux slices ont donc le même nombre de shares configuré. Le résultat est que si chacune demande toutes les ressources processeur disponible, chacune aura 50% du temps disponible alloué. Et donc dans le cas de BOINC, l'utilisateur n'a que 50% du temps processeur disponible !
Une solution est de créer une slice dédiée pour BOINC, et de lui allouer une faible priorité.
On procède en créant la configuration de la slice dans le fichier /etc/systemd/system/lowprio.slice qui a le contenu suivant:

[Unit]
Description=Slice with low CPU priority
DefaultDependencies=no
Before=slices.target
[Slice]
CPUWeight=1

Ensuite on surcharge la configuration du service BOINC en créant un fichier /etc/systemd/system/boinc.service avec le contenu suivant:

.include /usr/lib/systemd/system/boinc.service
[Service]
Slice=lowprio.slice

Finalement on recharge la configuration de systemd et redémarre le service BOINC:

% sudo systemctl daemon-reload
% sudo systemctl restart boinc.service

On peut maintenant relance la même expérience qu'auparavant, mais en utilisant la commande systemd-cgtop qui montre l'utilisation du processeur par groupe:

Control Group Procs %CPU Memory Input/s Output/s
/ 72 558.4 5.1G - -
/lowprio.slice 8 520.0 - - -
/user.slice 47 33.8 - - -
/system.slice 16 2.9 - - -
/init.scope 1 - - - -
/lowprio.slice/boinc.service 8 - - - -

On remarque que boinc.service n'a pas de temps CPU comptabilisé. C'est parce que j'ai retiré l'attribut CPUWeight pour le service, ce qui désactive le suivi de l'utilisation processeur de son cgroup. Ce n'est pas un problème car le cgroup parent lowprio.slice le comptabilise, et utilise environ 558% de temps processeur.
On relance l'expérimentation en lançant la commande % for i in `seq 8`; do sha512sum /dev/zero&;done.
Cette fois cgtop montre que toutes les ressources processeurs sont attribuées à la slice contenant les sessions utilisateurs user.slice:

Control Group Procs %CPU Memory Input/s Output/s
/ 80 800.0 5.4G - -
/user.slice 55 784.4 - - -
/lowprio.slice 8 10.8 - - -
/system.slice 16 4.0 - - -
/init.scope 1 - - - -
/lowprio.slice/boinc.service 8 - - - -

On note que system.slice est aussi utilisée car le serveur d'affichage Xorg est lancé dans cette slice, et je joue une vidéo en parallèle. Il faut donc allouer une priorité suffisante à ce groupe pour ne pas impacter la vitesse d'affichage.
Pour conclure on peut noter que l'utilisation des cgroups et de systemd a fortement compliqué la configuration de l'allocation des ressources processeur du système. Il m'a fallu pas mal de temps pour comprendre comment revenir au comportement voulu par BOINC, c'est à dire de laisser toutes les ressources processeur disponibles quand n'importe quel autre programme en a besoin.

Thème: 
BOINC
Linux
Libre
systemd

Gravatar de Paul Ezvan
Original post of Paul Ezvan.Votez pour ce billet sur Planet Libre.

Articles similaires