{"id":164,"date":"2025-06-08T06:56:29","date_gmt":"2025-06-08T06:56:29","guid":{"rendered":"https:\/\/www.passiivi-instituutti.fi\/?p=164"},"modified":"2025-06-08T06:56:29","modified_gmt":"2025-06-08T06:56:29","slug":"sge-gridware-open-cluster-scheduler","status":"publish","type":"post","link":"https:\/\/www.passiivi-instituutti.fi\/index.php\/2025\/06\/08\/sge-gridware-open-cluster-scheduler\/","title":{"rendered":"SGE &#8211; > Gridware Open Cluster Scheduler"},"content":{"rendered":"\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Open Cluster Scheduler is a workload management system used in data centres to connect tens to tens of thousands of computers into a compute cluster. It acts as the operating system of this cluster, connecting the underlying hardware according to user-configurable policies, scheduling its use, and providing computing power. &#8211; <em>Open Cluster Scheduler 9.0.6 Installation and Upgrade Guide<\/em><\/p>\n<\/blockquote>\n\n\n\n<p>Teknillistieteellisiss\u00e4 laskentaymp\u00e4rist\u00f6iss\u00e4 (<em>aivan mainio ilmaisu<\/em>) on i\u00e4t ja ajat k\u00e4ytetty er\u00e4ajo- ja kuormantasausohjelmistoja hallinnoimaan palvelinresurssien k\u00e4ytt\u00f6\u00e4, toki erilaisella painotuksella kuin esimerkiksi mainframe-j\u00e4rjestelmiss\u00e4. Jokaisessa supertietokoneymp\u00e4rist\u00f6ss\u00e4 on t\u00e4llainen er\u00e4ajoon ja kuormantasaukseen liittyv\u00e4 toteutus &#8211; markkinoilla on sek\u00e4 ilmaisia ett\u00e4 kaupallisia ohjelmistoja.<\/p>\n\n\n\n<p>Siit\u00e4 huolimatta ett\u00e4 instituutin ATK-keskuksessa liikenn\u00f6id\u00e4\u00e4n parhaimmillaankin vain 1Gb verkkoratkaisulla k\u00e4ytt\u00e4en SER-luokitteisia tietokoneita eik\u00e4 esimerkiksi <em>low latency node interconnect<\/em> juuri esiinny muutoin kuin teoreettisessa kontekstissa, instituutti kuitenkin mielt\u00e4\u00e4 itsens\u00e4 ylev\u00e4sti suorastaan superkoneymp\u00e4rist\u00f6ksi, ainakin joidenkin yksitt\u00e4isten teknisten elementtien ja kahviloiden retostelevien p\u00f6yt\u00e4puheiden osalta.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"838\" src=\"https:\/\/www.passiivi-instituutti.fi\/wp-content\/uploads\/2025\/06\/Sun_Fire_6800_side.jpg\" alt=\"\" class=\"wp-image-165\" style=\"width:840px;height:auto\" srcset=\"https:\/\/www.passiivi-instituutti.fi\/wp-content\/uploads\/2025\/06\/Sun_Fire_6800_side.jpg 500w, https:\/\/www.passiivi-instituutti.fi\/wp-content\/uploads\/2025\/06\/Sun_Fire_6800_side-179x300.jpg 179w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><figcaption class=\"wp-element-caption\">NapoliRoma, CC BY-SA 3.0 <a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/3.0\">https:\/\/creativecommons.org\/licenses\/by-sa\/3.0<\/a>, via Wikimedia Commons<\/figcaption><\/figure>\n\n\n\n<p>Instituutin henkil\u00f6historiaan liittyy useammankin <em>passivistin<\/em> osalta Nokian Tutkimuskeskus (NRC), jonka puitteissa oli sent\u00e4\u00e4n aika merkitt\u00e4v\u00e4n kokoinen Solaris\/HP-UX\/Linux-ymp\u00e4rist\u00f6 niin konesaleissa kuin ty\u00f6p\u00f6ydill\u00e4kin. Mik\u00e4li muistiarkistot pit\u00e4v\u00e4t paikkansa, joskus 2000-luvun alussa kokeiltavana oli ainakin PBS (<em>Portable Batch System<\/em>) ja ehk\u00e4 jokin muukin, mutta SGE (<em>Sun Grid Engine<\/em>) valikoitui k\u00e4ytt\u00f6\u00f6n. SGE:n historiasta on sin\u00e4ll\u00e4\u00e4n mainio wikipedia-artikkeli ja long story short &#8211; instituutissa on k\u00e4\u00e4nt\u00e4\u00e4 paukautettu x86_64 Solaris-alustalle SGE:n nykyisist\u00e4 reinkarnaatioista ehk\u00e4 keskeisin, <a href=\"https:\/\/www.hpc-gridware.com\/gridware-cluster-scheduler\/\">Gridware Open Cluster Scheduler<\/a>.<\/p>\n\n\n\n<p>My\u00f6s LSF (<em>Load Sharing Facility<\/em>) ja muutama muu tuote tulivat vuosikymmenten mittaan tutuiksi. Instituutin varhaisen vaiheen 40 noden Raspberry Pi 3 &#8211; klusteria hallinnoitiin nykyisin hyvin laajasti k\u00e4ytetyn SLURM (<em>Simple Linux Unix Resource Manager<\/em>)-ohjelmiston avulla. Se olisi ollut t\u00e4ss\u00e4kin ihan kelpo valinta, mutta tietyt Solaris- ja Sun-preferenssit ohjasivat OCS:n k\u00e4ytt\u00f6\u00f6n.<\/p>\n\n\n\n<p>Edelt\u00e4v\u00e4ss\u00e4 kuvassa on Sun Fire 6800-palvelin, jollainen l\u00f6ytyi my\u00f6s NRC:n konesalista ja sit\u00e4 &#8220;ruokittiin&#8221; SGE:n l\u00e4pi melko kovalla ty\u00f6kuormituksella. NRC:ll\u00e4 oli tosiaan aika paljon Sun- ja HP(-UX)-palvelimia Linuxin ohella. Kaikki k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4alustat olivat osana SGE:t\u00e4 ja taisimme ainakin jossakin vaiheessa laittaa CAD-ty\u00f6asematkin osaksi SGE-resursseja siten, ett\u00e4 niit\u00e4 k\u00e4ytettiin er\u00e4ajoon y\u00f6aikaan. Jos muistikuvaan voi luottaa, noin 700 palvelinta ja ty\u00f6asemaa oli kaikkiaan k\u00e4yt\u00f6ss\u00e4.<\/p>\n\n\n\n<p>OCS tullaan toki asentamaan jokseenkin kaikkiin instituutin j\u00e4rjestelmiin, poisluettuna ehk\u00e4 jokin LDAP- tai muu infrastuktuuripalvelua tuottava entiteetti. Gridwaren sivustolta k\u00e4y ilmi, ett\u00e4 k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4tuki on kattava, ja t\u00e4llaisessa <em>grid-ymp\u00e4rist\u00f6ss\u00e4<\/em> laskentaresurssien k\u00e4ytt\u00f6\u00e4 suunnitteleva toki huolehtii ohjelmakoodinsa ajettavuudesta miss\u00e4 tahansa k\u00e4ytt\u00f6j\u00e4rjestelm\u00e4alustassa, ellei ole tyystin nihilisti joka pysytt\u00e4ytyy vaikkapa Solariksessa.<\/p>\n\n\n\n<p>Ty\u00f6kuormahan t\u00e4llaisissa ratkaisuissa on tyypillisesti jokin simulaatio, massiivinen matemaattinen tai muun tieteenhaaran probleema tai mik\u00e4 <em>job<\/em> nyt ylip\u00e4\u00e4t\u00e4\u00e4n vaatii optimoitua palvelintehoa. Ideahan on siin\u00e4, ett\u00e4 suuria palvelinrypp\u00e4it\u00e4 voidaan k\u00e4ytt\u00e4\u00e4 optimoidusti ja loppuk\u00e4ytt\u00e4j\u00e4n kannalta melko transparentisti siten, ett\u00e4 kuormitus on tasaista, ennakoitavaa ja s\u00e4\u00e4delt\u00e4v\u00e4\u00e4. Toki t\u00e4m\u00e4 on melkoinen yksinkertaistus, mutta riitt\u00e4\u00e4 t\u00e4m\u00e4n kirjoituksen tarpeisiin.<\/p>\n\n\n\n<p>Tietokoneymp\u00e4rist\u00f6jen (ja tietokoneiden) <em>teho<\/em> on monitulkintainen juttu. Tehon m\u00e4\u00e4ritelm\u00e4 pitk\u00e4lti redusoituu tehdyn ty\u00f6n m\u00e4\u00e4r\u00e4\u00e4n suhteessa k\u00e4ytettyyn aikaan. Jokin single-thread juttuhan saattaa py\u00f6r\u00e4ht\u00e4\u00e4 nopeasti uudella prosessorilla, mutta kun k\u00e4ytt\u00e4ji\u00e4 ja palvelimia on satoja tai jopa tuhansia ja ehk\u00e4 k\u00e4ytet\u00e4\u00e4n jopa massiivisesti rinnakkaistuvaa sovelluskoodia, mielenkiinto painottuukin kokonaisuuden hahmottamiseen.<\/p>\n\n\n\n<p>Passiivi-Instituutin HPC-palveluiden peruss\u00e4\u00e4nn\u00f6t:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Teho on tehty ty\u00f6 suhteessa k\u00e4ytettyyn aikaan<\/li>\n\n\n\n<li>Laskentaj\u00e4rjestelmi\u00e4 on ajettava <em>optimoidusti<\/em> &#8220;hanat kaakossa&#8221;<\/li>\n\n\n\n<li>Joka ei huolehdi siit\u00e4, ett\u00e4 koodinsa toimii kaikilla OS-alustoilla, on patalaiska<\/li>\n\n\n\n<li>MPI- ja muu rinnakkaistuva koodi alisteinen kupari-gigaiselle interconnectille latensseineen<\/li>\n\n\n\n<li>Edellinen kohta saattaa muuttua lottovoiton tai vastaavan johdosta<\/li>\n\n\n\n<li>Mik\u00e4\u00e4n lahjominen, uhkailu tai veruke ei riit\u00e4 perusteeksi ty\u00f6jonon jobien priorisoinnille<\/li>\n<\/ul>\n\n\n\n<p>Sivuhuomiona noteerattakoon, ett\u00e4 instituutin henkil\u00f6st\u00f6 hy\u00f6dynsi SGE:t\u00e4 aikoinaan NRC:ll\u00e4 my\u00f6s erilaisiin <em>sysadmin<\/em>-operaatioihin j\u00e4rjestelm\u00e4ymp\u00e4rist\u00f6ss\u00e4, kauan ennen kuin vaikkapa Ansible (2012) oli edes keksitty, eik\u00e4 ole kaukaa haettua, ett\u00e4 instituutissa tullaan OCS:n suhteen toimimaan vastaavasti &#8211; ehk\u00e4 liev\u00e4n periaatteellisistakin syist\u00e4.<\/p>\n\n\n\n<p>Kirjoituksen varsinainen painopiste on tavallaan kuitenkin OCS-ohjelmiston k\u00e4\u00e4nt\u00e4misess\u00e4 l\u00e4hdekoodista Solaris 11.4 x86_64-alustalla. Se ei ollut ihan yksinkertainen operaatio, jossa kenties tietty taitojen ruostuminen vuosikymmenten mittaan n\u00e4ytteli osaansa.<\/p>\n\n\n\n<p>Toistaiseksi ainoaan virtualisoituun Solaris-j\u00e4rjestelm\u00e4\u00e4n (muut kymmenen ovat fyysisi\u00e4 palvelimia) tuli jo aiemmin asennettua Solaris IPS package repository, siihen toteutetaan my\u00f6s AI (<em>Automated Installer<\/em>) ja l\u00e4hdekoodista k\u00e4\u00e4nt\u00e4misen tai sovelluskehityksen kannalta GCC-v\u00e4lineist\u00f6n ohella Oracle Developer Studio 12.6, joka sis\u00e4lt\u00e4\u00e4 tietenkin my\u00f6s erilaiset k\u00e4\u00e4nt\u00e4j\u00e4t ja muut tyk\u00f6tarpeet.<\/p>\n\n\n\n<p>K\u00e4vi kuitenkin ilmi, ett\u00e4 viimeksi vuonna 2017 p\u00e4ivittynyt Oracle Developer Studio ei tue dialektiltaan C++16 tuoreempia versioita. OCS l\u00e4hdekoodi olisi edellytt\u00e4nyt C++20-tasoa, joten oli vaihdettava GCC-vetoiseen k\u00e4\u00e4nt\u00f6ymp\u00e4rist\u00f6\u00f6n. <\/p>\n\n\n\n<p>Asia ei kuitenkaan aivan tuosta vain edennyt: melko paljon piti tutkia l\u00e4hdekoodia, kuormittaa Googlen kuulalaakereita ja eritoten opetella CMake:n tavoille. Vaikka l\u00e4hdekoodia on tullut k\u00e4\u00e4nnetty\u00e4 ja paketoituakin aikanaan todella valtavia m\u00e4\u00e4ri\u00e4, pitk\u00e4 tauko oli p\u00f6lyynnytt\u00e4nyt nekin taidot eik\u00e4 CMake ollut miss\u00e4\u00e4n vaiheessa tullut kovin tutuksi.<\/p>\n\n\n\n<p>Maailma oli kovin yksinkertainen siihen aikaan kun <em>.\/configure &lt;vipuineen> &amp;&amp; make &amp;&amp; make install<\/em> riitti l\u00e4hdekoodin k\u00e4\u00e4nt\u00e4miseen. Toki aika ajoin vaikkapa HP-UX edellytti hieman esoteerisia ty\u00f6kaluvalintoja, k\u00e4\u00e4nt\u00e4j\u00e4 saattoi olla HP:n oma, yksi jos toinenkin muu palikka GNU-maailmasta, ja t\u00e4m\u00e4 ty\u00f6kaludiversiteetti saattoi vaihdella k\u00e4\u00e4nnett\u00e4v\u00e4n l\u00e4hdekoodin nojalla. <\/p>\n\n\n\n<p>Solaris oli suoraviivaisempi jos kohta kuten ryhm\u00e4st\u00e4 kokenein muistutti, optimoinnissa oli laatueroja Sunin oman k\u00e4\u00e4nt\u00e4j\u00e4n ja GNU-k\u00e4\u00e4nt\u00e4j\u00e4n v\u00e4lill\u00e4. Se optimointi on muuten aika t\u00e4rke\u00e4 ominaisuus sellaisissa ymp\u00e4rist\u00f6iss\u00e4, joissa er\u00e4ajo- ja kuormantasausj\u00e4rjestelm\u00e4 saattaa k\u00e4sitell\u00e4 esimerkiksi vuorokausissa tai jopa viikoissa k\u00e4sitelt\u00e4vi\u00e4 laajoja simulaatioita tai muuta sy\u00f6tett\u00e4. On suuri ero tutkimus- ja tuotekehitysty\u00f6ss\u00e4 sill\u00e4, meneek\u00f6 simulaatio l\u00e4pi vuorokaudessa &#8211; vai kahdessa.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># We need extra libraries on Solaris\nif(${CMAKE_SYSTEM_NAME} MATCHES \"SunOS\")\n  target_link_libraries(sge_execd PRIVATE kstat)\n  target_link_libraries(loadcheck PRIVATE kstat)\nendif()<\/code><\/pre>\n\n\n\n<p>Solariksen kstat &#8211; rajapinta muodostui l\u00e4hdekoodiarkistolle ongelmaksi. K\u00e4\u00e4nnett\u00e4ess\u00e4 er\u00e4it\u00e4 komponentteja juttu pys\u00e4htyi kuin sein\u00e4\u00e4n, tavanomaiseen <em>undefined symbol<\/em> &#8211; virheilmoitukseen, joka sin\u00e4ll\u00e4\u00e4n on ruisleip\u00e4tasoisesti ymm\u00e4rrett\u00e4viss\u00e4 mutta CMakeen harjaantumattomalla meni hetki, ennen kuin yll\u00e4 n\u00e4kyv\u00e4n koodinp\u00e4tk\u00e4n sai laitetuksi oikeaan sijaintiin (p\u00e4\u00e4tason CMakeLists.txt). <\/p>\n\n\n\n<p>No, tuossa se tarvittava nyt on (toki esimerkiksi <em>-DCPM_PACKAGE_rapidjson_SOURCE_DIR=\/wrk\/rapidjson<\/em> tuli lausua osana varsinaista cmake-komentoa), mik\u00e4li joku ei malta olla rient\u00e4m\u00e4tt\u00e4 OCS-k\u00e4\u00e4nt\u00f6puuhiin Solaris 11.4 x86_64-alustalla.<\/p>\n\n\n\n<p>Seuraavaksi instituutissa viimeistell\u00e4\u00e4n verkkaisesti t\u00e4m\u00e4n &#8220;gridin&#8221; asennus ja t\u00e4m\u00e4n j\u00e4lkeen laajennetaan grid-nodekokoelmaan my\u00f6s muita kuin Solaris-j\u00e4rjestelmi\u00e4. Ja ehk\u00e4 syksyn mittaan instituutissa tehd\u00e4\u00e4n paljonkin asioita, joissa t\u00e4m\u00e4 OCS-kerros on avuksi ja v\u00e4ltt\u00e4m\u00e4t\u00f6nkin.<\/p>\n\n\n\n<p>Valmisteilla on muun muassa kiinteist\u00f6n l\u00e4mmityksen shuntin ohjaaminen OCS-sy\u00f6tett\u00e4v\u00e4n ja MVS mainframelle Fortran\/Cobol-prosessointiin menev\u00e4n koodin avulla. T\u00e4m\u00e4 erottaa instituutin keskim\u00e4\u00e4r\u00e4isest\u00e4 Home Assistant-toteutuksesta, jos ei muulla, niin kenties outoudellaan.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Open Cluster Scheduler is a workload management system used in data centres to connect tens to tens of thousands of [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,6],"tags":[],"class_list":["post-164","post","type-post","status-publish","format-standard","hentry","category-passiivi-instituutti","category-unix"],"_links":{"self":[{"href":"https:\/\/www.passiivi-instituutti.fi\/index.php\/wp-json\/wp\/v2\/posts\/164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.passiivi-instituutti.fi\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.passiivi-instituutti.fi\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.passiivi-instituutti.fi\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.passiivi-instituutti.fi\/index.php\/wp-json\/wp\/v2\/comments?post=164"}],"version-history":[{"count":1,"href":"https:\/\/www.passiivi-instituutti.fi\/index.php\/wp-json\/wp\/v2\/posts\/164\/revisions"}],"predecessor-version":[{"id":166,"href":"https:\/\/www.passiivi-instituutti.fi\/index.php\/wp-json\/wp\/v2\/posts\/164\/revisions\/166"}],"wp:attachment":[{"href":"https:\/\/www.passiivi-instituutti.fi\/index.php\/wp-json\/wp\/v2\/media?parent=164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.passiivi-instituutti.fi\/index.php\/wp-json\/wp\/v2\/categories?post=164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.passiivi-instituutti.fi\/index.php\/wp-json\/wp\/v2\/tags?post=164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}