1

Kiedyś kolega mi powiedział, że jego kuzyn podłączył pamięć RAM przez zrobioną przez siebie przejściówkę w miejsce dysku twardego i w ten sposób zrobił sobie RAM-dysk. Czy to prawda nie wiem, jednak pomysł wydał mi się ciekawy.

Później zetknąłem się z RAM dyskiem przy WindowsPE, był to jednak na tyle mały dysk, że się w temat nie zagłębiłem.

Niedawno temat RAM-dysku na PC powrócił za sprawą programu ImDisk https://sourceforge.net/projects/imdisk-toolkit/ który pozwala wykorzystać pamięć RAM dostępną w PC do utworzenia RAM-dysków, jak też podpięcia obrazów dysków z których można w ten sposób korzystać.

Program sprawdziłem, wirtualne dyski są bardzo szybkie - np. dobrze się to sprawdza do zapisu video, tworząc dyski należy zostawić wystarczająca ilość pamięci dla innych używanych programów i systemu. Pamięć zajmowana przez wirtualne napędy nie jest widoczna jako zajęta w Menedżerze zadań, jednak program działa prawidłowo. Podobno da się tak skonfigurować, aby zawartość dysku była zapisywana na dysk i z niego odtwarzana, ale tego nie sprawdzałem, jednak mimo wszystko trzeba pamiętać, że odłączenie zasilania czy reset spowoduje utratę zapisanych w RAM-dysku danych. Program działa też z 32 bitowym systemem.

Ciekawe czy dałoby się dodatkowo wykorzystać w ten sposób pamięć karty graficznej...

2 Ostatnio edytowany przez Adam Klobukowski (2022-01-29 13:02:14)

Tradycyjnie RAM dysk to nieco inna rzecz. Jest to wirtualny dysk w pamięci RAM komputera.

To o czym piszesz to jest dysk oparty o pamięć DRAM, podtrzymywany bateryjnie jeśli ma być trwały. Nie wiem jak kuzyn kolegi to zrobił sam, ale kiedyś był do kupienia takie karty na PCI: https://www.newegg.com/gigabyte-gc-ramd … 6815168001 Obecnie, przy szybkich interfejsach NVMe prawdopodobnie jest to bardzo mało używane. W konsumenckich dyskach NVMe osiągane są transfery między 6-7GB/s. Więc jak weźmiesz kilka takich dysków i połączysz w RAIDa to dochodzisz do prędkości DRAM przy o kilka rzędów wielkości niższej cenie per GB. Jedyne w czym DRAM bije to rozwiązanie to random access, ale jak zastosujesz nieco droższe dyski Optane od Intela to to też przestaje być tak dużym problemem, tyle że już nie będzie aż tak opłacalne (ale nadal) vs. DRAM-dysk.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

3

Adam, bredzisz - w kolejnym temacie...
DRAM? Podtrzymywany bateryjnie? Czy ty wiesz, ile kosztuje odświeżanie pamięci dynamicznych?

przechodze na tumiwisizm

Zajrzyj do linku który wstawiłem - jest tam na karcie spora bateria czy też akumulator. Dyski SSD mają po kilka GB DRAM nie tylko jako cache, ale trzymają tam przykładowo tablicę wskazująca gdzie fizycznie jest zapisany logiczny sektor. Taka tablica ma mniej więcej wielkość 1GB per 1TB pojemności dysku, a są już w sprzedaży dyski 15TB. W momencie utraty zasilania, trzeba tą tablicę zapisać na media. Nie wiem jak w dyskach 15TB, ale w dyskach do 8TB (takie widziałem), jako zasilanie awaryjne jest spory kondensator - i to wystarcza na ten moment żeby wszelkie dane zapisać. Tak więc tak, były takie kart z podtrzymywaniem bateryjnym.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

5

Tak, ta karta Gigabyte ma podtrzymanie bateryjne. Tam niestety wchodzi tylko 4GB pamięci i szkoda że pomysłu nie rozwinięto albo nie było obsługi tak by zrobić np z 16GB ale dzisiaj to już bez znaczenia raczej. Czas podtrzymania to około max 12h - dokładnie nie pamiętam już. To raczej nie była "zabawka" do typowego zastosowania w domu bo OS by często był reinstalowany. W mojej sztucę bateria już dawno martwa ale da się dokupić zamiennik.
Tutaj więcej info: https://en.wikipedia.org/wiki/I-RAM

6

Nie wiedziałem, że powstało tego typu rozwiązanie, także dziękuję za te informacje. W sieci jest dostępne sporo informacji w tym instrukcja obsługi.

W tamtym czasie nie było jeszcze złącza SATA, lub dopiero co zostało opracowane (ok. 2000 r.), na pewno nie było go na dostępnych płytach głównych, więc musiało chodzić o złącze IDE, później zwane PATA.

Co do rozwiązania software-owego, to ma tę zaletę, że wykorzystujemy pamięć zainstalowaną w komputerze, którą w każdej chwili możemy zwolnić i wykorzystać w tradycyjny sposób, dane możemy na ten czas przechować zapisane jako image na dysku komputera, po czym je przywrócić. Minusem jest to, że pamięć w żaden sposób nie jest podtrzymywana po odłączeniu zasilania Szkoda, że w rozwiązaniu sprzętowym akumulator nie starcza na długo, gdyby nie to byłby to 100%, bardzo szybki zamiennik dysku SATA.

Być może byłoby możliwe skonstruowanie karty, która podtrzymywałaby pamięć zamontowaną na płycie głównej? Takie rozwiązanie łączyłoby zalety obydwu rozwiązań. Nie dałoby się tylko przełożyć pamięci z danymi do drugiego komputera. Zostałoby niewykorzystane złącze SATA.

Być może dzisiejsze "dyski" są do większości zastosowań wystarczająco szybkie, jednak z definicji nie będę szybsze niż pamięć RAM. Nie każdy też posiada nowe szybkie dyski, mnie zależy na pojemności więc wybrałem tradycyjny dysk HD. Programowo zyskuję dodatkowa pojemność i szybkość "gratis", w ten sposób mogę też odciążyć dysk.

Przez czas kiedy używam wirtualnego napędu (już kilka miesięcy) trzy razy zdarzyło mi się, że jak przypuszczam zabrakło pamięci dla grafiki, bo okienka stały się czarne, dwa razy dane udało mi się zapisać, raz niestety komputer się zrestartował i zawartość dysku zniknęła. Także jest ryzyko, ale warte świeczki.

7

Może i NVMe w raidzie będą tak szybkie jak ram dysk, ale ja mam 4 GB RAM-Dysku z innego powodu - ustawiłem sobie na nim temp i każda kompilacja w Visual Studio nie zapisuje mi tymczasowych obj-tów na dysku z ograniczoną liczbą zapisów, tylko w RAMie. Może nie dożyję padu tego dysku, ale przynajmniej lepiej czuje się z tym psychicznie ;)

8

Do takich rzeczy fajny byłby RAM-dysk w stylu amigowym - bez deklarowanej pojemności, dynamiczny, zużywający tyle pamięci ile akurat potrzeba.

Pamięć studenta ma charakter kwantowy - student wie wszystko, ale jednocześnie nic nie pamięta.
- Kilka(naście?) pudełek z klawiszami i światełkami. I jeden Vectrex, żeby nimi wszystkimi rządzić.

9

->perinoid - imdisk tak właśnie ma - można ustawić stały (bardzo szybki)  albo dynamiczny (wolniejszy)

na ramdysku mam temp jak laoo/ng do wywalania śmieci oraz do szybkiego rozpakowywania plików - niezły gadget :)

Różne różności dla Atari i nie tylko - przydatne, bądź nie ale i tak warto zajrzeć...
http://atari.myftp.org  Atari - Power without price and necessary elements with some sh*t onboard
https://reversing.pl SSL enabled site

QTZ: ram podtrzymywany już teoretycznie masz, jak używasz sleep mode.

Co do ramdysków używanych przy kompilacji, to wydaje mi się że odpowiednio skonfigurowany cache dysku może być prawie tak samo efektywny.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

11

Tak teoretycznie to jest w Laptopach. Ale jak pisałem chodzi o "po odłączeniu zasilania" (w stacjonarnym PC), czyli chciałoby się, żeby takie urządzenie - karta, miało akumulator i w jakiś sposób zabezpieczało pamięć zajętą pod RAM-dysk przed resetem. Nie wiem czy da się coś takiego zrobić bez modyfikacji płyty głównej, ale tak to sobie wyobrażam.

Co do oszczędzania dysków ssd, etc. to jest jedno z zastosowań przewidzianych przez autora i bardzo słusznie.

Ja używam głównie do nagrywania TV, przez co sygnał się nie tnie, gdy inne programy potrzebują dostępu do dysku (prawdopodobnie program ma zbyt mały własny bufor). Ale też gdy całkiem zapcham dysk, żeby chwilowo zrobić miejsce, nie kasując niczego, a dopiero potem się rozglądać za czymś do usunięcia. Bardzo szybko wycina się też fragmenty z nagrań video, co robiąc na chybił trafił. przy kilku próbach na HD zajmuje sporo czasu. "Na chybił trafił", bo ucinam pliki ts, przy pomocy sfk ;)

