Kontaktné údaje
- info@ipesoft.com
- +421 907 703 854
- Obchodná 9076/3D
010 08 Žilina
Slovensko
© Copyright IPESOFT 2023
Odpoveď je jasná - viac je 64 bitov a to by mohol byť rýchly koniec dnešného blogu :-). Zaujímavejšia otázka ale je, čo je lepšie. Odpoveď na ňu sa môže líšiť v závislosti od konkrétnej situácie. Skúsme si ju teda rozobrať.
D2000 od verzie 9.0 (r. 2012) existuje na platforme Windows v 32 aj 64-bitovej verzii. Predtým existovala 64-bitová verzia iba na platforme OpenVMS (od r. 2002) a na platfome HP-UX (od r.2008 - viď blog o D2000 a programovacom jazyku ADA).
D2000 umožňuje bezproblémovú komunikácium medzi 32-bitovými a 64-bitovými procesmi a to dokonca aj na rôznych platformách, takže bežne spolupracujú 32 a 64-bitové procesy na Windows s 64-bitovými procesmi na OpenVMS a Linuxe. A úplnou chuťovkou je HP-UX, ktorý beží na procesore Itanium v big-endian móde - a napriek tomu máme zákazníkov, ktorí prevádzkujú D2000 kernel (a iné serverovské procesy) na HP-UX a k nemu sa pripájajú klientské procesy z little-endian platforiem ako 32 či 64-bitové Windows. Je to umožnené tým, že vnútorný komunikačný protokol D2000 zabezpečuje korektné streamovanie platformovo závislých štruktúr medzi rôznymi platformami.
Takže od roku 2012 sa pri nových projektoch aj pri upgradoch pýtame - chcete 32 alebo 64-bitovú verziu?
V niektorých prípadoch je odpoveď jasná. Pokiaľ je operačný systém 32-bitový (v minulosti Windows 2003 alebo staršie Windows 2008, dnes embedded 32-bitové Windows 7 a vyššie), niet čo riešiť.
V súčasnosti je väčšina projektov realizovaných na 64-bitových Windows (2008, 2012 a 2016). Takže máme na výber.
Existuje názor “neriešte to a dajte tam 64-bitov”. Skúsme porovnať výhody a nevýhody 32 a 64-bitových verzií a rozhodnúť sa podľa toho, čo v konkrétnej situácii potrebujeme.
Rýchlosť
32-bitová verzia je o niečo rýchlejšia ako 64-bitová (testy v minulosti ukazovali rozdiel na úrovni 5-10%).
Náročnosť na pamäť
32-bitová verzia je pochopiteľne menej náročná na pamäť - všetky ukazovatele sú 32-bitové. Takže tá istá aplikácia bude v 32-bitovej verzii potrebovať menej pamäte na reprezentáciu objektov v kerneli, archíve, kalkulačke atď.
Rozdiel v náročnosti závisí od toho, aké množstvo ukazovateľov sa v aplikácii používa. Napr. Izochrónna cache archívu používa binárne stromy (každý prvok má teda 2 ukazovatele). Na jednu archívnu hodnotu je potrebných 48 bajtov v 32-bitovej verzii, resp. 56 bajtov v 64-bitovej verzii (rozdiel 8 bajtov je spôsobený tým, že v 32-bitovej verzii dva ukazovatele potrebujú 8 bajtov a v 64-bitovej 16 bajtov).
Dostupná veľkú pamäť
64-bitové procesy môžu využiť viac ako 3 GB operačnej pamäte na dáta. Ktoré procesy ale reálne takýto objem potrebujú?
Obr 1: 8GB izochrónna cache pre takmer 150 miliónov položiek s hĺbkou takmer
2 dni a 16 hodín zodpovedá priemerne 650 archivovaným hodnotám za sekundu
Ochrana voči pretečeniu
V praxi sa na niektorých aplikáciách vyskytli problémy s nárastom pamäte spotrebovanej jedným procesom. Príčiny boli rôzne - od chýb v použitých knižniciach (napr. ODBC ovládače) cez chyby v D2000 až po chyby aplikačných programátorov (napr. “zabudnuté” handle alebo preplnené dátové kontajnery).
Pokiaľ takýto problém nastane pri 32-bitovej verzii, vedie k pádu procesu pri vyčerpaní 3 GB RAM (za predpokladu, že operačný systém má pamäte dosť). Pokiaľ je použitá 64-bitová verzia, tak je schopná spotrebovať všetku dostupnú pamäť a tak ohroziť stabilitu celého systému - pády iných procesov z nedostatku pamäte, výrazné swapovanie Windows a podobne.
Kompatibilita, ovládače, dll
V niektorých prípadoch potrebujeme 32-bitové procesy: DbManager kvôli prístupu do databáz pre ktoré sú iba 32-bitové ODBC ovládače (napr.Sybase 9 a staršie), KOM kvôli použitiu 32-bitových knižníc pre konkrétne protokoly (napr. protokol AMiT ATOUCH32 DB-Net). Prípadne máme nainštalovaný 32-bitový Excel a kvôli reportom doňho potrebujeme 32-bitový D2000 WorkBook alebo EDA WorkBook.
Takže .. kompromis?
Ako rozumný kompromis sa mi javí použitie 32-bitovej verzie s tým, že “čo je treba”, presunie sa na 64-bitov.
Príklad z praxe? Nedávno sme u konkrétneho zákazníka dokončili spájanie dvoch veľkých aplikácií do jednej. Táto má vyše 100 000 tagov a viac ako 70 000 archívnych objektov (archívy majú vyše 200 GB a trezorové databázy niekoľko TB dát). Komunikácia používa 30 KOM procesov, na ktorých je takmer 200 liniek a vyše 2400 staníc. Viac ako 10 procesov EVENT, niekoľko DbManagerov, dva EDA servery. K aplikácii pristupuje vyše 60 užívateľov cez hrubého klienta a ďalší cez webových klientov. A navyše je aplikácia redundantná. Takže žiadne “orezávatko”. A pritom ešte začiatkom tohto týždňa bežala celá aplikácia ako 32-bitová - s výnimkou archívov, ktoré používajú 4 GB izochrónnej cache.
Až tento týždeň, keď začali problémy s fragmentáciou pamäte, prešli sme s procesom Kernel na 64-bitov. Migrácia trvala cca 2 hodiny a z pohľadu klientov bola bezvýpadková - došlo iba k jednému prepnutiu redundancie. Čo bolo pritom potrebné?
Záver
Netvrdím, že môj názor na použitie 32 a 64-bitovej D2000 je jediný správny. Je ovplyvnený súčasnou realitou u zákazníkov a problémami, na ktoré narážame - napr. potreba optimalizovať spotrebu pamäte alebo zabrániť procesu “vyžrať” dostupnú pamäť. V týchto dňoch prichádza na svet nová verzia 11.1.55, ktorá je k dispozícii aj na Linuxe - ale iba ako 64-bitová, takže diskusia o bitoch pre túto perspektívnu platformu je zatiaľ bezpredmetná :)
Je možné, že aj pre platformu Windows raz v budúcnosti už 32-bitová verzia existovať nebude. Ale kým tu je, máme možnosť využívať jej výhody a kombinovať ich s výhodami 64-bitovej verzie podľa potrieb konkrétnych zákazníkov.
12.2.2018, Ing. Peter Humaj, www.ipesoft.com