Forum Linux.noyau Linux et temps réel

Posté par  .
Étiquettes :
5
13
juil.
2012

Bonsoir à tous,

Je vais essayer de faire court en oubliant pas les détails importants. Alors voilà, j'ai un problème.

Je viens de réinstaller le système de mon ordinateur perso, pour le fun (sisi), et aussi parce que j'en avais un peu marre des bugs et des mises à jour de plusieurs centaines de méga-octets de Debian unstable. J'ai donc installé Squeeze, car maintenant les rétro-portages sont officiels et ça ça le fait. Je suis content j'ai un système tout beau tout propre, en LVM, avec XFCE. C'est un amd64.

J'avais l'habitude d'utiliser le logiciel LMMS (logiciel de composition musicale) en compilant les dernières sources disponibles via git, histoire de suivre un peu le développement et de pouvoir remonter du bug. Donc ni une ni deux, git clone, cmake, make, make install, je refais la même.

Lancement de LMMS (qui cause directement à ALSA, Jack n'est pas utilisé), ouverture du dernier morceau que j'ai fait, pas de problème ça juste marche. Bon, un message dans la console au lancement : "Could not set realtime priority". Ça va je connais le truc, Jack m'ayant gentiment créé un /etc/security/limits.d/audio.conf avec :

@audio   -  rtprio     95
@audio   -  memlock    unlimited
#@audio   -  nice      -19

je sais que je n'ai qu'à m'ajouter au groupe 'audio' et ça va le faire.

Et c'est là que ça se gâte. Donc relançage de lmms, je n'ai plus le message "Could not set realtime priority", "Cool !" me dis-je, mais voilà, le son craque, il est tout pourri, alors je ne comprends pas et je viens donc m'en remettre à votre sagacité légendaire pour me donner vos idées sur ce dysfonctionnement.

Les infos importantes en vrac :

Si j'utilise Jack (avec QSynth, le backend jack de lmms est moisi) je vois bien une différence entre realtime et sans realtime, à latence égale j'ai clairement moins de xruns quand je suis en temps réel.

J'ai essayé d'installer le noyau 3.2 qui a le patch realtime et qui se trouve dans les backports mais j'ai eu le droit à un kernel panic. Obligé d'utiliser le mode rescue et réinstaller le 2.6 (car visiblement on peut pas avoir le 2.6 et le 3.2 installés en même temps), il y a sûrement un truc que j'ai mal fait…

Qu'en pensez-vous ?

  • # CGROUP_SCHED ?

    Posté par  (site web personnel) . Évalué à 5.

    Est-ce que les « control groups » (cgroups) sont activés ? Vérifie les options CONFIG_CGROUPS et CONFIG_CGROUP_SCHED dans la configuration du noyau.

    Si l’option CONFIG_CGROUP_SCHED est activée, donner à une application des privilèges temps-réels ne suffit plus, il faut aussi placer le processus correspondant dans un cgroup approprié.

    Plus d’infos sur le wiki de Jack.

    • [^] # Re: CGROUP_SCHED ?

      Posté par  . Évalué à 3. Dernière modification le 13 juillet 2012 à 20:41.

      $ grep CGROUP config-2.6.32-5-amd64 
      CONFIG_CGROUPS=y
      # CONFIG_CGROUP_DEBUG is not set
      CONFIG_CGROUP_NS=y
      CONFIG_CGROUP_FREEZER=y
      CONFIG_CGROUP_DEVICE=y
      CONFIG_CGROUP_CPUACCT=y
      CONFIG_CGROUP_SCHED=y
      CONFIG_NET_CLS_CGROUP=y
      
      

      Ce qui est étonnant c'est que quand j'utilise jack (mettons avec QSynth) là ça marche.

      Ça pourrait venir du code de LMMS ? (LMMS n'utilise pas Jack et cause à ALSA directement) Mais bon, ça marchait en unstable…

      J'ai pas de /etc/cgconfig.conf ni de /etc/cgrules.conf, mais jackd démarre bien en RT…

      • [^] # Re: CGROUP_SCHED ?

        Posté par  (site web personnel) . Évalué à 3.

        J'ai pas de /etc/cgconfig.conf ni de /etc/cgrules.conf

        Est-ce que libcgroup (ou assimilé, je ne sais pas comment s’appelle le paquet sous Debian) est installé ?

        S’il ne l’est pas, alors les cgroups n’ont vraisemblablement rien à voir avec ton problème (auquel cas je n’ai pas d’autre idée).

        • [^] # Re: CGROUP_SCHED ?

          Posté par  . Évalué à 3.

          $ aptitude search cgroup
          p   cgroup-bin                      - Tools to control and monitor control group
          p   libcgroup-dev                   - Development libraries to develop applicati
          p   libcgroup1                      - A library to control and monitor control g
          p   libpam-cgroup                   - A PAM module to move a user session into a
          
          

          Pas installé. Je regarde ça. Merci.

  • # [HS] downgrading

    Posté par  . Évalué à 2.

    Désolé du HS mais je permets d'apporter mon grain de sel, ça t'aurait peut-être évité ton problème ;-)

    et aussi parce que j'en avais un peu marre des bugs et des mises à jour de plusieurs centaines de méga-octets de Debian unstable. J'ai donc installé Squeeze

    Dans ce genre de cas, on peut downgrader une Debian. Avec les apt_preferences, il est très simple de passer d'une unstable à une stable.

    Il suffit de créer un /etc/apt/preferences comme suit :

    Package: *
    Pin: release n=squeeze
    Pin-Priority: 1001
    
    Package: *
    Pin: release n=wheezy
    Pin-Priority: 900
    
    Package: *
    Pin: release a=unstable
    Pin-Priority: 600
    
    

    Puis quelques coups d'apt-get :

    # apt-get update
    # apt-get install apt
    # apt-get upgrade
    # apt-get dist-upgrade
    
    

    Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

    • [^] # Re: [HS] downgrading

      Posté par  . Évalué à 2.

      Ah merci du tuyau. J'essaierai peut-être un jour. Réinstaller complètement ça permet aussi au passage de dégager les applis que l'on utilise pas, de refaire ses configurations de zéro. Je sais que l'on peut le faire sans tout réinstaller, mais à mon avis on perd du temps à faire le tour de ses applications, fichiers, à faire la liste de se que l'on va supprimer. Alors qu'il vaut mieux faire la liste de se que l'on garde, et que l'on installera.

      Pour en revenir au problème initial, j'ai mis /tmp sur un tmpfs ça aide un peu mais force est de constater que je n'obtiens pas les mêmes performances qu'avant. C'est pas les mêmes versions des bibliothèques utilisées pour compiler lmms entre squeeze et sid, ça sort pas (enfin presque pas) le même programme c'est un peu normal j'ai envie de dire.

      Ce qui est bien c'est que lmms a des performances tout à fait acceptable quand je ne requière pas le temps réel :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.