How-To Open-MX

Il y a plein d'infos dans la FAQ et le README.

Compilation et installation

Configuration par défaut

./configure
make
make install

Pour les réseaux à MTU 1500

Open-MX veut une MTU 9000 par défaut, mais on peut le forcer à supporter MTU 1500 si on se fiche des performances.

--with-mtu=1500

Optimisations

Options à passer au configure pour optimiser les performances:

  • Si on veut faire discuter Open-MX avec MX
--enable-mx-wire
  • Si on travaille sur des machines du même type
--disable-endian

Chargement

  • Avec l'installation par défaut en utilisant l'interface eth2
sudo /opt/open-mx/sbin/omx_init start ifnames=eth2
<attendre un peu pour que le mapping se fasse>
/opt/open-mx/bin/omx_info
<les noeuds doivent se voir les uns les autres>
  • Chargement manuel depuis un arbre compilé
sudo insmod driver/linux/open-mx.ko ifnames=eth2
sudo chmod 666 /dev/open-mx
sudo tools/omx_init_peers /home/bgoglin/open-mx/open-mx.peers

Utiliser sur Myri-10G en mode Ethernet

  • Virer MX et (re-)charger myri10ge
sudo /etc/init.d/mx stop
sudo modprobe -r open-mx
sudo modprobe -r myri10ge
sudo modprobe myri10ge
  • Configurer l'interface eth2
sudo ifconfig eth2 up mtu 9000
sudo ethtool -C eth2 rx-usecs 1
  • Relancer Open-MX
  • … ou changer les interfaces attachées et relancer le mapping
echo eth2 > /sys/module/open-mx/parameters/ifnames
/opt/open-mx/sbin/omx_init restart-discovery
  • Pour vérifier les interfaces attachées
cat /sys/module/open-mx/parameters/ifnames
/opt/open-mx/bin/omx_info

Optimiser la machine

I/OAT DMA Engine

  • Charger le driver I/OAT
sudo modprobe ioatdma
  • Activer le DMA Engine dans Open-MX
sudo bash -c "echo 1 > /sys/module/open_mx/parameters/dmaengine "
<vérifier ce qui apparaît dans dmesg>

I/OAT Direct Cache Access

  • AVANT de charger le module ioatdma
sudo modprobe msr
sudo /home/bgoglin/divers/src/dca/enable-c1e-dca -vd
sudo modprobe ioatdma

Désactiver le sommeil des cœurs

  • Désactiver l'état C1E des Xeons
sudo modprobe msr
sudo /home/bgoglin/divers/src/dca/enable-c1e-dca -vc

Binder les IRQ et processus au mieux

  • Si lstopo nous dit que les coeur #0 et #2 sont près l'un de l'autre, partagent un cache, …
  • Binder les IRQ sur le coeur #0

grep eth2 /proc/interrupts # pour récupérer le numéro d'interruption

sudo bash -c "echo 1 > /proc/irq/<numero d'interruption>/smp_affinity "
  • Binder le process sur le coeur juste à coté (physique #2, logique #1)
hwloc-bind proc:1 <monprogramme>
hwloc-bind -p proc:2 <monprogramme>
numactl --physcpubind 2 <monprogramme>

Utiliser le multiqueue de Myri-10G

  • Charger myri10ge en multiqueue
sudo modprobe myri10ge myri10ge_max_slices=-1
sudo ifconfig eth2 up # les interruptions ne sont réclamés qu'à l'activation de l'interface
  • Vérifier que /proc/interrupts contient plusieurs lignes eth2:slice-%d
  • Binder les queues
sudo /soft/common/myri10ge_msixbind.sh eth2 -1
  • Générer le fichier de binding Open-MX
sudo sbin/omx_init start ifnames=eth2
sudo bin/omx_prepare_binding
  • Vérifier que le fichier généré contient bien des informations sur le binding des endpoints sur l'interface eth2
  • Utiliser tout ça
export OMX_PROCESS_BINDING=file
# faire des trucs
  • Vérifier que ca binde bien
export OMX_VERBOSE=1
# relancer des trucs

Tester la wire compatibilité avec MX

  • Sur une des machines
    • Mettre une carte Myri-10G en mode Ethernet natif (voire plus haut)
    • Mettre Open-MX avec –enable-mx-wire après avoir copié le répertoire fma/ de MX dans Open-MX avant le configure
  • Sur l'autre machine
    • Redémarrer MX en mode Ethernet (voire mx)
  • Utiliser mx_pingpong pour vérifier que ca marche bien

Tester un arbre custom

Avec tous les noyaux:

/opt/omxbox/bin/omxbox-interp ../benchmarks/omxbox/config/bgoglin-custom-grat.omxbox -d source=/home/bgoglin/open-mx/trunk

Pour garder le repertoire de build, ajouter -s /home/bgoglin/proutbuild.

Pour garder les logs, -l ⇒ ca va dans le repertoire courant.

Juste le noyau local

/opt/omxbox/bin/omxbox /home/bgoglin/open-mx/trunk

Faire une release

Voir le README.devel.

Tests à faire:

  • compilation depuis et en dehors des sources
  • installation après avoir changé le build-dir en lecture seule
  • make check
  • IMB avec plusieurs noeuds/process
  • Quelques NAS
  • Des trucs en MTU=1500 entre plusieurs daltons via le switch principal
  • Des trucs en MTU=9000 en back-to-back
  • Des trucs en MX wire compat en back-to-back avec MX de l'autre côté
open-mx.txt · Last modified: 2011/03/01 12:32 by stordeur
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki