PDA

Zobacz pełną wersję : Pamieć wirtualna - pomóżcie



Kuba18251
02-06-07, 13:05
O co chodzi z tą pamięcią wirtualną, mam 512 ram DDR2. Ile mogę ustawić pamięci wirtualnej na jedną partycje dysku?

stilgar
02-06-07, 13:48
Pisz po ludzku! W języku polskim tylko nowe zdania i nazwy własne rozpoczynamy z wielkiej litery! (nie, to co napisales wcale nie wyglada cool, jest tylko i wylacznie nieczytelne)

pamięć wirtualna to fragment dysku twardego, który udaje, że jest pamięcią RAM. Działa to oczywiście znacznie wolnej, ale kiedy RAMu mało lepsza taka pamięć niż żadna...

jesli masz windows, ustaw sobie, zeby sam automatycznie przydzielal pamiec wirtualna, to zwykle najlepsze wyjscie.

r-mi
03-06-07, 21:39
Lepiej ustawić pół giga bez maksimum, jeśli windows ma zarządzać automatycznie to na oddzielnej partycji gdzie nie ma nic innego. Jak windows zarządza VM to się dysk fragmentuje.

stilgar
04-06-07, 00:06
no to co ze sie fragmentuje? fragmentacja nie jest niczym zlym, ba na poziomie 2-5% wrecz przyspiesza odczyt z dysku. Fragmentacja spowalnia odczyt tylko w systemach jednozadaniowych, ktore czytaja jedna rzecz z dysku na raz - w wielozadaniowych najczesniej wiele programow chce cos na raz z dysku czytac, wiec glowica i tak lata - ergo przy lekkiej fragmentacji jest pewne prawdopodobienstwo, ze dane znajda sie blizej glowicy niz przy ciaglych danych...

r-mi
04-06-07, 01:51
http://www.ntfs.com/hard-disk-basics.htm
http://www.dzikie.net/index.php?art=ntfs_vs_fat32&ap=2&cpage=1

Gdyby to co piszesz było prawdą to programy do defragmentacji dysku zakończyłyby swój rozwój w epoce dosu. Prawda jest taka, że dane na dysku są zapisywane cylindrycznie, czyli głowica musi wykonać najmniejszą pracę przy odczycie pliku który jest niepofragmentowany a wielozadaniowość nie ma tu nic do tego bo tylko pogarsza wydajność.

Przy tysiącach plików na dysku prawdopodobieństwo że dzięki wielozadaniowości po zakończeniu odczytu pliku inny program zarząda odczytu następnego bloku i głowica nie będzie musiała biegać jest prawie zerowe. Z resztą można wyliczyć dla 16kb bloku i 80gb dysku mamy 83886080 bloków, więc jest jak 0,000001%

Tworzyenie systemu, który "specjalnie" umieszcza pliki w nieciągłym obszarze, który trudno się z dysku czyta byłoby bez sensu. Podobnie byłoby totalną głupotą dążenie do jak najmniejszej fragmentacji (nowoczesne systemy plików takie jak NTFS właśnie to robią) i pakowanie małych plików bezpośrednio w tablicach MFT jeśli miałoby to pogorszyć wydajność.

Z resztą wystarczy wykonać prosty test. Kopiowanie pliku między partycjami. Jeśli np. jeden plik 2 GB kopiuje się minutę to przy kopiowaniu dwóch plików 2GB naraz nie będą się kopiować 1,5min, ani nawet dwie minuty - tylko gdzieś około 5-10 minut. To jest właśnie najprostsza symulacja wielozadaniowości i jej wpływu na wydajność.

Jak dysk ciągle "mieli" to znaczy, że jest zbyt mało ramu albo właśnie jest pofragmentowany i przez to pamięci brakuje. Bo logiczne, że jak plik jest nieciągły to rozmiar informacji o jego położeniu wzrośnie a nie zmaleje i jak system to wrzuci do RAM (bo pewne dane z MFT musi) - to jeszcze pogorszy sytuację i nie dość, że będzie mielił i tracił czas podczas odczytu pliku to jeszcze bezsensownie będzie musiał wrzucać dane do swapa.

Co do tego, że fragmentacja przyspiesza odczyt. Jeśli mówimy o fragmentacji plików - to niemożliwe, możliwe - że odczyt przyspieszy fragmentacja wolnego miejsca, ale to ze względu na to, że niektóre strktury danych które mogą być użyte przy implementacji systemu plików działają szybciej jeśli między blokami danych występuje wolne miejsce.

Tak na prawdę to wolne miejsce jest pofragmentowane także po defragmentacji (żeby po dołożeniu pewnej ilości danych do pliku nie fragmentował się on w nieskończoność, np. po dołożeniu 1000x 4kbajt nie miał 1000 fragmentów)

Z resztą jak ma przyspieszyć odczyt operacja ustawiania głowicy która trwa te 5-10ms a podczas której nic się nie da odczytać?

Większość plików na dysku to strumienie, albo są odczytywane sekwencyjnie. Sekwencyjnie czytane są wszystkie pliki wykonywalne które są w dodatku ładowane całe do ram przy uruchomieniu, grafika, dźwięk, tak na prawdę trudno znaleść przykład pliku, który jest traktowany inaczej.

Jeśli plik nie jest odczytywany sekwencyjnie to system i tak odczyta do bufora X bajtów po obszarze który chcemy przeczytać, więc prędzej piekło zamarznie, niż odczyt / zapis niepofragmentowanego pliku będzie wolniejszy niż "skakanie" po losowych obszarach.

stilgar
04-06-07, 07:59
nie podam ci linka na poparcie moich slow, ale kiedys mialem o tym mowione na wykladzie z systemow operacyjnych, innym razem czytalem to przy porownywaniu systemow plikow

mozliwe, ze cos pokrecilem i sie myle :)

a teraz zbieram sie na kolokwium z telekomunikacji, wiec jakiegos linka poszukam potem :)

maciolek1
04-06-07, 09:01
Czytałem, że najlepiej gdy pamięć virtualna jest stała czyli min=max. Przy 512 ustawiłbym na 1GB na początek potem wypróbowałbym 1,5GB. Pozostawianie tego systemowi to najgorsze rozwiązanie.

RRybak
04-06-07, 09:13
Stilgar, na wykładach z SO mówią o różnych sposobach decydowania co się ma znaleźć w RAM, a co w VM. Tam się o defragmentacji nie mówi ;)
I fragmentacja pliku stronicowania to najgorsze co może być - więc o ile odczyt losowych plików z gry systemu za bardzo "nie rusza", o tyle mielenie posiekanym swapem może doprowadzić do procesor do szewskiej pasji (chociażby przez samo namierzanie stron).

@maciolek1
Generalnie jest zasada, żeby nie zostawiać w ogóle zarządzania pamięcią windowsowi, bo robi za duże zmiany na dysku i jeśli mu coś nie będzie pasować i zacznie jechać do tego swojego "bez maksimum", to możesz się grą pożegnać nawet na 6 minut. A uwierz mi, że przy "starciu z bossem" gdzie liczy się refleks i szybkie strzelanie lub manewrowanie pojazdem komunikat "zwiększam ilość pamięci" i brak reakcji na klawisze potrafi wyprowadzić z równowagi ;)
Podsumowując, z moich doświadczeń najlepiej się sprawdza ustawienie minimum na powiedzmy 768MB, a maksimum na 1024, żebym wiedział, że mi za daleko po wolnej przestrzeni nie przejedzie. Dodatkowo przez parę dni obserwuj jakie pliki wymiany są "na codzień", a jakie przy graniu i odpowiednio dobrać wielkości.