Wczorajszy artykuł o SoftRAM_11 był prima-aprilisowym żartem, takiej aplikacji nie ma. Istniały za to programy o nazwie SoftRAM i SoftRAM95, będące jednocześnie bestsellerami oraz perfidnym oszustwem. W roku 1995 firma Syncronys Softcorp zarobiła na nich kilkanaście milionów dolarów, choć programy te nawet nie próbowały realizować stawianych przed nimi zadań.
Jak miała działać kompresja pamięci SoftRAM95 a jak działała naprawdę? Jakie kary nałożono na firmę Syncronys Softcorp i jakie były jej dalsze losy? Co z poszkodowanymi klientami? Zapraszam do lektury!
Do czego służy plik wymiany
Zacznijmy od wstępu teoretycznego. Wszystkie współczesne systemy operacyjne dzierżą niepodzielną władzę nad zasobami komputera, spośród których najważniejszymi są czas procesora oraz pamięć operacyjna. Każdy program uruchomiony przez użytkownika otrzymuje przydział swój czasu CPU. Ponieważ jednostka wykonawcza może realizować komendy tylko jednego programu naraz, system operacyjny cyklicznie pauzuje i wznawia wykonywanie kolejnych aplikacji – dzieje się to kilkaset lub kilka tysięcy razy na sekundę.
System operacyjny przydziela też aplikacjom pamięć RAM, jednak nie realizuje w ciemno wszystkich zachcianek. Byłoby to bardzo nieefektywne. Przykład – aplikacja graficzna może na starcie zażądać 1000 MB pamięci RAM, tak na wszelki wypadek, gdyby użytkownik zechciał otworzyć jakiś gigantyczny obrazek. Jeśli jednak użytkownik otworzy fotkę o rozmiarze 10 MB, marnujemy 990 MB. A raczej marnowalibyśmy, gdyby nie chytra sztuczka.
Gdy aplikacja zażąda owego 1000 MB, system odnotowuje sobie „możemy tyle wygospodarować, notujemy zapotrzebowanie” i odsyła informację zwrotną „zrobione, przydzielono 1000 MB od adresu XYZ”. Nie robi jednak nic więcej, póki aplikacja nie zacznie pisać po tej pamięci. Wówczas następuje rzeczywista rezerwacja – ale też nie w całości, tylko np. paczkami po 1 MB.
W ten sposób komputer mający 8 GB pamięci może uruchomić dziesięć lub dwadzieścia aplikacji rezerwujących po 1 GB każda, bo w praktyce nie zdarza się, aby wszystkie te apki naraz zrealizowały zgłoszone zapotrzebowanie w całości. Co jednak stanie się, gdy to faktycznie nastąpi? Na tym etapie jest już za późno na odmowę przydziału.
W takiej sytuacji system operacyjny używa tzw. pliku wymiany (swap file), który pełni rolę „zapasowego RAM-u”. Zaczyna się żonglerka stronami pamięci. Gdy program X staje się nieaktywny, przydzielona mu pamięć RAM zostaje zapisana na dysku a zwolnione segmenty mogą być używane przez inne aplikacje. Przed wznowieniem wykonania programu X jego zasoby trzeba załadować z dysku, więc do pliku wymiany trafia przydział pamięci pauzowanego właśnie programu Y. Dostęp do pamięci masowej jest jednak na tyle wolny, że wydajność realizowanych operacji dramatycznie spada.
SoftRAM95 i tajemnica kompresji
Tu na scenę wchodzą właściciele Syncronys Softcorp i przedstawiają rewolucyjny pomysł – kompresja danych składowanych w pamięci RAM. Wiadomo, że wiele struktur danych dobrze poddaje się „ściskaniu” – np. pliki tekstowe można spakować do mniej niż 10% ich pierwotnej objętości.
Plan jest więc następujący: w systemie mającym 8 MB RAM (typowe dla Windows 95) przeznaczamy 4 MB na bufor przechowujący dane skompresowane. Jeśli osiągniemy dwukrotne upakowanie danych (czyli bufor pomieści efektywnie 8 MB), to nasz system będzie się zachowywał, jakby miał 12 MB RAM (4 zwykłe MB i skompresowane 8 MB w buforze).
Łatwo dostrzec korzyści – uruchomimy więcej programów naraz lub przetworzymy większe zbiory (teksty, grafiki, filmy), niż było to uprzednio możliwe. Wiemy też, że wydajność komputera nieco spadnie – bo część mocy procesora zużyjemy na kompresowanie i dekompresowanie stron pamięci przenoszonych do i z bufora.
Widać więc, że zastosowany tu algorytm kompresji musi być na tyle szybki, aby spadek wydajności nie był zbyt duży, a jednocześnie na tyle wydajny, by osiągnąć zakładany stopień oszczędności pamięci RAM. W epoce niezbyt szybkich dysków talerzowych HDD mogło się to udać – operacje na pliku wymiany były na tyle wolne, że procesor spędzał miliony cykli całkowicie bezproduktywnie. Gdyby odczytów i zapisów na HDD udało się uniknąć, nawet kosztem kilkuset tysięcy cykli spędzonych na obsłudze skompresowanego bufora, osiągniemy rzeczywiste korzyści.
Oszustwo
Jaki algorytm kompresji zastosowano w aplikacji SoftRAM95? Otóż… żaden! Jedyne, co aplikacja robiła, to powiększenie pliku wymiany – dzięki temu system raportował podwojenie dostępnej pamięci.
Jak na swoim blogu pisze Raymond Chen, autorzy aplikacji SoftRAM95 wykorzystali istniejący kod stronicowania pamięci dostępny w pakiecie DDK (Driver Development Kit) autorstwa Microsoftu. Towarzyszą mu moduły stanowiące opakowanie dla algorytmów kompresji/dekompresji i nic więcej. Brakuje faktycznej implementacji kodu dokonującego redukcji rozmiaru danych.
Zabrakło czasu? A może złożoność zadania przerosła programistów? Niezależnie od powodów, właściciele firmy świadomie skierowali do sprzedaży produkt stanowiący wydmuszkę, całkowicie pozbawiony zachwalanych funkcji.
W praktyce SoftRAM95 redukował rozmiar pamięci dostępny dla działających programów a rzekomo skompresowane strony RAM przechowywał w niezoptymalizowanym buforze cyklicznym. Ponieważ zaś obsługa tego bufora nie była obudowana wymaganymi w środowisku wielowątkowym mechanizmami synchronizacji i ochrony pamięci, w sytuacji dużego obciążenia i wykorzystania pliku wymiany często dochodziło do konfliktu (race condition) i zawieszenia systemu operacyjnego.
Wisienka na torcie – ponieważ autorzy SoftRAM95 nie zmienili nawet nazwy użytego sterownika, zrzut pamięci na niebieskim ekranie sugerował awarię komponentu systemowego autorstwa Microsoftu.
Następstwa
Sprawa wydała się stosunkowo szybko. Popularna prasa komputerowa publikowała testy SoftRAM i SoftRAM95, wykazujące brak spodziewanych korzyści. Ponieważ jednak chałupnicze procedury testowe pozostawiały spory margines niepewności, publikacje prasowe nie nazywały procederu oszustwem, lecz jedynie niespełnionymi obietnicami.

(kliknij aby powiększyć)
Przy ówczesnym, dużo wolniejszym obiegu informacji w świecie IT, na obietnice nabrały się setki tysięcy klientów. Chcieli oni poprawić wydajność swoich komputerów po kosztach stanowiących ułamek ceny nowego sprzętu – SoftRAM95 kosztował jedyne 30 dolarów. W efekcie akcje firmy wzrosły tysiąckrotnie, z 3 centów do ponad 30 dolarów.
Jednak już w grudniu 1995 producent wycofał SoftRAM95 ze sprzedaży – po tym, gdy sprawą zainteresowała się Federalna Komisja Handlu (Federal Trade Commission) zajmująca się m.in. ochroną praw konsumentów. Nie znaczy to, że wszystkie pudełka znikły ze wszystkich sklepów – tym bardziej, że firma nie była gotowa płacić za ich zwrot.
Kulisy oszustwa zostały opisane w prasie specjalistycznej – jedną z takich publikacji był artykuł w Dr. Dobbs Journal z sierpnia 1996. Autorzy artykułu zaimplementowali pomysłowy test – ich program wypełniał całą pamięć powtarzalnym (a więc dającym się kompresować) wzorcem a dedykowany sterownik sprzętowy sprawdzał zawartość fizycznych kości RAM w poszukiwaniu tego wzorca. Mimo obecności SoftRAM95, wzorzec był wykrywany w stanie pierwotnym, co obalało hipotezę o dokonywanej kompresji zawartości pamięci.
W połowie 1996 roku firma zawarła z FTC ugodę, zgodnie z którą klienci byli upoważnieni do ubiegania się o 10 dolarów zwrotu. Zniszczonej reputacji nie dało się jednak naprawić. W roku 1998 zadłużona Syncronys Softcorp rozpoczęła postępowanie upadłościowe.
Czy to mogło się udać?
Popularny w latach 90 zestaw narzędzi Norton Utilities zawierał narzędzie do defragmentacji dysków, potrafiło ono ułożyć w kolejnych sektorach dysku kolejne części plików, zapisywane uprzednio tu i ówdzie w blokach sektorów o różnej długości. Porządkowanie dysku było ilustrowane animacją, w ramach której widzieliśmy redukcję „dziur” w alokacji ścieżek i sektorów. Nie było to placebo, w przypadku wolniejszych komputerów okresowa defragmentacja skutkowała odczuwalną poprawą komfortu pracy.
Efekt? Użytkownicy komputerów wytworzyli sobie mentalny model, zgodnie z którym porządek jest lepszy od nieporządku. W rezultacie zaczęli oczekiwać podobnych reguł również tam, gdzie nie ma to sensu – np. stosując aplikacje w rodzaju Memory Optimizer, by zminimalizować użycie pamięci. Tymczasem nieużywana pamięć to pamięć zmarnowana! Jeśli działające programy jej nie wypełniają – system operacyjny może np. zwiększyć bufory zapisu na dyskach. Wymuszona redukcja tych buforów zmniejszy, a nie zwiększy wydajność systemu.
Widzimy, że intuicje i proste analogie mogą nas zwieść na manowce. Dwa najważniejsze komponenty systemu operacyjnego to planista (zarządza kolejką zadań) oraz zarządca pamięci – obu poświęcono w ostatnich 50 latach nieprzeliczone doktoraty zaś telemetria z milionów komputerów dostarczyła dane o rzeczywistych efektach strojenia parametrów wpływających na ich działanie. Naprawdę niewielka jest szansa, by niewielki, niezależny producent oprogramowania mógł „naprawić Windows”, zaimplementować jakiś mechanizm systemowy lepiej, niż Microsoft.
Użytkownicy Linuksa dysponują większą swobodą i są w stanie realizować różne eksperymenty – choćby używać wielu plików swap jednocześnie. Jeden może być np. umieszczony w RAM-dysku korzystającym z systemu plików oferującego automatyczną kompresję danych. Konsensus jest jednak taki, że RAM lepiej wykorzystywać jako RAM, a intensywne użycie pliku wymiany sygnalizuje zbyt duże obciążenie systemu.
Ale Windows 10/11 kompresuje pamięć!
Owszem, począwszy od wersji 1507 (lipiec 2015), Windows zawiera funkcję kompresji pamięci. Gdy obciążenie RAM-u przekroczy wartość progową, system podejmuje próbę kompresji rzadziej używanych stron pamięci, aby uniknąć ich zapisu na dysk. W ciągu 20 lat od premiery SoftRAM95 krajobraz komputerów PC istotnie się jednak zmienił – wielordzeniowe procesory mają większy zapas mocy, pamięci z wielostopniowym cache są znacznie szybsze, intensywne użycie pliku wymiany wpływa też niekorzystnie na żywotność napędów SSD. W przeciwieństwie do Windows 95, dzisiejsze „okienka” potrafią sygnalizować aplikacjom, aby dobrowolnie zredukowały alokację pamięci, bo jej zużycie przekroczyło próg ostrzegawczy.
Podsumowanie
Dramatyczny wzrost cen pamięci RAM sprawił, że użytkownicy komputerów zwracają większą uwagę na jej wykorzystanie przez aplikacje. Faktem jest, że przez wiele lat wydawcy oprogramowania odpuszczali sobie optymalizację swoich produktów – klient zawsze mógł dokupić kolejne kości pamięci z kolejnymi gigabajtami. Dziś może okazać się, że zamiast nowych funkcjonalności klienci chętniej sięgnęliby po wersję o obniżonej konsumpcji pamięci RAM.
O autorze: zawodowy programista od 2003 roku, pasjonat bezpieczeństwa informatycznego. Rozwijał systemy finansowe dla NBP, tworzył i weryfikował zabezpieczenia bankowych aplikacji mobilnych, brał udział w pracach nad grą Angry Birds i wyszukiwarką internetową Microsoft Bing.



