Jak zkombinovat více základních desek nebo PC? — Habr Otázky a odpovědi
Existuje nápad: sestavit počítač z několika (něco jako cluster nebo samotný cluster). Pokud jsem si mohl přečíst odpovědi zde a na internetu obecně: buď píšou, že to nejde, nebo to jde, ale ne doma, nebo jen nesmyslné odpovědi typu „jsi hlupák“, „proč potřebujete, kupte si normální počítač“ atd.
Předbíháme otázku: proč: výpočetní rychlost a všestrannost.
Pokud to není možné, pak je možné udělat něco jako tuto variantu: centrální procesor (rozděluje zátěž a úkoly) + výpočetní výkon od všech ostatních (kterému centrální procesor posílá úkoly).
Vím, že je to napsáno bláznivě a klamně, ale možná mi to může říct někdo, kdo tomu rozumí? předem děkuji
PS (Nechtěl bych opustit Windows, ale pokud budu muset, nebudu příliš naštvaný).
- Otázka byla položena před více než třemi lety
- Zobrazení 5875
2 komentáře
Přihlásit se k odběru 1
Jednoduché 2 komentáře

Dalo by se na něco odpovědět, ale není jasné s čím, s čím a na čem se plánuje kalkulovat? A proč je nutné clusterovat na úrovni hardwaru a ne na úrovni softwaru?

Artem @Jump Kurátor značky Windows
Předbíháme otázku: proč: výpočetní rychlost a všestrannost.
A proč potřebujete nízkou rychlost?
Za účelem snížení rychlosti oplocení clusteru.
Stačí nastavit nižší frekvenci procesoru a dostanete nízkou rychlost i bez clusteru.
Řešení otázky 3

3D specialista. Dlouhé, drahé, zasrané.
Ano, můžete! Například pod Linuxem.
1) Položte svazek desek vedle sebe.
2) Připojte všechny desky přes jeden ethernetový přepínač (nejlépe 1 GB, nejlépe 10 GB, ale používáme Infiniband)
3) Nainstalujte orchestrátor úloh (zde vše závisí na tom, co chcete, takže existují možnosti), počínaje docker/lxc/kvm/kubernets/composer a konče htcondor (a druhý a docker, a kvm a lxc zakořenili u nás)
4) CEPH lze nainstalovat na všechny disky základní desky, takže úlohy migrují rychle a hladce.
5) Cluster je připraven.
Odpověď napsaná před více než třemi lety
Jako 4 2 komentáře
Toto je druhý týden, co sleduji svého ubohého kolegu (inženýr Microsoftu s mnoha zkušenostmi) a jako výzvu přijal úkol opravit virtualizační cluster na Centos. Byl to šťastný muž, stal se červenookým) Nadává na křivé, nemilosrdně protichůdné manuály a fantastickou podporu souborových systémů. Myslím, že autor otázky hned nedosáhne kroku 5)))

mordo445, no, nemůžete prostě jít a postavit cluster! Vše ale funguje po vybalení. Sami na centos.
Pokud nejste připraveni upravovat základní desky a BIOS, stejně jako upravovat operační systém tak, aby vyhovoval vašim potřebám, pak by nejdostupnější metodou bylo shlukování po síti.
Hotové recepty jsou již k dispozici https://www.google.com/search?q=how+to+make+a+clus.
Včetně s herním zaměřením (pamatuji si, že bylo video, kde byl q3 spuštěn na clusteru Ubuntu).
Ale znovu si dobře rozmyslete, proč to potřebujete. Protože zpoždění během síťového přenosu jsou nevyhnutelná a ne všechny úlohy jsou efektivně paralelizovány. Můžete si postavit vlastní renderovací farmu nebo třeba vyhledávač, ale kyberpunk nespustíte na tuctu počítačů z roku 2005. A na stovce to fungovat nebude.
Odpověď napsaná před více než třemi lety
Komentář
Like 2 Komentáře

