Page tree
Skip to end of metadata
Go to start of metadata

Uvod

Sustav ScaleMP je virtualno rješenje koje se koristi u HPC-u i koje omogućava povezivanje više fizičkih radnih čvorova u jedan veliki virtualni radni čvor. Rješenje je u suštini hipervizor koji agregira hardverske resurse  fizičkih čvorova bilo odvojeno samo CPU, samo IO uređaje ili samo memoriju ili zbirno sve navedeno. Hipervizor podržava agregiranje maksimalno 128 radnih čvorova, 16 384 procesorskih jezgara i 64 TB radne memorije. Zahvaljujući sustavu ScaleMP, na klasteru Isabella je omogućeno izvođenje aplikacija paraleliziranih paradigmom dijeljenja memorije (višedretvene aplikacije - pthreads, OpenMP) koje imaju potrebe za velikim količinama  radne memorije kao i bilo koji drugih aplikacija s količinama memorije koje nije moguće alocirati na ostatku klastera Isabella.


Slika1: Klasični hipervizori (VirtualBox) omogućavaju kreiranje više virtualnih računala od koje svako ima podskup resursa jednog fizičkog računala. Hipervizor ScaleMP funkcionira obrnuto - resurse više fizičkih računala spajaju jedno veliko virtualno računalo.


U Srcu, sustavom ScaleMP je agregirano 8 x HP Proliant SL230s Gen8 fizičkih čvorova.


Karakteristike svakog čvora:

  • 2 x Intel Xeon E5-2670 v2 (Ivybridge)
  • 2 x 10 CPU jezgara
  • 256 GB RAM
  • 500 GB diskovnog prostora

Čvorovi su spojeni u zvijezdastu mrežu preklopnikom Mellanox SX 6205 koji podržava RDMA, Infiniband standard te je konfiguriran u FDR 4x režimu pružajući 56 Gb/s vršne propusnosti između čvorova.

Slika 2: Sustav ScaleMP u Srcu

Karakteristike agregiranog virtualnog čvora:

  • 2 TB RAM (iskoristivo 1,8 TB)
    • 10% radne memorije svakog čvora hipervizor odvaja sebi kako bi realizirao keširanje između čvorova
  • 160 CPU jezgara
  • 3,6 TB /scratch
  • sustav NUMA u kojem je agregirana radna memorija distribuirana preko mreže

Arhitektura NUMA

NUMA (eng. Non-Uniform Memory Access) arhitektura je karakteristična za višeprocesorska računala/čvorove gdje je ukupna količina radne memorije distribuirana na broj procesora. Dakle, nema dijeljene sabirnice FSB, već procesor ima direktan pristup, ali samo dijelu memorije koji se zove njegova lokalna memorija. Do sadržaja memorije susjednog procesora - udaljene memorije, dolazi preko brzih međuveza između procesora - QPI  Interconnect. Specifičnost ScaleMP NUME jest što postoji još jedna međuveza između procesora, a to je samo mrežno rješenje - preklopnik Infiniband.

Procesor sada različitim djelovima memorije pristupa različitim performansama tj. pristup nije jednolik, uniforman.

Slika 3: Pristupanje memoriji u NUMA arhitekturi. Procesori najbrže pristupaju svojoj lokalnoj memoriji, sporije memoriji susjednih procesora, a najsporije pristupaju memoriji procesora koji se nalazi u susjednom čvoru.

Podnošenje poslova

Prilikom podnošenja poslova, komponenta Linux operacijskog sustava zvana task scheduler, iako poznaje topologiju sustavu, taskove paraleliziranih aplikacija ne raspoređuje optimalno. Ona je stoga zaobiđena na način da se raspoređivanje taskova na procesorske jezgre vrši ručno uz pomoć kombinacije alata likwid-pin te numabind. numabind analizira opterećenje sustava i daje prijedlog niza slobodnih CPU jezgara u zatraženoj količini, a likwid-pin usmjerava taskove na predložene jezgre postavljajući im CPU affinity.

Na taj način je dobiveno:

  1. optimalno raspoređivanje taskova korisničkih aplikacija
    • minimizira se korištenje nepotrebnih međuveza što znači optimalno izvođenje
  2. automatizam
    • korisnik ne mora pratiti zauzeće CPU jezgara i navoditi slobodne već to kombinacija alata radi za njega

Ono o čemu bi korisnik trebao voditi računa prilikom podnošenja poslova na sustav jest topologija sustava koja proizlazi iz NUMA arhitekture. Korisnik treba znati kolike količine lokalne memorije su asocirane s kolikim brojem CPU jezgara. Imajući otprilike u vidu koliko memorije korisnik želi alocirati, shodno tome treba i zatražiti pripadajuću količinu CPU jezgara/slotova. Odnos količina lokalne memorije i CPU jezgara je dan u tablici.


Tablica 1: Odnos CPU jezgara i lokalne radne memorije.

Broj CPU jezgara

Količina lokalne radne memorije (GB)

10115
20230
40460

Slika 4: Operacijski sustav dijeli memoriju na NUMA čvorove.Jedan socket procesora je asociran na svaki NUMA čvor. Čvorovi se dalje grupiraju u grupe - grupu čine procesori na istom fizičkom čvoru. Svaki procesor dalje ima po 10 jezgri na koje je asocirano 115 GB memorije. NUMA čvorovi su međusobno povezani QPI vezom, a grupe InfiniBand (IB) vezom.

Serijski posao

Postavlja se red vsmp.q, paralelna okolina vsmp. Varijabla okoline CORES u koju će numabind upisati optimalni niz slobodnih CPU jezgara. Alat likwid-pin će smjestiti posao na predložene jezgre. Nova varijabla okoline na varijablu okoline TMPDIR dodaje se prefiks /ramfs/ čime će se koristiti radna memorija za scratch podatke. Varijablu NSLOTS kreira SGE sustav.

Neka posao zahtijeva 115 GB radne memorije: traži se 10 jezgri (prema gornjoj tablici).

Pthreads (Gaussian) posao
#$ -N gaussian-test.vsmp
#$ -q vsmp.q
#$ -pe vsmp 10
#$ -cwd

# Setting stacksize to unlimited.
ulimit -s unlimited

# Use RAM as scratch.
export TMPDIR="/ramfs/$TMPDIR"

# Run the program.
export CORES=$(numabind --offset $NSLOTS)
likwid-pin -q -C $CORES dog09 test.com

OpenMP posao

OpenMP standard zahtijeva postavljanje varijable okoline OMP_NUM_THREADS.

OpenMP posao
#$ -N lu.C.5-vsmp
#$ -q vsmp.q
#$ -pe vsmp 5
#$ -cwd

# Setting stacksize to unlimited.
ulimit -s unlimited

# Use RAM as scratch
export TMPDIR="/ramfs/$TMPDIR"

# Run the program
export OMP_NUM_THREADS=$NSLOTS
export CORES=$(numabind --offset $NSLOTS)
likwid-pin -q -c $CORES ./lu.c

MPI posao

Varijabla okoline VSMP_PLACEMENT je postavljena jer to zahtijeva ScaleMP MPICH biblioteka. Aplikacija se poziva s mpiexec naredbom.

MPI posao
#$ N lu.D.16-vsmp
#$ -q vsmp.q
#$ -pe vsmp 16
#$ -cwd
#$ -v VSMP_PLACEMENT=PACKED

# Setting stacksize to unlimited.
ulimit -s unlimited

# Use RAM as scratch.
export TMPDIR="/ramfs/$TMPDIR"

# Run the program
mpiexec -np $NSLOTS ./lu.D.16




  • No labels