6 odpowiedzi na “Prawdziwa historia aplikacji SoftRAM95”
Linux od dawna ma moduły zram i zswap, które umieją odpowiednio umieścić plik wymiany na skompresowanym ramdysku i wydzielić część pamięci jako bufor dla stron podlegających wymianie, z transparentną kompresją (czyli taki SoftRAM, tylko działający).
Na współczesnych desktopach i serwerach się tego raczej nie używa z powodów, o których piszesz, ale na urządzeniach embedded bywa jak znalazł.
Tu ciekawy artykuł o różnicach między oboma modułami: https://chrisdown.name/2026/03/24/zswap-vs-zram-when-to-use-what.html
Właśnie pierwsze co mi przyszło do głowy jak czytałem poprzedni artykuł to był zram. Używałem tego żeby ładować większe modele LLM/FLUX w momentach kiedy dostawałem OOM
„Mimo obecności SoftRAM95, wzorzec był wykrywany w stanie pierwotnym, co obalało hipotezę o dokonywanej kompresji zawartości pamięci.”
Samo narzędzie było oszustwem, ale ten akurat sposób niekoniecznie to udowadniał (zwolniona pamięć niekoniecznie musi być natychmiast wymazana)
Jeśli zaalokujesz całą fizyczną pamięć, wpiszesz tam X wzorców i po rzekomej kompresji nadal masz w niej X wzorców, to jest to dowodem braku kompresji.
X wzorców tak 😀 ale zdanie brzmiało „wzorzec był wykrywany” co zrozumiałem że znaleziono przynajmniej jeden przypadek z X 😀 Chodziło mi o to, że zwolnienie pamięci jedynie zaznacza jej zwolnienie, a nie czyści jej komórki.
No cóż, lepsze oszustwo które nic robiło, niż takie, które stwierdziło że dobrym pomysłem będzie „optymalizacja” polegająca na usunięciu paru plików systemowych w celu zaoszczędzenia miejsca na dysku.