Odpověď napsaná před více než třemi lety
Komentář
Like 1 Komentáře
Odpovědi na otázku 4
Saboteur @saboteur_kiev Tag kurátor Počítačové sítě
softwarový inženýr
Existuje nápad: sestavit počítač z několika (něco jako cluster nebo samotný cluster).
Jak zkombinovat několik základních desek nebo PC?
Jde tedy o zkombinování několika základních desek nebo sestavení clusteru?
Píšou vám, že to není možné nebo že jste blázen – právem – dotaz ukazuje, že nemáte konkrétní představu, jak funguje byť jen jedna deska, ale snažíte se sestavit složitou architekturu.
Předbíháme otázku: proč: výpočetní rychlost a všestrannost.
Jsou to velmi jednoduchá slova. Co přesně je potřeba vypočítat? Kde jsou výkonnostní testy, které by ukázaly, že jeden počítač si neporadí, a jak se chystáte paralelizovat výpočty?
Co je ve vašem chápání multifunkčnost? Aby počítač mohl vypočítat číslo PI a uvařit boršč? Nebo co je přesně myšleno?
Pokud to není možné, pak je možné udělat něco jako tuto variantu: centrální procesor (rozděluje zátěž a úkoly) + výpočetní výkon od všech ostatních (kterému centrální procesor posílá úkoly).
Jedním z bodů je například – kam co distribuuje centrální procesor? Na jiné základní desky? Výpočetní výkon tedy obvykle zajišťuje centrální procesor, nikoli jiné základní desky.
Vím, že je to napsáno bláznivě a klamně, ale možná mi to může říct někdo, kdo tomu rozumí? předem děkuji
Pokuste se nejprve sami pochopit cíl a uvést jasné příklady.
PS (Nechtěl bych opustit Windows, ale pokud budu muset, nebudu příliš naštvaný).
Vlastní úkol vytvoření clusteru je poměrně složitý. Není nemožné, ale vyžaduje technické znalosti, architektonické porozumění. Nemá tedy smysl odpovídat na otázku člověku, který neumí otázku formulovat ani v základních termínech.
Téměř každý, kdo odpovídá, dobře rozumí, na co se přesně ptáte, ale jde o to, že vaše otázka není otázkou, ale vágní formulací myšlenky a nelze na ni jednoznačně odpovědět.

Pojďme připojit několik desek Arduino do sítě pro přenos dat. Použijeme standardní rozhraní UART s minimálními hardwarovými úpravami (na každou desku přidáme pouze jednu diodu).
V předchozích lekcích jsme si vyměňovali data mezi deskami Arduino přes radiální rozhraní UART, RS-232, RS-422, IRPS. Všechna tato rozhraní umožňovala propojení pouze 2 desek k sobě.
Pro připojení více desek musí mít alespoň jedna z nich více radiálních rozhraní. Ale i v tomto případě lze sítě vytvořit pouze s poměrně složitými, složitými topologiemi: prstenec, hvězda, strom atd. Nevýhody takových sítí jsou zřejmé:
- Je vyžadováno více radiálních rozhraní. Kde je získat na jednoduchých deskách Arduino.
- Implementovat softwarové ovládání těchto rozhraní není snadné.
- Docela složité fyzické propojení zařízení. Několik kabelů je připojeno k různým konektorům.
- Fyzické přenosové médium se skládá z několika komunikačních linek. Například IRPS vyžaduje 2 kroucené páry.
- Systém nelze snadno rozšířit. Je vyžadováno nové zapojení kabelů, jsou vyžadovány nové kabely, mohou být vyžadována další rozhraní. Vážné problémy s rozšířením systému mohou nastat také se softwarem.
Místní síť s topologií „Common bus“ je bez všech těchto nevýhod. Jedná se o jedinou komunikační linku, ke které jsou paralelně připojena zařízení – desky Arduino.

- Každá deska používá pouze jedno rozhraní, bez ohledu na počet zařízení v síti.
- Je vyžadován pouze jeden kabel.
- Když jsou do sítě přidány nové desky, jsou jednoduše připojeny ke komunikační lince. Systém se rozšiřuje, ne přestavuje.
- Software pro správu sítě se nemění. Prostě se objeví nová zařízení s novými adresami.
- Existují standardní protokoly přenosu dat, které jsou orientovány na takovou strukturu sítě.
- Konfigurace sítě je jednoduchá a přímočará.
Jako fyzické médium pro přenos dat využijeme i nejjednodušší variantu – kroucenou dvojlinku. Není nic jednoduššího a levnějšího.
Chystáme se tedy implementovat síť několika desek Arduino:
- S topologií “Common Bus”.
- Jako fyzické médium pro přenos dat použijeme nejjednodušší variantu – kroucenou dvojlinku.
- Protokol přenosu dat – ModBus RTU.
- K implementaci softwaru použijeme knihovny Tiny_ModBusRTU_Master a Tiny_ModBusRTU_Slave.
- Jako síťová rozhraní použijeme standardní UART rozhraní s minimálními úpravami.
- Systém se bude skládat z centrálního ovladače a několika místních ovladačů.

Zařízení vyvinutá v předchozích 2 lekcích použijeme jako centrální ovladač a místní ovladače.
Konverze standardního rozhraní UART pro připojení k jednosignálové komunikační lince.
Budeme používat jednu signální linku pro přenos dat mezi ovladači. Rozhraní UART má dvě linky: vstup RxD a výstup TxD. V předchozích lekcích jsme pro komunikaci mezi rozhraními používali 2 signály: výstup jednoho regulátoru byl připojen ke vstupu druhého a výstup druhého byl připojen ke vstupu prvního.
Nyní si potřebujeme vyměňovat data přes jednu signální linku. Kromě toho bude k této lince připojeno několik ovladačů. Neaktivní kontroloři nesmí zasahovat do přenosu dat. Tito. Pro každý síťový řadič je nutné realizovat přepínání vstupů a výstupů UART rozhraní.
To lze provést dvěma způsoby:
- pomocí třístavových vysílačů;
- kvůli vysílačům implementujícím „montáž OR“ na komunikační lince.
Ve zjednodušené podobě má logický výstup následující schéma. Poskytl jsem schéma zapojení pomocí bipolárních tranzistorů, ačkoli moderní mikrokontroléry používají tranzistory s efektem pole.

Tranzistory pracují v režimu klíče.
- Pokud je horní tranzistor otevřený a spodní zavřený, pak se výstupní napětí bude blížit 5 V, tzn. logický 1.
- Když je spodní tranzistor otevřený a horní zavřený, výstup bude připojen ke společnému vodiči, který odpovídá logické 0.
Pokud takové vysílače elektricky spojíme dohromady, budou se vzájemně rušit. Na různých úrovních dojde ke zkratu na výstupech a budou protékat nepřijatelné proudy. Možná se díky vnitřní ochraně mikroobvodů nic nespálí, ale rozhodně to nebude fungovat.
Tento problém lze vyřešit použitím třístavových logických výstupů. Třístavový vysílač má další řídicí vstup. Při zablokování úrovně signálu na tomto vstupu se oba tranzistory sepnou a výstup je zcela vypnut.
Ke komunikační lince je možné připojit UART výstupy desek Arduino přes třístavové vysílače. Neaktivní ovladače vypnou své vysílače, čímž se uvolní komunikační linka pro výměnu dat. To je přesně to, co budeme dělat v příští lekci, když použijeme transceivery RS-485.
Tato metoda je široce používána, ale má své nevýhody. V našem případě je to:
- Potřeba použít další mikroobvody – prvky se třemi stavy. Mikrokontrolér je v zásadě schopen převést jakýkoli ze svých výstupů do třetího stavu, ale to bude vyžadovat jemnější programování a opuštění standardních sériových funkcí.
- Pokud nejsou vysílače správně připojeny, může dojít ke zkratování jejich výstupů.
- Pro řízení stavu vysílačů je nutný další výstup mikrokontroléru.
V tomto návodu použijeme nejjednodušší způsob přepínání vysílačů na komunikační lince.
Montáž NEBO.
Existuje další typ logického výstupu – výstup „otevřený kolektor“ (výstup OK). Zjednodušené schéma výstupu OK vypadá takto.

Vysílač s OK negeneruje napětí na výstupu. Při logické 0 sepne výstup k zemi, při logické 1 jej vyhodí do vzduchu. Napětí na takovém výstupu se objeví pouze tehdy, když je k němu připojen externí rezistor.
Pokud zkombinujete několik výstupů s OK, získáte obvod „montáž OR“.

Logická 0 na libovolném výstupu bude mít za následek logickou nulu na společné lince. To je důvod, proč se obvod nazývá „drátový OR“. Buď je uzavřen jeden výstup, druhý nebo několik.
Pro přepnutí vysílače do neaktivního stavu (vypnutí) stačí na jeho výstupu vytvořit logickou 1. Pamatujte, že v okamžiku čekání se na výstupu TxD rozhraní UART tvoří logická 1, tzn. Nemusíme nic vypínat. Vysílač UART ukončí vysílání a jeho výstup bude logická 1, čímž se uvolní komunikační linka pro další vysílače.
Jakékoliv chybné sepnutí výstupů vysílače nebude mít za následek zkrat jejich výstupů. Nikdy se nic nespálí.
Existují logické čipy s OK, ale uděláme to jednodušeji. Aktivní logický výstup lze snadno převést na OK výstup pomocí jediné diody.

Převod signálů ze standardního rozhraní UART pro připojení k jednosignálové komunikační lince tedy spočívá v přidání jedné diody.

A schéma zapojení desek Arduino jedním signálem do společné sítě vypadá takto.

Je lepší umístit rezistory na fyzické okraje komunikační linky.
Toto schéma platí pouze pro desky Arduino bez vestavěného převodníku rozhraní USB-UART. Například pro desku Arduino Pro Mini.
U desek s převodníkem rozhraní je signál RxD připojen přes rezistor 1 kOhm na výstup mikroobvodu převodníku. Tento výstup, když je připojení USB k počítači neaktivní, je na úrovni 5 V. Pull-up rezistory jsou již součástí každé desky Arduino.

Tito. U desek Arduino s převodníkem USB-UART (např. Arduino UNO, Arduino Nano) vypadá schéma síťového připojení ještě jednodušeji.

Přítomnost vnitřních rezistorů však omezuje počet desek v síti. Každý 1 kOhm rezistor, když je vedení vybuzeno na úroveň 0, vytváří proud 5 mA tekoucí do aktivního vysílače. S přihlédnutím k zatížitelnosti výstupů mikrokontroléru ATmega lze pomocí tohoto schématu připojit 4-5 desek. Pro Arduino Pro Mini neexistuje žádné omezení tohoto parametru.
Praktická implementace lokální sítě z desek Arduino.
Použil jsem místní ovladač vyvinutý v lekci 48. Doplnil jsem pouze diodu, o které bylo tolik psáno výše.

Připájel jsem další podobný ovladač.

Centrální ovladač byl navržen v lekci 49. Opět byla přidána dioda.

Všechny tři ovladače jsem připojil do sítě pomocí dvou vodičů. Napájení lokálních ovladačů bylo odebíráno z 5V signálu centrálního ovladače.

Nahrál jsem program z lekce 57 do místních ovladačů Náčrt lze stáhnout z tohoto odkazu
Zaregistrujte se a zaplaťte . Pouze 60 rublů. za měsíc pro přístup ke všem zdrojům webu!
Pouze v místních ovladačích musíte v řádku zadat různé adresy:
Tiny_ModBusRTU_Slave slave(1, 8, regTable, 6, 13); // vytvoření objektu ModBus, adresa 1, časový limit 4 ms, pole regTable, velikost 6
První parametr v závorce je adresa. Nastavil jsem adresy 1 a 2.
Pro centrální ovladač jsem napsal program, který každých 0,5 sekundy dotazuje místní ovladače s adresami 1 a 2 a zobrazuje informace na displeji. Vše je stejné jako v předchozí lekci, pouze pro 2 místní ovladače.

Program centrálního ovladače si můžete stáhnout z odkazu:
Zaregistrujte se a zaplaťte . Pouze 60 rublů. za měsíc pro přístup ke všem zdrojům webu!
Program používá knihovny Tiny_ModBusRTU_Slave a Tiny_ModBusRTU_Master. Podrobně jsou popsány v předchozích 2 lekcích. Myslím, že program je jasný. Celá výměna opět probíhá jako paralelní proces. Program nikdy nezamrzne. Do smyčky loop() můžete přidat další úlohy.
Kontrola fungování systému.
Zapnul jsem to. Všechno funguje. Zkontroloval jsem teplotní čidla, otočil proměnné odpory a zmáčkl tlačítka. Vše je v pořádku, nejsou žádné chyby při výměně.

Stiskl tlačítko reset jednoho místního ovladače, tzn. vypnul to.

První ovladač začal házet chyby, druhý funguje.
Totéž jsem udělal s jiným místním ovladačem.

Natočil jsem krátký film o tom, jak systém funguje.
V programech jsem při deklaraci ModBus objektů konkrétně nastavil řídící signál vysílače na pin 13 – univerzální LED – v každém ovladači. Proto, když jsou data přenášena jakýmkoli ovladačem, tato LED bliká.
Několik slov o odolnosti takových sítí proti rušení.
Vše napsané v lekci 50 platí pro tuto verzi sítě. Jen je více ovladačů, více možných svodových proudů, zemních proudů, obvodů atd.
Empiricky se domnívám, že při napájení regulátorů z galvanicky oddělených zdrojů může délka komunikační linky dosahovat 5-10m se stíněnou kroucenou dvojlinkou i více. Při napájení regulátorů z běžného zdroje bych omezil vzdálenost mezi nejvzdálenějšími zařízeními na 2-3 m. Samozřejmě hodně záleží na provozních podmínkách, zejména na míře rušení.
Určitý vliv na odolnost proti rušení má také typ diod. Je lepší použít Schottkyho diody. V důsledku nízkého úbytku napětí na něm v otevřeném stavu bude úroveň logické 0 v komunikační lince nižší a odolnost proti šumu bude vyšší.
V další lekci vytvoříme lokální síť z desek Arduino pomocí rozhraní RS-485.