A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
A Non-Uniform memory access vagy röviden NUMA egy memória felépítés a több-processzoros feldolgozás területén, amelyben a memóriához való hozzáférés időigénye függ a memória processzorhoz viszonyított helyétől.[1][2] A NUMA architektúrában a processzor a saját helyi memóriáját gyorsabban tudja használni, mint a távolabbi memóriát. A NUMA előnyei az alkalmazások egy korlátozott körében érvényesülnek, kifejezetten szervereken, ahol a memóriában tartott adatok egy-egy feladathoz tartoznak.[1]
Alapelv
Bár a modern processzorok lényegesen gyorsabban működnek a fő memóriánál, a számítástechnika korai szakaszában a processzor volt lassabb. A processzorok és a memória teljesítménye a 60-as években találkozott az első szuperszámítógépeknél. Azóta a processzorok egyre inkább „adatra éhessé” váltak és egyre több időt töltenek az adatra való várakozással az operatív memóriából történő adatbetöltés során. Az 1980-as és 1990-es évek több szuperszámítógépe próbált gyorsabb memóriára összpontosítani, nem pedig gyorsabb processzorra, így téve lehetővé, hogy a számítógép olyan sebességen végezhesse a nagy adathalmazok feldolgozását, amelyet más rendszerek meg sem tudtak közelíteni.
A modern számítógépekben a fő memória használatának csökkentése jelentette a kiutat a jobb teljesítmény felé. Ez többnyire azt jelentette, hogy egyre nagyobb méretű gyorsítótárat építettek a processzorokba és egyre bonyolultabb algoritmusokat fejlesztettek a gyorsítótár-tévesztések elkerülésére, ugyanakkor az operációs rendszerek és alkalmazások méretének drámai növekedése ezeket a fejlesztéseket többnyire mindet fel is használta.
A NUMA úgy próbálja meg kezelni ezt a problémát, hogy minden processzornak külön memóriát ad, elkerülve a teljesítmény romlását abban az esetben, amikor több processzor próbálja elérni a memóriát.
Természetesen nem minden adatot lehet egy szálhoz és ezáltal egy processzorhoz rendelni, ami azt jelenti, hogy több processzornak lehet szüksége ugyanarra az adatra. Ezeknek az eseteknek a kezelésére a NUMA-rendszerek hardveres vagy szoftveres megoldást tartalmaznak.
ccNUMA
Majdnem minden processzor használ egy a fő memóriához képest kicsi, de nagyon gyors és nem megosztott memóriát, amit cache-nek vagy gyorsítótárnak neveznek. A NUMA alatt a gyorsítótárak pontosságának megtartása nagyon munkaigényes. Bár a gyorsítótárat nem pontosan használó, nem gyorsítótár-koherens (non-cache-coherent) NUMA tervezése és építése sokkal könnyebb, programozása sokkal nehezebb[3] a Neumann-architektúra alapján.
A ccNUMA (cache-coherent, azaz gyorsítótár-koherens – ami azt jelenti, hogy az adatok különböző gyorsítótárakban lévő példányait összehangoltan kezelő – NUMA) processzorok közti kommunikációt használ a másolatok szinkronban tartására, amikor egynél több processzor gyorsítótára tartalmazza egy adott memóriaterület másolatát. Ennek következtében a ccNUMA architektúrára épülő rendszerek gyengén teljesíthetnek olyan esetekben, amikor két különböző processzor használja ugyanazt a memóriaterületet gyorsan egymás után. Az operációs rendszerekbe épített NUMA-támogatás igyekszik csökkenteni ennek gyakoriságát azáltal, hogy megfelelő módon oszt ki memóriaterületeket és helyez el szálakat processzorokon.
2011-ben a ccNUMA rendszerek egyik része az AMD Opteron processzoron alapuló, külső logika nélkül megvalósított többprocesszoros rendszer, másik részük Intel Itanium processzoros rendszer volt, amelyekben a NUMA támogatás külön csipkészletet igényel. ccNUMA támogató csipkészletek például az SGI Shub (Super hub), az Intel E8870, az Integrity és a Superdome szerverekben használt HP sx2000, valamint a NEC Itanium-alapú rendszereiben található csipkészletek. A korábbi ccNUMA rendszerek, mint például a Silicon Graphics rendszerei, MIPS processzorokon és a DEC Alpha 21364 (EV7) processzoron alapultak,
A NUMA és a szerverfürtök
A NUMA architektúrát lehet egyfajta szorosan, egyetlen dobozba integrált fürtözésként is értelmezni.[2]
A NUMA szoftveres támogatása
A NUMA architektúra nagyban befolyásolja a memória hozzáférés sebességét és kihasználásához az operációs rendszer és a nagyobb erőforrásigényű alkalmazások memória-kezelésének módosítására van szükség.[1]
- A Microsoft Windows 7-ben és a Windows Server 2008-ban jelent meg támogatás a NUMA architektúrára 64 logikai processzormag felett.[4]
- A Java 7 NUMA architektúrával együttműködő garbage collector és memória foglaló algoritmust mutatott be[5]
- A Linux kernel fejlődése alatt folyamatosan épült ki a NUMA-támogatás, a 2.5-ös szériában már elérhető volt,[6] a későbbi verziók további fejlesztéseket tartalmaztak.
- Az OpenSolaris is támogatja a NUMA architektúrát az lgroups-szal.
Jegyzetek
- ↑ a b c What is NUMA?. . (Hozzáférés: 2019. augusztus 28.)
- ↑ a b NUMA - techtarget.com
- ↑ "and they are a real pain to program for" - linux scalability effort FAQ
- ↑ NUMA support - msdn
- ↑ Java HotSpot™ Virtual Machine Performance Enhancements
- ↑ Linux Scalability Effort
Fordítás
Ez a szócikk részben vagy egészben a Non-uniform memory access című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
A lap szövege Creative Commons Nevezd meg! – Így add tovább! 3.0 licenc alatt van; egyes esetekben más módon is felhasználható. Részletekért lásd a felhasználási feltételeket.
Analóg multiméterek túlterhelés elleni védelme
Egyenáram
Egyenáram mérése
Egyenirányítós lengőtekercses műszer
Elektromágnes (fizika)
Elektromos feszültség
Elektromos térerősség
Fáziseltolódás
Fázismutató
Fajlagos ellenállás
Feszültséggenerátor
Feszültségváltó
Forgó mágneses tér
Háromfázisú hálózat
Hőelektromosság
Hatásos ellenállás
A lap szövege Creative Commons Nevezd meg! – Így add tovább! 3.0 licenc alatt van; egyes esetekben más módon is felhasználható. Részletekért lásd a felhasználási feltételeket.