QTZ napisał/a:

Tak teoretycznie to jest w Laptopach. Ale jak pisałem chodzi o "po odłączeniu zasilania" (w stacjonarnym PC), czyli chciałoby się, żeby takie urządzenie - karta, miało akumulator i w jakiś sposób zabezpieczało pamięć zajętą pod RAM-dysk przed resetem. Nie wiem czy da się coś takiego zrobić bez modyfikacji płyty głównej, ale tak to sobie wyobrażam.

Sleep mode jest też w stacjonarnych sprzętach. Dokładasz do tego UPS i załatwione :)

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

13

QTZ napisał/a:

"Ciekawe czy dałoby się dodatkowo wykorzystać w ten sposób pamięć karty graficznej..."

Jak się okazuje jest to możliwe, a nawet ktoś to już zrobił, jeszcze zanim napisałem o tym pomyśle:
https://sourceforge.net/p/imdisk-toolki … 0fad00a94/

14

W czasach dysków NVMe to trochę sztuka dla sztuki. Jak wiele innych rzeczy oczywiście.

15 Ostatnio edytowany przez QTZ (2023-06-18 02:44:18)

Gdyby było tak dobrze, to RAM w komputerach byłby zbyteczny.

Jak napisał Laoo Jednym z powodów dla których używamy RAM-dysków (i w ogóle RAM-u), jest ograniczona żywotność innych pamięci (no i przede wszystkim różna - raczej zawsze niższa - prędkość, a czasami brak miejsca...).

Jeżeli te dyski są faktycznie tak szybkie jak RAM to ciekawym pomysłem byłoby zrobienie emulacji RAMu na NVMie, choć ja osobiście bałbym się, że tak potraktowana pamięć NVM się za chwilkę rozleci...

Emulacja RAM-u karty graficznej czy głównego RAM-u na dysku, czy w wolnym RAM-ie w taki sposób, żeby programy widziały więcej fizycznej pamięci, mogłaby się przydać w sytuacjach gdy potrzeba większej ilości pamięci, niby coś podobnego w Windows funkcjonuje, jednak zdarza się, ze mimo wolnego miejsca na dysku pamięć się kończy i program lub nawet Windows częściowo lub całkowicie się zawiesza.

16

QTZ napisał/a:

ze mimo wolnego miejsca na dysku pamięć się kończy i program lub nawet Windows częściowo lub całkowicie się zawiesza.

Zazwyczaj zapycha się na pliku wymiany. Dyski NVMe podłączane przez złącze PCI (to ważne - te przez eSata są wolniejsze - przepychanie danych) są znacznie szybsze od zwykłych dysków, ale pamiętajmy też, że nadal są to nośniki danych o takiej strukturze zapisów flash, czyli ograniczona liczba cykli zapisu, a działając jako RAM tych zapisów byłoby wielokrotnie więcej niż jakiekolwiek dane na dysku.

Sikor umarł...

17

Jest jeszcze jeden problem - programy sprawdzają ile jest wolnej pamięci i gdy jej nie ma nawet się nie uruchamiają. Nie wiem na ile skuteczne jest ustawienie większej współdzielonej pamięci dla GPU, ale chyba w takich przypadkach to nic nie daje. Raczej nie pomaga też większy plik wymiany. Maksymalny dostępny rozmiar pamięci z tego co mi wiadomo pozostaje ten sam, co najwyżej część danych zostaje zrzucona na dysk - robiąc miejsce w ramach dostępnego RAM-u. Można by to sprawdzić tworząc np. bardzo duży plik wymiany i uruchamiając coś pamięciożernego. Windows jednak nigdy nie wyświetla, że mamy więcej dostępnego RAM-u niż jest zamontowane fizycznie.

18

QTZ napisał/a:

Windows jednak nigdy nie wyświetla, że mamy więcej dostępnego RAM-u niż jest zamontowane fizycznie.

Bo nie może. Plik wymiany ma właśnie zwalniać RAM. Nie pamiętam już, czy plik wymiany może być 2 lub 4 krotnie większy od RAM, czy mniejszy - dawno to było. Przypuszczam, że ta wielkość dotyczy obecnie wątków procesora, albo fizycznych rdzeni. Trzeba by poszukać - więcej i tak nie obsłuży. Za to można w opcjach (nie pamiętam jak, ostatnio to ustawiałem wieki temu, nie wiem, chyba pod XP) od jakiej zajętości RAM ma bardziej zważać na wymianę danych z dyskiem.

