Re: Czyszczenie ram

Autor: Radosław Sokół <rsokol_at_magsoft.com.pl>
Data: Sun, 11 Nov 2012 11:51:20 +0100
Message-ID: <2012111110512300@grush.one.pl>
Content-Type: text/plain; charset=UTF-8; format=flowed

W dniu 10.11.2012 22:21, Grzegorz Niemirowski pisze:
> Ale to wcale nie jest takie śmieszne. 8 GiB kosztuje 200 zł i nie trzeba być fascynatem żadnego z tych środowisk (ja nie jestem, często programuję procesory, które mają 1 kB RAM, nawet dziś mi
> przypadło) aby uznać to za kwotę niewielką. Poza tym przypomina mi się http://thedailywtf.com/Comments/That-Wouldve-Been-an-Option-Too.aspx

Bardzo dobrze, że 8 GiB RAM kosztuje 200 zł, bo to pozwala
realizować zastosowania, które kiedyś były nierealne. Na
przykład na komputerze, z którego piszę tę wiadomość (wypo-
sażonym właśnie w 8 GiB RAM) mogę mieć uruchomione dwie ma-
szyny wirtualne z Windows, a na podstawowym Linuksie jesz-
cze mnóstwo innych programów, w tym tak duże jak Firefox i
Thunderbird -- a komputer wciąż działa sprawnie i może uru-
chamiać więcej oprogramowania. Kiedyś 400 MiB użycia pliku
wymiany było normą w komputerze z 256 czy 512 MiB RAM, więc
jeżeli tyle jest używane przy 8 GiB RAM to znaczy, że w za-
sadzie w pliku wymiany sÄ… tylko strony faktycznie niepot-
rzebne.

Ale pamiętaj, że *RAM to nie wszystko*. Są jeszcze pamięci
podręczne, których nie da się rozszerzyć. Są interfejsy
urządzeń zewnętrznych, które mają ograniczone przepusto-
wości. Im więcej stron pamięci, tym więcej wymian z dyskiem
(SSD może pomóc, ale nie jest panaceum!), tym więcej nietra-
fień pamięci podręcznej, tym więcej błędów translacji TLB,
tym więcej źle przewidzianych skoków warunkowych. W efekcie
nawet jeżeli cały kod programu będzie w dużym RAM, to pro-
gram 10x większy będzie działał o kilka-kilkanaście pro-
cent wolniej, niż 10x mniejszy.

Pisałem zresztą o tym już dawno temu (2006 rok!):
http://www.grush.one.pl/article.php?id=gigabajty

Dlatego od lat uważam - wbrew trendom - że oprogramowanie
powinno być *w miarę możliwości* oszczędne, małe i szybkie.
I choć faktycznie zacytowana przez Ciebie opowieść ma pe-
wien sens, bo rozszerzenie pamięci byłoby rozwiązaniem, to
zgadzam się, że prosty system webowy *nie ma prawa* zużywać
więcej niż kilkanaście-kilkadziesiąt megabajtów pamięci.
Dokładanie zasobów do programów po prostu spartolonych to
paniczny ratunek (*), a nie rozwiÄ…zanie.

Z takich ciekawostek z własnego podwórka, ostatnio siedzę
nad zadaniem obliczeniowym, którego czas rozwiązania mierzo-
ny był w dniach lub tygodniach. Po pierwsze przepisałem al-
gorytmy w C++ (z MATLABa) i od razu uzyskałem zejście do
czasów godzinowych, ewentualnie liczonych w dniach. I tu
by można zaprzestać, bo program się ślicznie zrównolegla,
więc można by kupić procesor 8-rdzeniowy 3 GHz (testuję na
3-rdzeniowym 2 GHz) i uzyskać 200%-300% przyspieszenia. Ale
siadłem do analizy algorytmów, poprawiłem parę rzeczy, usu-
nąłem niepotrzebne obliczenia zastępując je stabelaryzowa-
nymi wynikami lub wręcz warunkowym podawaniem wartości sta-
łej w asymptotach i uzyskałem mniej więcej 500% przyspie-
szenia *na tym samym sprzęcie* po kilku dniach pracy. Pozo-
stawiam do rozważania Czytelników, czy to się opłacało (tym
bardziej, czy by się opłacało jakiejś firmie), ale mnie to
zaoszczędzi teraz wielu dni obliczeń i wyraźnie zwiększy
komfort pracy (zamiast czekać całą dobę na wyniki ekspery-
mentu mogę mieć je już wieczorem lub nawet po kilku godzi-
nach).

---------
(*) W tym momencie przypomina mi siÄ™ tylko Chamberlain i
     jego "przywiozÅ‚em wam pokój". RozwiÄ…zanie problemu wy-
     dajnoÅ›ci przez doÅ‚ożenie RAM i wymianÄ™ procesora to
     mniej wiÄ™cej tej klasy rozwiÄ…zanie :)

-- 
|""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|
| Radosław Sokół  |  http://www.grush.one.pl/              |
|                 |                                        |
\........................................................../
Received on Sun 11 Nov 2012 - 12:00:06 MET

To archiwum zosta³o wygenerowane przez hypermail 2.2.0 : Sun 11 Nov 2012 - 12:42:01 MET