Linux : SABnzbd et Par2 multi-core

multi-core 5 nov. 2015

Loin de chez moi en ce moment je suis un peu déçu de ne pas pouvoir profiter de mon nouveau NUC pour me regarder quelques vidéos de vacances à la TV. Bien que j’ai pu y tester la lecture en x265, sans aucun problème de lag (ncore heureux vu le CPU et me prix…) je n’ai pas eu le temps d’aller plus avant.

Fort heureusement j’avais pris le temps de mettre en place un accès SSH/VPN aussi j’ai pu m’amuser en y testant le graber usenet SABnzbd, que je réservais jusqu’alors à l’un de mes NAS Synology (tutoriel), mais aussi la version multi-core de par2. Programme indispensable pour qui utilise usenet.

 

Installation de SABnzbd sur Linux

J’ai mis mon NUC sous Linux Mint Cinnamon aussi l’installation est très simple, comme pour Ubuntu :

  • Ajouter la source : sudo add-apt-repository ppa:jcfp/ppa

  • Mettre à jour : sudo apt-get update
  • Installer SABnzbd : sudo apt-get install sabnzbdplus
  • Lancer (soit cliquer sur l’icône soit) lancer en CLI : sabnzbdplus
  • Y accéder : http://IP:8080/sabnzbd

Pour la configuration je vous laisse relire le tutoriel vu que c’est la même chose, à 99% (version plus ancienne), que sur Synology.

Voici un aperçu de la version 0.8.0Beta1 [1ba588f] au look bien plus moderne !

SABnzbd08BETA1

SABnzbd08BETA1

 

La performance au service de SABnzbd

L’intérêt d’utiliser ce graber sur mon NUC plutôt que sur mes NAS est une simple question de performances. J’ai beau apprécier la qualité de Synology, ça ne rivalise pas en puissance avec un Intel i3-5010U, 8Go de RAM et un disque SSD.

En effet le couple puissance/vitesse (de lecture/écriture) est un facteur de confort, mais non conditionnel, pour usenet qui équivaut à télécharger des .RAR et les extraire. Voire éventuellement les réparer entre-temps. Quand on s’adonne à du téléchargement sur une ligne en 100Mbps, ou supérieure, c’est plus sympa si on peut utiliser des éléments hardware “rapides” pour le traitement des données.

Cependant mon NUC n’ayant qu’un petit espace de stockage, qui plus est en SSD, je fais en sorte de déplacer automatiquement chaque fichier finalisé (donc après chaque extraction complétée) tout comme de limiter les I/O sur le disque.

Ayant monté un NAS Synology sur ce NUC, j’ai configuré SABnzbd pour qu’il déplace automatiquement tout fichier finalisé :

  • +Supprimé : SAB doit télécharger, réparer, extraire et supprimer ensuite les .rar et .par
  • /mnt/NG : montage local du NAS dans lequel SAB doit déplacer chaque fichier complété (une fois les .rar décompressés et supprimés)

SABdéplacement

 

Une fois le fichier récupéré/réparé/extrait/.rar supprimés il est bien sur mon NAS et le dossier local de téléchargement est vide

Sélection_047

LocalVide

 

Si la technologie SSD (actuelle) offre de la rapidité d’accès (IOPS) elle le supporte en revanche moins bien sur la durée. Ne vous attendez pas à conserver votre SSD aussi longtemps que vos IDE et SATA… Pour ça que je préfère les mettre par 2 sur chaque PC “de travail”, en RAID.

Quoiqu’il en soit SABnzbd accepte la modération des IOPS pour lui-même via des paramètres IOnice (sur Linux). Pour leur définition je vous laisse lire la doc, dans mon cas je mets tout en “best-effort”. Il n’y a pas de PID à mettre (-p), le code de SAB est fait pour qu’il s’auto-affecte les paramètres.

 

IOnice

 

 

Multi-core par2 (par2tbb), sur Linux

Les .par qui sont parfois téléchargés avec les .rar sont des fichiers de réparation de ces derniers. En effet du fait du réseau, du FAU, de la création des fichiers ou autre, certaines archives sont parfois corrompues. Certains posteurs sur usenet y ajoutent du coup des .par permettant en général de réparer 10 à 15% d’archives.

SABnzbd étant un outil complet, une bonne configuration permettant de ne plus avoir à y revenir, il utilise par2 pour tenter des réparations. Autant l’utiliser avec l’ensemble des cores du PC/serveur, du moins plus qu’un seul. Le par2 par défaut étant en effet mono-core.

Il faut commencer par vérifier si vous possédez déjà par2 et, le cas échéant, le désinstaller :

  • which par2 : si rien ne sort vous ne l’avez pas sinon vous devriez voir /usr/bin/par2
  • sudo apt-get remove –purge par2 pour retirer le retirer

Il existe sans doute plusieurs moutures de la version multi-core de par2, j’utilise celle de jcfp sur GitHub qui est compatible Debian et dérivées dont Ubuntu, Mint etc.

Pour l’installer je vous invite à utiliser son script. Créez un fichier par2tbb.sh et copiez-y ce code puis exécutez-le avec bash par2tbb.sh

sudo apt-get install devscripts build-essential git debhelper dh-autoreconf libtbb-dev
DIR="$(mktemp -d)"
cd "$DIR"
git clone https://github.com/jcfp/debpkg-par2tbb.git
cd debpkg-par2tbb
uscan --force-download
dpkg-buildpackage -S -us -uc -d
dpkg-source -x ../par2cmdline-tbb_*.dsc
cd par2cmdline-tbb-*
dpkg-buildpackage -b -us -uc
echo; echo "to install, run: sudo dpkg -i $(readlink -f ../par2-tbb_*.deb)"

Le script va télécharger les sources et les compiler pour créer un .deb qui sera alors facilement installable via la commande donnée à la fin (to install, run: sudo dpkg -i…)

 

Ensuite repassez sur SABnzbd et allez indiquer le paramètre d’utilisation de par2 : -t0 pour forcer l’utilisation des cores pour réparer les archives.

Multi-core par2

Réparation multi-core

 

 

Mots clés