Cf mon calcul au-dessus, si ça bouffe plus de quelques pourcent de cpu alors quelque chose est vraiment très mal fait.
C'est l'idée même d'un mixer centralisé en userland avec un compte de daemon à part du compte utilisateur actif qui est absurde. Il s'agit d'un bricolage (il y a des gens qui bricolent bien) qui cherche à compenser l'incapacité chronique d'Alsa à fournir une API cohérente et uen doc fiable.
Mais bon pour en savoir plus sur quelle zone du code consomme autant de cpu il suffirait d'une bete stacktrace..
stacktrace ne verrait pas grand chose, en soit Pulse Audio est bien codé, mais il déclenche des context-switch par paquets. Faire un resample propre en se calant sur l'horloge système tout en lisant les infos venant d'un flux utilisateur, le tout avec des buffers pas trop délirants pour que le son continue pas pendant 2 secondes quand l'utilisateur appuie sur stop ca nécessite des vas et viens constant userland/userland et userland/kernelspace.
[^] # Re: Enfin pour les portables ?
Posté par Kaane . En réponse à la dépêche Sortie de PulseAudio 2.0. Évalué à 2.
Cf mon calcul au-dessus, si ça bouffe plus de quelques pourcent de cpu alors quelque chose est vraiment très mal fait.
C'est l'idée même d'un mixer centralisé en userland avec un compte de daemon à part du compte utilisateur actif qui est absurde. Il s'agit d'un bricolage (il y a des gens qui bricolent bien) qui cherche à compenser l'incapacité chronique d'Alsa à fournir une API cohérente et uen doc fiable.
Mais bon pour en savoir plus sur quelle zone du code consomme autant de cpu il suffirait d'une bete stacktrace..
stacktrace ne verrait pas grand chose, en soit Pulse Audio est bien codé, mais il déclenche des context-switch par paquets. Faire un resample propre en se calant sur l'horloge système tout en lisant les infos venant d'un flux utilisateur, le tout avec des buffers pas trop délirants pour que le son continue pas pendant 2 secondes quand l'utilisateur appuie sur stop ca nécessite des vas et viens constant userland/userland et userland/kernelspace.
Et là, ça pique.