La Lanterne Rouge

Warning: Geek Inside

MPD+Icecast ou MPD/httpd ?

- Posted in Sans catégorie by

J'en parlais précédemment, j'ai mis en place une radio sur mon serveur interne Usul. Pour la diffusion, j'avais suivi un des nombreux tutorials disponibles sur la Toile, qui expliquait comment envoyer le flux de MPD vers un serveur Icecast.

Après plusieurs mois avec cette configuration, un aspect qui commençait à me gêner un peu était la consommation de CPU imposée par le transcodage des fichiers (dans mon cas, de MP3 vers OGG). Sur une petite machine telle que la mienne, cela correspondait quand même à 20-25% de charge 24/7. Autant de ressources qui ne peuvent pas être utilisées par le reste des services disponibles sur celle-ci (et quand Subsonic transcode, il ne se gêne pas de prendre tout ce qu'il reste !).

Il y a quelques jours, en cherchant un moyen d'optimiser tout ça, j'ai appris qu'il existait déjà un système de diffusion par MPD sans passer par Icecast. Pourquoi ne l'ai-je pas vu avant, ça je ne l'explique pas.

Le résultat est éloquent :

cpu1.week

La "marche" qui est clairement visible à la date du 13 correspond au remplacement d'Icecast par le module de diffusion httpd intégré à MPD (voir fichier de config /etc/mpd.conf).

La quantité de ressources CPU est au moins divisée par 2 sans aucune perte de qualité ou de fonctionnalités. La charge du noyau a elle été divisée par 3 (cette diminution devant être en partie due à la suppression de la transmission du flux entre MPD et Icecast par l'interface réseau, AMHA).

Je rappelle quand même qu'Usul est équipé d'un petit Atom 230 ce qui explique bien sûr le pourcentage que représente la consommation du transcodage sur la capacité totale du CPU.

Si la conclusion de tout cela ne vous saute pas aux yeux je vais faire l'effort de la mettre en forme pour vous : MPD+Icecast ou MPD/httpd ? À moins d'avoir un besoin que seul Icecast peut remplir, passez par httpd et virez Icecast !