High-performance computing DOOR Bram dons
Programmatuur is nog niet klaar voor parallel processing
Multicore processing op teraschaal 48 S T O R A G E MA G A Z I N E · 1 · m a a r t 2 0 1 0
Even leek het alsof de wet van Moore niet lang meer zou gelden, omdat microchips tegen fysieke temperatuurgrenzen aanlopen. Maar wat is er sneller dan één processor? Twee processors! Parallelle verwerking kan het vermogen de chips weer een stukje oprekken. Met HPC Server 2008 is nu ook het Windowsnetwerk om te toveren in een gedistribueerde supercomputer. Nog enkele jaren geleden voorspelde men dat de wet van Moore niet langer zou opgaan. Als gevolg van de thermische beperkingen en het stroomverbruik van chips kan de processorfrequentie namelijk geen gelijke tred meer houden met het aantal transistors op een enkele chip. Weliswaar heeft de CPU-frequentie de laatste twintig jaar een gestadige groei laten zien, maar vanwege de genoemde beperkingen is er voor de komende twintig jaar toch een andere aanpak nodig. De verwachting van Intel is dat het aantal transistors nog steeds zal toenemen met gelijke factoren als in het verleden. Maar gezien de dan enorme aantallen transistors per chip zijn fabrikanten van CPU’s genoodzaakt om chips met meerdere processorcores te ontwerpen. De verwachting van Intel is dat Moores wet minstens nog tien jaar of langer mee zal gaan en iedere nieuwe IC-procesgeneratie meer transistors zal opleveren. Echter, vanwege de stroom- en energiekosten zal de CPU-frequentie niet meer kunnen toenemen. De toename van de systeemprestaties zal nu moeten komen van de parallelle ver-
werking van processortaken door deze gelijktijdig op meerdere cores uit te voeren. De nieuwe CPU-procestechnieken hebben tot dusver al vier- of achtcoreprocessors
opgeleverd. Thans zijn er bij Intel al prototypes ontwikkeld die 128 cores bevatten. Intel heeft in zijn onderzoek naar tera-scale computing gemeld dat honderden, ja zelfs duizenden cores al in de komende 5 tot 10 jaar tot de mogelijkheden gaan behoren door de driedimensionale verpakking van cores binnen een enkele chip. De nu ontwikkelde researchchip levert bij een CPUfrequentie van 5.7 GHz nu al een bandbreedte van 2.92 Tbps en een vermogen van 1.81 teraFLOPS! De traditionele aanpak om een taak sneller uit te laten voeren, is de prestaties van de CPU te verhogen. Voor de toekomst ligt de focus bij het gelijktijdig parallel uitvoeren van taken. Taken zullen daarbij in nauwe
samenwerking over een groep van cores, al dan niet binnen dezelfde chip, worden gedistribueerd. Want, zoals gezegd, het is niet langer mogelijk om de CPU-frequentie op te voeren in dezelfde verhouding die we in het verleden hebben gezien. De ontwikkeling van een server met tientallen of meer CPU cores is één ding, het gelijktijdig daarvan gebruik kunnen maken is een ander ding. Zelfs bij onze huidige met vier of acht cores uitgeruste systemen zijn we nog lang niet zo ver dat alle cores door de applicaties en het operating system kunnen worden benut. Slechts een handvol kritische applicaties zijn geschikt gemaakt voor parallelle verwerking en niet eens alle delen van de huidige operating systems. De meeste van onze applicaties zijn nog geschreven voor een enkele CPU of core en zullen niet automatisch van de extra cores of clusternodes gebruikmaken. Als we de toetsencombinatie ctrl-alt-del indrukken op bijvoorbeeld een Windowssysteem met vier of acht cores, dan zien we in de taskmanager dat voor applicaties meestal maar één core wordt gebruikt van de vier of acht aanwezige cores!
HPC thread programming In de vroege dagen van parallel computing bracht Gene Amdahl de HPC-community al in opschudding door te verkondigen dat de toepassing van steeds meer cores de prestatieproblemen niet zou gaan oplossen. De als gevolg van parallellisatie verwachte snelheidswinst van elke applicatie wordt namelijk beperkt door de tijd die nodig is voor
elk sequentieel uit te voeren programmadeel, aldus Gene. Vanaf een bepaald punt heeft het dus geen zin meer om meerdere cores in te schakelen, omdat het programma altijd moet wachten op de uitvoering van een sequentieel programmadeel. Dit principe kwam naderhand als de wet van Amdahl bekend te staan en heeft ook gevolgen voor de schaalbaarheid van een programma. We willen vanuit het oogpunt van schaalbaarheid en prestaties de verschillende servers en dus cores grootschalig met elkaar kunnen koppelen en gelijktijdig laten samenwerken. We spreken dan over een omgeving voor high-performance computing (HPC). Daarvoor is echter wel een geheel ander threadprogrammeermodel nodig. Vanuit het gezichtspunt van de gebruiker, in dit geval de programmeur, vormen de beschikbare programmeertools misschien het belangrijkste aspect van een HPC-omgeving. Een veel toegepaste HPCtool voor parallelle programmering is waarschijnlijk de message passing interface (MPI). Met behulp van de MPI communiceren de clusternodes via een hogesnelheidsnetwerk zoals 10GbE, InfiniBand of Myrinet met elkaar voor de uitwisseling van programmadelen en de coördinatie bij de uitvoering daarvan. De coördinatie tussen de clusternodes en de toewijzing van parallelle programmadelen vindt plaats door middel van een jobscheduler die op een speciale head cluster node draait. (Zie link 1 voor een interessante video over het nut van parallelle systemen.)
Architecture share over time (1993-2008) 500
300
■ MPP ■ Cluster ■ SMP ■ Constellation ■ Single Processor ■ Others
200 100
Hoewel de meeste geavanceerde en dure supercomputers nog steeds worden toegepast op basis van massively parallel processing (MPP), zien we dat de kosten van een kleine HPC-clusteromgeving de laatste jaren drastisch aan het dalen zijn. Op de TOP500-lijst zien we dat in 2008 al meer dan vierhonderd systemen zijn geïdentificeerd als cluster en zien we dat SMP en MPP geleidelijk worden teruggedrongen. Linux is tot dusver het meest toegepaste operating system in een HPC-clusteromgeving, in mindere mate vinden we daar het ‘open’ systeem Solaris. Hoewel de kosten voor installatie en configuratie aanzienlijk zijn gedaald, zijn de meeste HPC-oplossingen nog steeds lastig te beheren en duur in het gebruik. De HPC-omgeving is ook moeilijk te integreren met een algemene computerinfrastructuur, wat vooral geldt voor kleine ondernemingen. Veel HPCoplossingen ondersteunen ook geen standaardapplicaties. Enkele jaren geleden is Microsoft het Parallel Computing Initiative gestart met als doel de ondersteuning van een shared programmeermodel voor zowel HPC als de bestaande multicoresystemen. Met de komst van HPC Server 2008 (HPCS) biedt Microsoft een clustersysteem dat schaalbaar is tot duizenden cores. De cluster ondersteunt de Microsoft MPI stack (MS MPI) of een third-party stack voor de communicatie van deze enorme aantallen cores. Op de lange termijn wil Microsoft de Windows HPC Server 2008 geschikt maken als mainstreamtoepassing van een extreem schaalbare, lowcost, eenvoudig te beheren en hoogpresterende clusteromgeving. Microsofts visie op high-performance computing is gebruikers in staat te stellen de schaalbaarheid en prestatieniveaus te behalen van de meeste efficiënte clusters die op de TOP500-benchmarklijst voorkomen. In 2006 zien we dat de voorganger van HPC Server 2008, Windows Compute Cluster Server 2003, al plaats 130 innam op de TOP500-lijst (zie link 2). Anno 2008 bereikte een HPCS van het NCSA al plaats 23 op deze lijst. Dit clustersysteem bestond uit 9.472 cores en haalde bij een efficiëntie van 77,7 procent 68,5 teraFLOPS. In november 2009 bestond al meer dan 83 procent van de hele TOP500 uit clustersystemen, waarvan 78 procent Linux en 1 procent HPCS.
HPC Server 2008
0
June 1993 June 1994 June 1995 June 1996 June 1997 June 1998 June 1999 June 2000 June 2001 June 2002 June 2003 June 2004 June 2005 June 2006 June 2007 June 2008 June 2009
Systems
400
HPC volgens Microsoft
Top 500 Releases
Windows HPC Server 2008 is de volgende versie van Microsofts HPC-platform en is gebaseerd op de 64 bittechnologie van Windows Server 2008. HPCS is efficiënt tot duizenden cores te schalen met onder-
S T O R A G E MA G A Z I N E · 1 · M a a r t 2 0 1 0
Vier cores gebruiken is al een hele toer
49
HPC Server 2008 is schaalbaar tot duizenden cores
50 S T O R A G E MA G A Z I N E · 1 · m a a r t 2 0 1 0
steuning van enterprise-class tools. HPCS omvat een nieuwe geïntegreerde managementconsole, een netwerkconfiguratiewizard en een templategebaseerde provisioning die is geïntegreerd op basis van de technologie voor Windows Server 2008 Deployment Services. Tevens omvat het een nieuwe scheduler, cluster health monitoring, ingebouwde diagnostiek en een snellere MS MPI met ondersteuning van NetworkDirect. HPCS combineert de onderliggende stabiliteit en beveiliging van Windows Server 2008 met de geboden voorzieningen van het HPC Pack 2008. Kernelementen van HPCS zijn: toepassing, beheer, MS MPI, jobscheduling en security. HPCS brengt het vermogen, de prestaties en de schaalbaarheid van een HPC-systeem naar de mainstreamomgeving. HPC Server 2008 biedt een platform voor op SOA gebaseerde applicaties waarmee ontwikkelaars en architecten snel nieuwe HPC-cluster-enabled interactieve applicaties kunnen ontwikkelen en eenvoudig bestaande gedistribueerde applicaties kunnen modificeren. HPC Pack 2008 omvat een hoogst schaalbare jobscheduler ter ondersteuning van SOA-applicaties. Deze SOAapplicaties maken gebruik van de Windows Communication Foundation (WCF) en van parallelle jobs op basis van MS MPI. Beheerders kunnen van dezelfde Microsoftbeheertools gebruikmaken om centraal de complete infrastructuur van Windows Server te beheren. Gebruikers hoeven niet langer gebruik te maken van de altijd lastige command line interfaces, zoals dat in de traditionele HPC-omgevingen nog steeds het geval is. Applicatieontwikkelaars kunnen
met de nieuwste ontwikkeltools, waaronder Visual Studio 2010, eenvoudiger parallelprogramma’s ontwikkelen en hun projecten beheren met Microsoft Office SharePoint Server.
MPI, MPICH2 en MS MPI MPI en MPI2 zijn alom geaccepteerde specificaties voor messaging in hoogpresterende clusters. Naast MPI is er de open-source MPI-implementatie van het Argonne National Laboratory, MPICH2. Windows HPC Server bevat MS MPI, dat is gebaseerd op MPICH2. Op API-niveau is MS MPI identiek aan meer dan 160 in MPICH2 geïmplementeerde API’s. MS MPI maakt gebruik van een efficiënt en hoogpresterend shared-memory MPI network op basis van gigabit-Ethernet of InfiniBand en ondersteunt ook een NetworkDirect of Winsock Directprovider. De voor Windows beschikbare parallelle programmeermodellen zijn in het algemeen te verdelen in twee categorieën: cluster en multicore. Voor de clustercategorie heeft Microsoft MS MPI ontwikkeld, dat is gebaseerd op MPICH2 met enkele Microsofttoevoegingen op het gebied van beveiliging en prestaties. Op multicoregebied biedt Visual Studio ondersteuning voor de OpenMP-standaard in zowel de native als de managed .NET modes.
Architectuur De HPCS-cluster is vrij eenvoudig van opzet en bestaat uit een zogenoemde head node en een of meer compute nodes. De head node fungeert zowel als management-, scheduling en controlling node voor de rest van de cluster dat uit compute nodes bestaat. Binnen de cluster is minimaal een enterprisenetwerk nodig en voor automatische toepassing en beheer ook nog een additioneel private netwerk. Een optioneel derde dedicated netwerk wordt gebruikt voor het MPI-netwerkverkeer met hoge snelheid. De beheerder heeft, al naar gelang de beschikbaarheid van een of meer van de genoemde netwerken, de mogelijkheid om een vijftal netwerktopologieën te configureren: nodes geïsoleerd op een private netwerk (topologie 1), nodes op een enterprise- en private netwerk (topologie 2), compute nodes geïsoleerd op privé- en applicatienetwerken
nog een brokernode voor Windows Communication Foundation (WCF) configureren voor toepassing van SOA-applicaties.
(topologie 3), nodes op enterprise-, private en applicatienetwerken (topologie 4), nodes op een enterprisenetwerk (topologie 5) De head node kan men verder high available maken met de feature Failover Clustering. De HPCS ondersteunt de ingebouwde Failover Clustering van Windows 2008 Enterprise en Failover Clustering van SQL Server 2005. Deze
Multicore en manycore In het algemeen refereert ‘multicorechip’ naar een enkele CPU-chip met acht of minder homogene cores. In een manycoresysteem delen al de door het operating system ondersteunde cores resources en services, waaronder het geheugen en de toegang tot disks. Zie ook Microsofts whitepaper uit 2007, The manycore shift.
configuratie vereist dat op de head node en de failover node beide Windows 2008 Enterprise en SQL Server 2005 draaien. In de HPC Cluster Manager kunnen beheerders naar wens
De initiële configuratie van elke HPCS start met de installatie en configuratie van de head node. Daarvoor is een server nodig met minimaal 512 MB aan RAM, 8 GB aan diskspace, een x64-processor en een netwerkkaart. Voor onze test maken we gebruik van een drietal netwerken (topologie 3). Als OS fungeert Windows Server 2008 Standard met x64 in de standaard- of enterpriseversie of een Windows Server 2008 HPC Edition. Verder dienen .NET Framework 3.0 en SQL Server 2005 te worden geïnstalleerd. Indien deze laatste niet aanwezig is, wordt hij automatisch geïnstalleerd. Na installatie van het OS wordt het Microsoft HPC Pack 2008 erop gezet, dat automatisch de volgende roles en features toevoegt: Windows Deployment Services, DHCP, de service Routing and Remote Access en Windows PowerShell. Verder moet de HPCS deel uit maken van een Windows domain. Standaard creëert HPCS een drietal groepen: head, compute en WCF-brokernodes. Die laatste is een node waarmee services op de compute nodes kunnen worden opgestart. Na de set-up van de head node wordt de administratieconsole opgestart met de to-do list. De to-do list begeleidt de beheerder in een aantal stappen bij de configuratie van de cluster. Deze bestaat uit de configuratie van het netwerk, het instellen van de domain credentials, het definiëren van de name convention voor compute nodes, de creatie van een default nodetemplate en een OS-image voor de compute nodes. Na de generatie van de nodetemplate moet de beheerder de compute node opstarten en deze aan het private netwerk verbinden. Er is een optie waarbij de BIOS op de compute nodes zodanig wordt ingesteld dat deze automatisch via het netwerk wordt opgestart.
S T O R A G E MA G A Z I N E · 1 · m a a r t 2 0 1 0
Installatie en configuratie
51
Storage node 1 Storage node 2
Storage node 3
Aggregate MBps per core
Metadata server
Parallel file systems Network
Shared file systems NAS or clustered NAS
Number of cores in cluster
52
Head node
S T O R A G E MA G A Z I N E · 1 · m a a r t 2 0 1 0
Compute nodes zijn ook handmatig te installeren zonder hulp van de nodetemplate en via ‘Add compute nodes’. Na de installatie van de head node voegen we een drietal compute nodes via het menu ‘Node management’ toe aan de cluster. Na de installatie zien we hoe de drienodecluster presteert aan de hand van het bekende LINPACK-benchmark.
Lizard Met behulp van de benchmarkapplicatie Lizard kan de beheerder de rekenkundige prestaties en efficiëntie van de Windows HPC Server 2008-cluster vaststellen. Het berekent en rapporteert een piekprestatie van de HPC-cluster op basis van het aantal miljoenen floating point operations per seconde (GFLOPS). Lizard draait meerdere malen het LINPACK-benchmark, waarbij het telkens de parameters aanpast om het hoogste resultaat te behalen. Het LINPACK-benchmark wordt gebruikt voor de TOP500, waarin de snelste supercomputers ter wereld op basis van GFLOPS worden gerangschikt. Het is aardig om te zien tot welke prestaties een kleine cluster met drie compute nodes in staat is. Daartoe draaien we het Lizardbenchmark, voor deze test wordt de head node hierbij niet ingeschakeld. We zien dat een betrekkelijk kleine cluster, bestaande uit 25 cores, ongeveer 55 GFLOPS haalt. Dat is ongeveer 2,2 GFLOPS per core. Ter vergelijking: de snelste cluster uit de TOP500 haalt 7 GFLOPS per core.
Compute node 1 Compute node 2
zo’n 100 MBps per core (maar met een beperkte schaalbaarheid) of iets in het bereik van 50 MBps per core (met een schaalbaarheid tot enkele honderden nodes). Heeft men het gewenste prestatieniveau van de cluster bepaald, dan is de volgende stap te bepalen voor welke tijdsduur data online moet zijn. Bij een clusterthroughput van 20 GBps (meer dan 1 terabyte per minuut) en een databeschikbaarheid van twee uur kom je op een benodigde storagecapaciteit van tenminste 100 terabyte. De beschikbaarheid van data is wel weer afhankelijk van de applicatie, want in sommige gevallen hoeven niet alle compute nodes toegang te hebben tot alle data. Als een applicatie overal binnen de cluster moet kunnen draaien, dan is toegang tot het gehele storagesysteem wel vereist. Voor sommige clusters is een single names-
Compute node N
pace noodzakelijk, waarbij alle nodes alle bestanden tegelijkertijd kunnen zien. Parallelle filesystems bieden daarvoor een structuur met een single namespace. Microsoft biedt een dergelijke single namespace in de vorm van de Distributed File System Namespace (DFSN). Deze voorziet in een eenvoudig beheersysteem voor meerdere Windows Storage Servers en ondersteunt loadsharing en automatische failovervoorzieningen. Windows Storage Server biedt een optie voor toepassing van NAS binnen de cluster. Men zou ook kunnen kiezen voor een meer geavanceerd third-party parallel filesystem, bijvoorbeeld het in de Storage Magazine Cloudspecial van 2010 besproken Gluster of Parascale uit de Storage Guide van 2009. Het voordeel van parallelle filesystemen is dat ze een cluster tot duizenden nodes schaalbaar kunnen maken.
Links 1. Een interessante video over het nut van parallelle systemen www.davidgiard.com/2009/11/02/stephentoubonparallelcomputing.aspx 2. De TOP500 van de snelste supercomputers ter wereld
www.top500.org 3. Meer informatie over parallel computing volgens Microsoft
http://msdn.microsoft.com/en-us/concurrency/default.aspx 4. De 180 dagen geldige trialversie van HPC Server 2008
www.microsoft.com/hpc/en/us/default.aspx
Storage
5. De bètaversie van Windows HPC Server 2008 R2
Er zijn talrijke factoren om te overwegen bij de keuze van een storageoplossing voor een op HPC Server 2008 gebaseerde cluster, waaronder prestaties, capaciteit, toegang en beschikbaarheid. Traditionele supercomputerapplicaties consumeren gemiddeld tot
http://connect.microsoft.com/hpc/content/content.aspx?contentid=6923 6. De niet door Microsoft ondersteunde toepassing voor virtuele HPC met Hyper-V
ttp://blogs.technet.com/windowshpc/archive/2008/04/26/virtual-hpc-cluster-deployh ment-on-hyper-v.aspx
Beheer- en programmeertools Een HPC-omgeving zonder het gebruik van parallelle applicaties is weinig zinvol. Er zijn daarom een aantal geoptimaliseerde compilers beschikbaar voor het Windowsplatform, zoals Visual C++, Visual C# en Visual Basic, waarmee parallelle programma’s zijn te ontwikkelen. Naarmate we van de multicore richting het manycoretijdperk gaan, is het van cruciaal belang dat er meer programma’s worden ontwikkeld op basis van zo groot mogelijke parallelle functionaliteit en schaalbaarheid. De ontwikkeling van parallelle functionaliteit in applicaties was tot op heden zeer lastig. Binnen de Windowsomgeving bood .NET Framework 3.5 wel al de mogelijkheid tot deze functies, maar ze waren voor programmeurs toch lastig toe te passen. In het nieuwe .NET Framework 4 heeft Microsoft daarom veel aandacht besteed aan het enigszins verlichten van de voor ontwikkelaars lastige problemen bij het parallel programmeren. Nieuw is de Visual Studio 2010-omgeving, waarmee applicaties zijn te ontwikkelen op basis van meerdere cores. (Zie link 3 voor meer informatie over parallel computing.)
Licenties en trialversies Het HPCS-licentiemodel bestaat uit een licentie voor het operating system Windows Server 2008 HPC Edition en een HPC Pack 2008-licentie voor elke clusternode. De retail price, een soort ‘adviesprijs’ voor HPCS, is 475 dollar per node. Er is een 180 dagen geldige trialversie van HPC Server 2008 te downloaden (zie link 4). Bovendien is er een bètaversie van Windows HPC Server 2008 R2 beschikbaar (zie link 5). In omgevingen waar men niet de beschikking heeft over veel fysieke servers biedt de niet door Microsoft ondersteunde toepassing voor virtuele HPC met Hyper-V een oplossing (zie link 6). p Bram Dons is onafhankelijk IT-analist:
[email protected]
S T O R A G E MA G A Z I N E · 1 · m a a r t 2 0 1 0
Wanneer er behoefte is aan hogere singlenodeprestaties, biedt een shared filesystem soms de oplossing. Daarbij hebben de compute nodes toegang tot de storage via een SAN. SAN-filesystems bieden meerdere compute nodes tegelijkertijd toegang tot het filesystem of dezelfde file. Shared filesystems maken geen gebruik van een control path en stellen de compute nodes in staat om rechtstreeks via het datapath met het storage systeem te communiceren. Veel filesystems van dit type maken gebruik van een aparte metadataserver voor de toegang tot de storage en om de consistentie van het filesystem te bewaken.
53