Sikor umarł...

19

Sikor napisał/a:

Nie pamiętam już, czy plik wymiany może być 2 lub 4 krotnie większy od RAM, czy mniejszy - dawno to było

O, to trochę dziwnie w tym Windowsie to jest. Na *nix'ach to się "z palca" ustawia wielkość co do megabajta, albo nawet i bajta (choć było zalecane aby właśnie ustawiać dwukrotność pamięci RAM)

20

W Windows też się tak ustawia i z tego co pamiętam, zaleca się 2x większy niż RAM.

21

20 lat temu tak się robiło. Przy obecnych cenach pamięci i możliwościach jej rozszerzenia wielkość swapu pozostawiłbym Windowsowi, a dla systemów uniksowych jednoznacznej odpowiedzi nie ma.

perinoid napisał/a:

Do takich rzeczy fajny byłby RAM-dysk w stylu amigowym - bez deklarowanej pojemności, dynamiczny, zużywający tyle pamięci ile akurat potrzeba.

$ sudo mkdir /ramdisk && sudo mount -t tmpfs rd /ramdisk && sudo df -h /ramdisk; free -h
System plików  rozm. użyte dost. %uż. zamont. na
rd              7,8G     0  7,8G   0% /ramdisk
               razem       użyte       wolne    dzielone   buf/cache    dostępne
Pamięć:       15Gi       2,7Gi       8,1Gi       797Mi       4,7Gi        11Gi
Wymiana:        15Gi          0B        15Gi
Zawsze mam rację, tylko nikt mnie nie słucha.

22

Lizard napisał/a:

a dla systemów uniksowych jednoznacznej odpowiedzi nie ma.

W sumie racja. To mi przypomniało, że kiedyś często widywałem na forach pytania o wielkość partycji swap i było zawsze multum teorii. Nie wiem skąd mi się więc wzięła ta dwukrotność, osobiście od lat nie zakładam swap'a (a nie mam jakichś bajońskich ilości RAMu) i nie planuję tego zmieniać.

23

Dwukrotność RAM przyjęła się jakoś tak niezależnie. Winda też zakładała swap (plik) domyślnie w takiej właśnie wielkości - można to było zmienić. Na zasadzie - jak nie wiesz ile potrzebujesz to załóż 2xRAM. I to było w czasach, gdy przy dysku rzędu kilkuset MB miało się kilka MB RAM - wiec strata nie była aż tak znacząca. Mój laptop ma 16GB RAM i swapa nie mam nawet włączonego. Mój serwerek pocztowy ma 2GB RAM i 1.6GB SWAP (którego w ogóle nie używa).

Swap przydaje się natomiast jeśli ktoś używa hibernacji na dysk - skoro pamięć wirtualna już zawiera większość mechanizmów potrzebnych do wysłania dowolnego procesu na dysk to można go po prostu użyć bez dodawania osobnego kodu.

Pamięć studenta ma charakter kwantowy - student wie wszystko, ale jednocześnie nic nie pamięta.
- Kilka(naście?) pudełek z klawiszami i światełkami. I jeden Vectrex, żeby nimi wszystkimi rządzić.

24

Kiedyś w linuksie i windows ustawiałem swap o wielkości 2xRAM obecnie 1xRAM ale tylko na systemach gdzie oprogramowanie wymaga przestrzeni wymiany do poprawnego działania. W większości przypadków swap jest zbędny.

Sikor napisał/a:
QTZ napisał/a:

ze mimo wolnego miejsca na dysku pamięć się kończy i program lub nawet Windows częściowo lub całkowicie się zawiesza.

Zazwyczaj zapycha się na pliku wymiany. Dyski NVMe podłączane przez złącze PCI (to ważne - te przez eSata są wolniejsze - przepychanie danych) są znacznie szybsze od zwykłych dysków, ale pamiętajmy też, że nadal są to nośniki danych o takiej strukturze zapisów flash, czyli ograniczona liczba cykli zapisu, a działając jako RAM tych zapisów byłoby wielokrotnie więcej niż jakiekolwiek dane na dysku.

Nie bój się tak o te dyski, one potrafią sobie to ogarnąć. No chyba że jakieś od firmy krzak.

Co do ilości RAMu, to nowoczesne płyty główne obsługują 64GB+, i niewiele jest 'domowych' zastosowań które potrzebują więcej (oczywiście w przyszłości na pewno się znajdą), a 'nowoczesne' programy które potrzebują go dużo, najczęsciej potrafią sobie robić 'swap' we własnym zakresie.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio