Udostępnianie zasobów sprzętowych przez sieć: w szczególności pamięć RAM

8

Mam dwa systemy. Jeden to laptop i ma 2 GB pamięci RAM, a drugi to komputer stacjonarny z 8 GB pamięci RAM. Czy można udostępnić te zasoby, aby oba systemy miały 10 GB pamięci RAM?

Oprogramowanie, które chcę uruchomić na obu systemach, to Android Studio ... które obecnie laptop nie radzi sobie całkiem dobrze.

Informacje dodatkowe: oba systemy działają w systemie Windows 8 i mają procesory Intel Core i3 .

dziękuję ppl, ale mam inne pytanie .. co powiesz na udostępnienie go przez kabel Ethernet? jak za pomocą przełącznika lub v-lan, termio wcale nie korzysta z Internetu, ale dostaje prędkość przesyłu zejścia ???

Alvin
źródło
2
Nie, pamięci RAM nie można przenosić.
Ctrl-alt-dlt
15
Pewnie, że możesz to zrobić. Ale współużytkowana pamięć RAM byłaby tak szybka, jak prędkość sieci. Innymi słowy, jest to możliwe (cóż, teoretycznie zresztą), ale niepraktyczne.
Ajedi32,
4
Nie ma sensu prosić o zmianę systemu operacyjnego, ale wiem, że Linux ma kompresję pamięci wirtualnej, co oznacza, że ​​możesz użyć więcej pamięci RAM niż fizycznie, kompresując niektóre jej segmenty za pomocą LZO.
Naftuli Kay
5
Jeśli korzystasz z Linuksa, możesz ustawić coś przy pomocy ramdysku, urządzenia blokującego sieć i pliku wymiany. Nie wierzę, że Windows ma takie możliwości.
Mark
4
Zadajesz złe pytanie. Pytanie, które powinieneś zadać, to jak wykorzystać mocniejszą maszynę do wykonywania kompilacji? Jedną z możliwych odpowiedzi jest wtyczka Gradle SSH .
Michael Hampton

Odpowiedzi:

21

Tylko niektóre programy pozwalają na podział procesów w sieci (niektóre programy do renderowania 3D, efektywnie dzielące pamięć RAM) (patrz odpowiedź Juliana Knighta)

Problem z Internetem byłby zbyt wolny (patrz odpowiedź Spiffa)

Myślę, że pamięć RAM pulpitu nie będzie kompatybilna sprzętowo, więc samo umieszczenie pasków pamięci RAM w laptopie nie będzie działać.

Co możesz zrobić:

Zainstaluj klienta zdalnego pulpitu na swoim laptopie i połącz się z pulpitem. W ten sposób możesz „pracować na pulpicie” przez tunel.

Tak więc ciężki program (studio Android) będzie działał na pulpicie! A laptopowi przeszkadzałby tylko klient zdalnego pulpitu.

To skutecznie wykorzystuje sprzęt komputera i dzięki temu działałoby lepiej (jeśli Twój laptop i klient pulpitu zdalnego są wystarczające i łatwe do pracy.

Chciałbym dodać, że to nie „udostępnia” pamięci RAM, ale po prostu używa pamięci RAM komputera, co jest wystarczające.

Paweł
źródło
1
Myślę, że istnieją programy, które pozwalają przeciągać okno z jednego systemu operacyjnego do drugiego, ale nie jestem pewien nazwy, jeśli przetwarzanie jest nadal wykonywane lokalnie lub cokolwiek innego.
Ismael Miguel
1
Równoległe, ale to jest wirtualizacja.
Arthur Kay
1
@Alvin Aplikacja pulpitu zdalnego nie przejdzie przez Internet, chyba że specjalnie skonfigurujesz do tego sieć. Jeśli połączysz się z komputerem za pomocą adresu IP w sieci, połączenie będzie istniało tylko w sieci.
Logarr
9

Prawdopodobnie nie, ponieważ byłoby to dość powolne w porównaniu do tworzenia stronicowania pamięci wirtualnej na dysk lokalny. SATA-3 ma prędkość 6 gigabitów na sekundę, a ja mam dwuletni dysk twardy SATA-3 o pojemności 4 TB 7200 obr./min o stałej prędkości odczytu / zapisu 157 MebiByte / s (~ 1,3 gigabit / s). Utrzymywane prędkości transferu przez gigabit Ethernet wynoszą najwyżej około 0,942 gigabitów na sekundę.

Spiff
źródło
4
Należy pamiętać, że w przypadku niektórych obciążeń opóźnienie dostępu losowego jest ważniejsze niż przepustowość (i podejrzewam, że przepustowość dysku była dla dużych dostępów, a nie losowych porcji 4KiB). Nawet w przypadku narzutów sieciowych przesyłanie 4KiB bezpośrednio z jednego systemu do drugiego byłoby prawdopodobnie szybsze niż przeciętny dostęp do dysku (z opóźnieniami wyszukiwania, rozliczania i rotacji). Zanim dyski SSD stały się popularne, prowadzone były badania nad wykorzystaniem pamięci RAM innych systemów do wymiany przestrzeni dyskowej. Odpowiedź FuaZe dotycząca przeniesienia pracy do większego systemu wydaje się bardziej praktyczna.
Paul A. Clayton
3
Racja, ale twój dysk ma DUŻO, DUŻO niższą prędkość losowego dostępu niż gigabit Ethernet. Do tego potrzebujesz półprzewodnikowego.
Arthur Kay
@Spiff dziękuję ppl, ale mam inne pytanie .. co powiesz na udostępnianie go przez kabel Ethernet? jak za pomocą przełącznika lub v-lan, termio wcale nie korzysta z Internetu, ale dostaje prędkość przesyłu zejścia ???
Alvin
@ArthurKay: Lub profesjonalny dysk 30Krpm, który jest używany w klastrach wirtualizacyjnych z równoważeniem obciążenia.
user2284570
@Alvin Właśnie o tym mówi ta odpowiedź. „... prędkości transferu przez Gigabit Ethernet ...”
BenjiWiebe
1

Nie, to nie jest możliwe.

Jedynym niewielkim wyjątkiem jest użycie narzędzia zdolnego do dzielenia przetwarzania na wiele komputerów, takich jak renderowanie grafiki 3d. Jednak nie o to tak naprawdę pytasz.

Julian Knight
źródło
Czy znasz piekło ? Ponieważ używa x86, dostęp do sieci DMA może być prawdziwą pomocą.
user2284570
OP określił Windows 8, więc obawiam się, że to mu nie pomaga.
Julian Knight
To tylko po to, by powiedzieć, że wbrew temu, co powiedziałeś, jest to możliwe. W przypadku systemu operacyjnego system pojawia się jako system SMP z pamięcią niepodzieloną.
user2284570
1

Około siedem lat temu kontroler pamięci został przeniesiony z osobnego układu ( mostka północnego lub koncentratora kontrolera pamięci) do procesora. Wiesz dlaczego? Aby zmniejszyć opóźnienia, ponieważ procesor potrzebuje bardzo, bardzo szybkiego dostępu do pamięci RAM. Obecne procesory uzyskują dostęp do pamięci RAM z prędkością 68 GB / s : http://ark.intel.com/products/82930/Intel-Core-i7-5960X-Processor-Extreme-Edition-20M-Cache-up-to-3_50-GHz . Nowoczesny Ethernet 1 Gbit / s zapewnia około 120 MB na sekundę, a więc 560 razy wolniej. Tak więc nie można tego zrobić na zwykłych komputerach.

Istnieją rozwiązania oparte na obliczeniach klastrowych z wieloma komputerami podłączonymi do sieci i każdy z nich przechowuje część danych w swojej pamięci RAM. Jest znacznie wolniejszy niż zwykła pamięć RAM, ale nie masz wyboru, jeśli potrzebujesz 10 TB danych, aby być dostępnym. Ale takie rozwiązania powinny być wspierane przez oprogramowanie. Android Studio nie obsługuje tego.

Odpowiedź brzmi nie, niestety.

użytkownik996142
źródło
1
Jeśli chodzi o stosowanie klastrów odpornych na awarie wirtualizacji, mogę powiedzieć, że współużytkowanie pamięci RAM przez Ethernet cat5E nawet wolniejszym napędom działa dobrze z nowoczesnym systemem operacyjnym i programami.
user2284570
1

Obecnie nie jest to możliwe, ale tak naprawdę zostało to zapisane na kartach w pewnej formie i zapisano w „ After Vista ” jako część systemu „ReadyBoost”, który pozwala na użycie pamięci USB jako nośnika do odczytu pliku strony (i inne pliki) szybciej niż przy użyciu dysku. Nie jest to dodatkowa pamięć RAM, ale jeśli używasz dużej ilości pamięci RAM, może to skrócić czas spędzany przez komputer na przesyłaniu danych do iz dysku.

Wygląda na to, że w twoim scenariuszu skorzystasz z pamięci USB 32 GB dedykowanej dla ReadyBoost .

Matthew Steeples
źródło
To nie wydaje się odpowiadać na pytanie PO. Chociaż pierwotnie planem ReadyBoost było udostępnianie pamięci RAM w sieci, nie jest to sposób, w jaki jest obecnie wdrażany.
ChrisInEdmonton
@ChrisInEdmonton OK, zredagowałem swoją odpowiedź, aby wyraźnie stwierdzić, że nie jest to możliwe, ale zostało zaplanowane w pewnym momencie, a nie tylko stwierdzenie, że zostało zaplanowane.
Matthew Steeples
2
A ReadyBoost jest zbyt cholernie wolny, aby był użyteczny. Komputery faktycznie zwalniają podczas korzystania z ReadyBOOST. W ogóle nie ma większego przyspieszenia.
Tonny
1
@Tonny Pomyśl, że to jeden z tych scenariuszy „Twój przebieg może się różnić”. Osobiście przekonałem się, że przyspieszyło to wolniejsze komputery i niewiele zmieniło w przypadku szybkich komputerów. Nigdy nie doświadczyłem, że spowalnia komputer. Oczywiście nie ma substytutu dla wielu pamięci RAM i dysków SSD, ale jeśli nie możesz / nie pójdziesz na to i masz niezatłoczone autobusy USB, to może pomóc
Matthew Steeples
0

Nie jest to możliwe, przynajmniej nie bez dużego wysiłku ze strony Google.

Zasadniczo Android Studio musiałoby obsługiwać rozproszone przetwarzanie wielu węzłów, podobnie jak wydobywanie BitCoin i Folding @ Home.

Po naciśnięciu przycisku kompiluj na laptopie wyśle ​​on fragment kodu na pulpit w celu przetworzenia. Po zakończeniu przetwarzania na pulpicie wyśle ​​go z powrotem do laptopa, aby mógł go załatać.

MonkeyZeus
źródło
Wątpię, czy kompilacja spala pamięć w Android Studio.
Atsby
-1

Mam biuro; pokój z osobistym asystentem i szafką na 5000 książek oraz biurkiem z miejscem na 20 książek. Wyobraź sobie tę konfigurację jako

  • Biuro = komputer
  • Me = procesor (CPU)
  • Asystent = system operacyjny (OS)
  • Biurko = RAM
  • Szafka = dysk twardy

W każdej chwili mój asystent może wyciągnąć z szafki maksymalnie 20 książek i położyć je na biurku do pracy. Ze względu na pracę mojego sekretarza może on położyć na moim biurku własną książkę lub dwie (powiedzmy, że jesteśmy biedni i nie stać nas na kolejne biurko).

Jeśli chcę pracować nad innymi książkami, nie ma już miejsca, a mój asystent musi określić, które bieżące książki na biurku będę w tej chwili najmniej używał, i włoży tę książkę z powrotem do szafki, aby zrób miejsce dla innych książek, których chcę. Asystent musi podchodzić do biurka i szafki za każdym razem, gdy chcę pracować nad książką, która jest poza moim zasięgiem.

W przypadku systemu z niewystarczającą ilością pamięci RAM, to właśnie robi system operacyjny dla procesów, które nie wydają się być bardzo aktywne - weź ich zawartość pamięci i zapisz je na dysku w wirtualnym magazynie pamięci, zwalniając pamięć RAM dla innych procesów, które jej potrzebują. Podobnie jak istnieje odległość między biurkiem a szafką, istnieje „odległość” między procesorem, pamięcią RAM i dyskiem. Dysk jest niesamowicie daleko i powolny, podobnie jak w przypadku laptopa.

W następnym biurze mój kolega ma wystarczająco duże biurko na 80 książek. Czy nie byłoby miło, gdyby mógł „udostępnić” część swojego biurka do przechowywania moich książek? Żebym mógł praktycznie mieć 100 książek?

Po pierwsze, asystenci w każdym biurze nieuchronnie muszą umieścić swoje własne książki, aby mogli wykonywać swoją pracę (nie do negocjacji). Wszystkie systemy operacyjne w systemie muszą korzystać z pamięci RAM, aby wykonać swoją pracę, w przeciwnym razie nie miałbyś systemu operacyjnego na początek. Więc tak naprawdę nie otrzymuję pełnego przydziału książek 20, ani mojego kolegi z pełnym przydziałem książek 80. A mój kolega ma swoją własną pracę, która dodatkowo wyczerpuje dostępną przestrzeń.

Ponadto asystenci nie są szkoleni w zakresie przenoszenia książek między biurami (należy wziąć pod uwagę, że ich poziom kompetencji jest ograniczony). Istniejąca architektura systemu Windows nie ma możliwości bezpośredniego użycia pamięci RAM innego zdalnego komputera.

Teraz wyobraź sobie, że gdyby asystenci rzeczywiście zostali przeszkoleni do prawidłowego przenoszenia książek między biurami i wyraźnie pamiętają własność książek, chodzenie między biurami będzie prawdopodobnie jeszcze wolniejszą procedurą, ponieważ chodzenie z jednego biura do drugiego jest na większą odległość. Mało tego, gdy asystent przyniesie książki z drugiego biura, nadal będzie musiał zwolnić miejsce na twoim biurku, wrzucając niechciane książki z powrotem do szafki. Po co zmuszać go do chodzenia?

Wyjście z jednego komputera w celu przechowywania / pobierania danych z innego komputera przez sieć, przynajmniej w twoim przypadku użycia, nie jest możliwe, ponieważ aplikacja ani system operacyjny nie wiedzą, jak to zrobić. I to też nie byłoby bardzo wydajne.

Jeśli chcesz kontynuować pracę z laptopem, zainstaluj więcej pamięci RAM (większe biurko) lub zainstaluj dysk SSD (obudowa z funkcjami organizacyjnymi, które przyspieszają lokalizowanie książek).

Należy pamiętać, że w niektórych konfiguracjach przechowywanie i pobieranie danych ze zdalnych komputerów może być szybsze - istnieją technologie oprogramowania klastrowego, które właśnie to robią - a następnie uzyskiwanie dostępu do wolno wirujących dysków, ale nadal nie są one dostosowane do Twojego scenariusza.

Rozważ skale czasowe dostępu do danych między zasobami sprzętowymi .

icelava
źródło
7
Myślę, że interpretujesz pytanie zbyt dosłownie. Oczywiście nie jest możliwe, aby komputery miały 10 GB każdy, ale w zasadzie jest możliwe, aby komputery współużytkowały 10 GB, tak aby na przykład mogli użyć 5 GB każdy zamiast laptopa ograniczonego do 2 GB. Wydajność byłaby okropna, ale w zasadzie jest możliwa.
David Richerby
@DavidRicherby - Pytania należy czytać dosłownie. Słowo pisane jest cudowne, jedyne co to znaczy, to dokładnie to, co mówisz. Więc autor dosłownie pyta, czy mogą połączyć dwie niezależne pamięci systemowe komputera, aby zwiększyć wydajność, co oczywiście nie jest możliwe.
Ramhound
6
@Ramhound Wygląda na to, że źle zrozumiałeś tę odpowiedź. Ta odpowiedź mówi, że to niemożliwe, aby połączyć system 2GB i system 8GB, aby uzyskać dwa systemy , każdy z 10GB (bo to byłoby w sumie 20GB, który nie istnieje). Pytanie to jest interpretowane zbyt dosłownie. Mówisz o połączeniu 2 GB + 8 GB, aby uzyskać dwa systemy współużytkujące 10 GB, o to pytanie ma pytać. Więc raczej postrzeliłeś się w stopę, twierdząc, że pytania należy czytać dosłownie: dosłowne pytanie jest nonsensem; zamierzone pytanie przynajmniej ma sens.
David Richerby
@DavidRicherby - Jeśli tak mówisz. Odpowiedź była pomocna. Ponieważ poprawnie wskazano, nie można łączyć pamięci systemowej z dwóch niezależnych systemów komputerowych, tak jak nie można łączyć dwóch zbiorników gazu z dwóch oddzielnych i niezależnych samochodów. Oczywiście nie jestem pewien, czy wymyśli 220, co rzeczywiście nie ma sensu.
Ramhound
To pytanie i odpowiedź jest doskonałym przykładem GIGO :)
Ratna