Mesaje recente

Members
Stats
  • Total Posts: 17,786
  • Total Topics: 1,234
  • Online today: 340
  • Online ever: 340
  • (Today at 00:10)
Users Online
Users: 0
Guests: 299
Total: 299

Dimensiunea recomandata a fisierului de swap

Started by Rezul, 06 November 2006, 16:21

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Rezul

ModEdit: Split de aici.


sper sa nu fiu foarte off topic dar legat de memoria aia virtuala, nu stiu cum ar fi cel ma bine insa din ce am auzit:
min = 1,5 x mem. fizica
max = 2,5 x mem. fizica.

de ce nu stiu, dar meseriasii pe care-i stiu asa au zis.
si e mai bine pe C din cauza ca c-ul este de obicei pus mai aproape de centrul discului (asta e relativ in fc. de marimi) unde viteza hdd-ului de scriere/citire este maxima.

daca gresesc, imi cer scuze!

tcalexander

Au contraire, monsieur le Baron. Viteza liniară a unui punct de pe un disc in rotaţie creşte cu distanţa faţă de centru, deci este maximă pentru punctele aflate la periferia discului. Acum problema este în ce mod sunt ordonate sectoarele pe platane, şi asta numai firmwareul o ştie. Probabil cele mai mari şanse le ai cu o partiţie pusă la "coada" discului.
Hmm... iată un subiect interesant pentru teste. :fum:
Cât despre swapfile, AFAIK dimensiunea optimă este de 1,5xRAM pentru Windows; pe Linux ajung vreo 300-500 MB pentru orice cantitate rezonabilă de memorie (de la 256 MB în sus), iar pe alte sisteme de operare... habar n-am cum funcţionează mecanismele lor de swap, să spuie care o şti.
Would you like to ride on your own ass?

~Empathy~

Toate hdd-urile mai noi de 1994 au densitatea liniara a datelor variabila in asa fel, incat densitatea unghiulara variaza cu destul de putin. Astea cu "viteza mai mare la inceput/sfarsit" sunt mituri bazate pe faptul ca acum vreo 20 de ani chiar era adevarat, neexistand hdd-uri cu geometrie virtuala, ca acum.

Cat despre swap -- iarasi mituri. Valoarea optima este cea default a sistemului de operare, valoare stabilita dupa un algoritm complex si care conform altui algoritm este folosita de OS cand crede el de cuviinta. Orice alta valoare nu poate decat sa scada performanta.
We dance, and the music dies...

tcalexander

OK, aia cu viteza o înţeleg, nu mă aşteptam nici eu să mai fie valabilă teoria aia. Da' cu swapul chiar sunt contrariat, din 2 motive:
1. Windows e Windows, şi setările lui default nu sunt tocmai cele mai inspirate, cel puţin din punct de vedere al performanţei. Aşa că nu prea l-aş crede pe cuvânt când spune că aşa cum pune el swapul e cel mai eficient.
2. Care e valoarea default a swapului pe Linux? Cât îşi ia el dacă la instalare îl las să partiţioneze automat discul? Nu prea cred că instalând două distribuţii pe acelaşi PC o să împartă la fel spaţiul (de testat). Apoi e şi povestea aia, că de la o anumită cantitate de memorie în sus, swapul devine practic inutil, fiind utilizat doar ca să se simtă bine mecanismul de paging din kernel.
BTW, cum se poate testa eficienţa diverselor configuraţii de swap? Există vreun benchmark pentru chestia asta?
Încă o chestie: care e algoritmul ăla - măcar la nivel de concept, nu vreau musai formulele.
Would you like to ride on your own ass?

~Empathy~

Quote1. Windows e Windows, şi setările lui default nu sunt tocmai cele mai inspirate, cel puţin din punct de vedere al performanţei. Aşa că nu prea l-aş crede pe cuvânt când spune că aşa cum pune el swapul e cel mai eficient.
De fapt, eu as avea deplina incredere in algoritmii folositi de windows pentru swap deoarece:
- in momentul in care modifici valoare folostita de el afectezi cacheul si bufferele, windows folosindu-se de swap in asa fel incat sa maximizeze cantitatea de cache/buffers in core.
- Oricum ar calcula Windows cantitatea de swap, el o calculeaza cumva -- tu nu poti decat sa experimentezi

Quote2. Care e valoarea default a swapului pe Linux? Cât îşi ia el dacă la instalare îl las să partiţioneze automat discul? Nu prea cred că instalând două distribuţii pe acelaşi PC o să împartă la fel spaţiul (de testat). Apoi e şi povestea aia, că de la o anumită cantitate de memorie în sus, swapul devine practic inutil, fiind utilizat doar ca să se simtă bine mecanismul de paging din kernel.
Intr-adevar ai dreptate aici daca vorbesti de desktop. Daca vorbesti de masini cu 16 procesoare si 64GB Ram care ruleaza baza de date Oracle sau altele de genul, Ram-ul fiind tot timpul ocupat cu date reale iar swapul la fel, este foarte important sa calculezi swap-ul ala cat de cat corect, sa nu dai in nici o extrema. In practica linuxul are valoarea de swappiness mult mai mica decat au alte OS-uri, deci lucrul acesta este mult mai putin important la linux. Un lucru important in linux ar fi ca swapul sa fie mai mare ca RAM-ul, pentru hibernation.

QuoteBTW, cum se poate testa eficienţa diverselor configuraţii de swap? Există vreun benchmark pentru chestia asta?
Încă o chestie: care e algoritmul ăla - măcar la nivel de concept, nu vreau musai formulele.
Nu cunosc benchmarkuri iar algoritmii de swap variaza de la kernel la kernel. Nu cunosc in detaliu nici unul.

De citit asta si consultat asta.
We dance, and the music dies...

IceCub

Valoarea ideala pentru swap este 0 (zero). Personal, am 768MB RAM iar swap-ul dezactivat (WinXP SP2).
Motivatie: memoria nefolosita inseamna bani irositi.

~Empathy~

Absolut gresit -- citeste ce sunt alea cache si buffere. Ideal este sa ai cat mai mult din memorie ocupata cu cache si buffere (asta pentu desktop).
We dance, and the music dies...

IceCub

Quote from: ~Empathy~ on 06 November 2006, 18:41
Absolut gresit -- citeste ce sunt alea cache si buffere. Ideal este sa ai cat mai mult din memorie ocupata cu cache si buffere (asta pentu desktop).

Inca nu am avut timp/rabdare sa citesc ce scrie acolo, dar la mine regula este simpla: memoria RAM este muuult mai rapida decat HDD-ul => atata timp cat am sufucienta memorie RAM Windows-ul meu nu are ce cauta cu swap-ul pe HDD. Ma imbolnavesc cand vad ca are 2-3-400 de MB RAM liberi iar el "ronţăie" aiurea la HDD.

adilehanceanu

Da, numai că nu sînt chiar aşa sigur că sistemul de operare foloseşte swap-ul din greu :), mai degrabă programele impun un swap minim; eu am 1 GiB de RAM şi totuşi Sound Forge face nazuri dacă swap-ul e sub 128 MiB. Referitor la dezactivare, pe Win 2000, chiar dacă-i spui că nu vrei, la restart îşi face el singur unul de 20 MiB (sigur XP-ul nu face la fel?).
The soul of computer technology

~Empathy~

QuoteInca nu am avut timp/rabdare sa citesc ce scrie acolo, dar la mine regula este simpla: memoria RAM este muuult mai rapida decat HDD-ul => atata timp cat am sufucienta memorie RAM Windows-ul meu nu are ce cauta cu swap-ul pe HDD. Ma imbolnavesc cand vad ca are 2-3-400 de MB RAM liberi iar el "ronţăie" aiurea la HDD.
Tocmai, este total irelevant dpdv al performantei daca in swap intra lucruri folosite sa zicem... o data la 2-3 minute in schimb ram-ul se umple de buffere si cache. Daca ram-ul nu se umple de buffere si cache (care btw, nu sunt raportate decat partial de task managerul de windows) inseamna ca in loc sa iei dll-uri si fisiere din ram (care au ajuns acolo fie datorita faptului ca au fost folosite o data, fie datorita algoritmului magic de prefetcheing care chiar functioneaza superb) le iei de pe hdd... si hdd-ul caraie, si latenta creste.

Practic daca eu apas butonul de firefox mi se va deschide cvasi-instantaneu (0.1sec), tie iti va carai hardul :).
We dance, and the music dies...

IceCub

Quote from: adilehanceanu on 06 November 2006, 19:30
Referitor la dezactivare, pe Win 2000, chiar dacă-i spui că nu vrei, la restart îşi face el singur unul de 20 MiB (sigur XP-ul nu face la fel?).

Nu face. Nu am nici un fisier fagefile.sys pe HDD.

~Empathy~, e adevarat ca, "cârâie" HDD-ul la lansarea aplicatiei, si poate o lanseaza in 1-2 secunde, dar aste se aplica numai la prima lansare, dupa aceea merge instantaneu. Problema cred ca se schimba radical in momentul in care ai o gramada de aplicatii deschise si dai un simplu Alt+Tab pentru a face un switch intre aplicatii. O sa inceapa sa lucreze HDD-ul innebunit pentru ca intre timp Windows-ul a scos din RAM tot ce tinea de aplicatia care a stat in background cateva minute si a scris in swap file. Sa vezi tu veselie cand acea aplicatie care a stat in background e un client de mail in care ai o colectie de cateva mii de mailuri, o fereastra de Firefox cu "destule" taburi deschise sau un document Word cu 5-10 imagini scanate din care incerci sa faci un pdf pentru "tanti de la contabilitate".


~Empathy~

Aia se intampla deoarece dupa prima lansare binarul firefox + bibliotecile necesare (dll-uri) raman in cache :). Daca ai activat swap, atunci ai mai mult loc pentru cache si buffere. Eventual (banuiesc ca nu ai uptimeuri pe windows de saptamani, dar eu am) o sa iasa firefox din cache, daca nu mai ai memorie libera, in schimb, daca ai activat swapul si ai o cantitate mare de ram, va ramane mai mult timp acolo.

E inerent rau sa dezactivezi swapul deoarece windows (ca orice alt os) are niste algoritmi de MM care s ebazeaza pe existenta cache-ului. Exista un kernel thread care numara multe chestii printre care numarul de page swap-uri. Numar care trebuie sa fie pozitiv (hopa) dar mai mic decat X, unde X depinde de setari (ws / server). Daca tu dezactivezi swapul, algoritmul va gandi la fel, atata doar ca nu va avea loc sa faca  page swap, dar cum page swap-ul se face din MMU (transparent de threadul algoritmului de swapping)
te trezesti foarte frumos cu 2 fenomene:
- O sa ti se "curete" cache-ul singur si degaba
- O sa ti se mute pagini prin memorie tot degaba.
We dance, and the music dies...

IceCub

~Empathy~, apreciez faptul ca incerci sa-mi explici "stiintific" necesitatea existentei fisierului de swap, pe undeva stiu ca e adevarat ceea ce spui, dar eu tot nu-l voi dezactiva.  :D
Orice ar face windows-ul prin memoria RAM in lipsa swapului probabil se va desfasura mai rapid decat orice operatiune de I/O cu HDD-ul. Am constatat "empiric" faptul ca windows-ul ruleaza mai fluent (cel putin in cazul meu) cu fisierul de swap dezactivat. 

Pe de alta parte, sa iti explic stresul in care lucrez pe calculatorul de la scarbiciu, ca sa deduci de unde vine obsesia mea cu swapul: Duron 1300 cu 256MB RAM si WinXP SP2.
Meniul zilnic de aplicatii deschise permanent:
- Netscape Mail cu o colectie de cateva mii de mailuri < 10.000 - avid de memorie
- Word
- Excel
- Firefox - din considerente personale (www.SayIT.ro  :D, presa, etc.)
- IE6 - necesitate
- Y! Messenger - porcaria asta mananca 30-40 MB de memorie

De cateva ori pe zi sune nevoit sa deschid:
- programul scanerului
- Open Office - asta cred ca l-au scris cu picioarele pentru ca mananca la memorie cat 10 instante de MS Word, dar stie sa exporte in PDF.
- Acrobat Reader

Sa vezi cum se misca saracul calculator la un banal Alt+Tab... Practic, HDD-ul nu inceteaza sa lucreze toata ziua, iar cand vin acasa e o delectare sa pot naviga rapid si in liniste.
:drink:

~Empathy~

Acuma ca tot sa raspuns la intrebarea lui 27LIVIU, poate ar fi util un split la windows :).
We dance, and the music dies...

adilehanceanu

Quote from: IceCub on 06 November 2006, 21:03
...
- Y! Messenger - porcaria asta mananca 30-40 MB de memorie
...

Hm... Y! Mess 7.0.2.120 cu tema clasică la Appearance şi dezactivate toate bălăriile gen Insider şi Content Tabs îmi mănîncă ceva gen 24-25 MiB. Eu aş mai umbla pe la Startup şi pe la servicii şi poate n-o să te mai streseze chiar aşa tara swap-ul ăla  ;;)
The soul of computer technology

peizan

Sunt curios cum se comporta jocurile (ma refer la astea mari) in coditiile swap-ului dezactivat.

Ia sa fac niste teste  ;;)

Chipicao

Deloc bine. Am testat eu cu 1GB RAM din care 750 liberi, iar FarCry se blochează. Alt joc n-am mai încercat, dar nu cred ca Doom3 va zice "mersi". Aşadar, eu cred ca swap-ul e foarte important pentru jocuri.
Poate testează cineva nişte jocuri cu 2GB RAM şi swap dezactivat.
μή μου τούς κύκλους τάραττε

IceCub

Pai in momentul in care am de gand sa pornesc un joc (GTA SA de obicei - cam o data la 2-3 luni), activez in prealabil swap-ul.
Mai sunt momente, ca de exemplu atunci cand pornesc VmWare + Nero + Google Earth, in care Windows-ul ma avertizeaza ca "Virtual memory is too low!", dar asta se intampla o data pe luna.
Este clar ca nu ai cum sa rulezi jocuri cu swap-ul dezactivat, dar pentru activitatea de zi cu zi in Windows merge si fara swap.

Rezul

scuze pt. postul initial pus in alt topic (chiar daca era adiacent)
vorbim aici numai de desktopuri pt. ca serverele de obicei au un tel precis si trebuie optimizate pt. acel scop.
este evident ca, daca ai memorie fizica cu caruta, vm-ul este o greutate de picior (pt. ca oricat de putin ar scrie pe hdd, memoria este excesiv mai rapida)
daca ai jocuri care incarca in memorie tone de kb ai 2 variante: ori ai memorie fizica suficienta ori ai vm in care sa-ti incapa diferentele si ce mai vrea windoza sa bage. legat de viteza, evident ca daca iti permite marimea memoriei fizice sa lucrezi fara vm, este modul cel mai rapid.
dar decat sa dau restart mereu ca sa intru si sa joc ceva sau sa rulez nu stiu ce aplicatie de-mi roade memoria (pt. ca trebuie sa cresc vm-ul) mai bine il las acolo.
revin la intrebarea initiala; ca sa nu stau mereu si sa calculez cata vm imi trebuie pt. nu stiu ce, rata aceea de 1,5x la 2,5x (care nu e de la mine ci de la vreo 2-3 admini de sisteme profesionisti) vi se pare optima? in conditiile in care se lucreaza pe xp si ram-ul nu-mi permite sa ma distrez fara vm... :(

tcalexander

Păi în mare, threadul se poate rezuma în 4 idei referitoare la swapfile:
1. fără, dacă se poate (IceCub)
2. cum îl pune Windowsul (~Empathy~)
3. între 1,5 şi 2,5xRAM (tu)
4. fixat la 1,5xRAM (eu)
Ia de alege care-ţi place. Având în vedere că nu avem disponibil nici un benchmark, toate evaluările sunt teoretice şi/sau subiective, deci pune-l cum te simţi tu mai fericit şi gata. :)
Would you like to ride on your own ass?

Chipicao

Subiective mai ales! Contează în primul rănd ce faci cu PC-ul, nu? Pentru jocuri "înfometate" ai nevoie de un swap considerabil. La fel şi pentru unele aplicaţii (modelare 3D, poate chiar şi Photoshop).
În nici un caz nu cred că e bine să foloseşti opţiunea "System managed size". Windows va mări swap-ul atunci când are nevoie, iar asta înseamnă fragmentare.
μή μου τούς κύκλους τάραττε

adilehanceanu

Quote from: tcalexander on 08 November 2006, 14:41
Păi în mare, threadul se poate rezuma în 4 idei referitoare la swapfile:
1. fără, dacă se poate (IceCub)
2. cum îl pune Windowsul (~Empathy~)
3. între 1,5 şi 2,5xRAM (tu)
4. fixat la 1,5xRAM (eu)
Sau a cincea variantă, cum folosesc eu: 1/4 din RAM (256 MiB swap la 1GiB RAM)  :)
The soul of computer technology

ozzy

Tristetea mea aude nenascutii caini pe nenascutii oameni cum ii latra. Nichita Stanescu

peizan

La mine la ţară se foloseste swapfile la 1024MB ; Cica sa fie suma rotunda  ;;)

IceCub

Am gasit o chestie interesanta referitoare la problema fisierului swap.
Au aparut pe forumuri persoane ce au sisteme cu 4GB RAM si care sa plang ca Win XP 32bit sau Vista 32bit nu le recunoaste intreaga cantitate de memorie.
Aici e partea amuzanta: orice procesor care lucreaza in 32 bit mode va putea accesa maxim 4GB de memorie incluzand memoria virtuala.
Solutia este sa dezactiveze memoria virtuala.  :rotfl:

~Empathy~

QuoteAici e partea amuzanta: orice procesor care lucreaza in 32 bit mode va putea accesa maxim 4GB de memorie incluzand memoria virtuala.
Erm... nu. Cei 16GB Ram de la serviciu sunt o iluzie :crazy:. Al dracu Windows 2000 si Pentium 3.

Magistrala de adrese la xeon are 36bit.

Ceea ce voiai tu sa spui este ca orice proces are acces la un spatiu de adrese de 32bit, lucru ce deriva din pointerii pe 32 de biti.

Am auzit si eu multe povesti cum ca Windows nu se descurca cu 4GB Ram si alte mituri, dar a incercat cineva Windows 2003? Nu de alta dar la Windows XP e redusa artificial limita de 4GB. Sau inca ceva... a incercat cineva sa-i specifice kernelului de windows un parametru de boot in care specifica cantitatea de memorie?
We dance, and the music dies...

IceCub


paull

Hai sa-mi dau si eu cu parerea:
1. prefer fara swap (cand ma joc, lucrez in photoshop activez swap - e necesar)
2. daca nu se poate fara swap paging il fac fix. Cat ? in functie de aplicatia pe care o rulez in momentul respectiv (maxim 1 x cantitatea de memorie fizica)
3. mi-am incarcat kernelul in memoria fizica, se simte (in bine) la initierea first time a aplicatiilor  :P
4. am setat ca dll-urile care nu mai sunt folosite, sa fie sterse din memorie dupa incetarea aplicatiei, pentru ca memoria sa poata face mai rapid refresh-ul acelor "zone" ocupate anterior de dll-urile incarcate, astfel reducand latenta de acces a memoriei (ma refer la timpul pana la care ciclul de scriere/citire poate fi reluat din momentul in care informatia nu mai e necesara si timpul pana la care memoria sterge informatia si isi face refresh-ul)

Ps. toate tweak-urile astea le fac dupa un Chip mai vechi, de acum 2 ani parca, acolo era o rubrica care iti arata ce ar trebui sa modifici prin registri si de atunci cand reinstalezi Windows-ul, pentru a creste performanta pc-ului.
Orice efort al nostru este o calatorie in necunoscut, hranita de speranta intermitenta de a gasi un loc unde sa te poti odihni... (Friedrich Nietzsche)

~Empathy~

QuotePs. toate tweak-urile astea le fac dupa un Chip mai vechi, de acum 2 ani parca, acolo era o rubrica care iti arata ce ar trebui sa modifici prin registri si de atunci cand reinstalezi Windows-ul, pentru a creste performanta pc-ului.

De la numarul ala NU mai cupar eu chip-ul, cand am vazut ce aberatii pot scrie :crazy:.
We dance, and the music dies...

paull

Quote from: ~Empathy~ on 22 November 2006, 14:51
QuotePs. toate tweak-urile astea le fac dupa un Chip mai vechi, de acum 2 ani parca, acolo era o rubrica care iti arata ce ar trebui sa modifici prin registri si de atunci cand reinstalezi Windows-ul, pentru a creste performanta pc-ului.

De la numarul ala NU mai cupar eu chip-ul, cand am vazut ce aberatii pot scrie :crazy:.

Hmm, pai mai am luate de pe net tot felul de smecherii si tweak-uri pentru Windows si modificarile in registri sunt la fel...asa ca, eu merg in continuare cu acele tweak-uri si pot sa-ti confirm ca dau roade (asta o spun zecile de ore de teste in 3dmark-uri cu si fara acele setari din registri)
Orice efort al nostru este o calatorie in necunoscut, hranita de speranta intermitenta de a gasi un loc unde sa te poti odihni... (Friedrich Nietzsche)

Marmota

eu pe nenea vista...am facut o partitie de 2gigi si i-am dat-o lu vista asta sa isi faca de cap cu ea si vad ca ii place....

gallardo

Mi s-a parut interesant ce zicea Empathy... eu pana acum aveam swap de 2GB pentru 1GB RAM... asa ca am dezactivat swap-ul si ma bazez doar pe RAM... si dupa ce restartezi compu' nu vezi o imbunatatire... ca prima data cand rulezi un program tot de pe HDD trebuie sa-l ia... dar cand il rulezi si a doua oara... zboara! Si m-am jucat acum un Generals Zero Hour pe o harta mare cu 8 jucatori... si se misca mai bine decat inainte cand aveam swap. Concluzie... daca nu te joci la FEAR pe 1600x1200 cu detalii maxime sau ceva asemanator.... sau daca nu folosesti programe speciala mari mancatoare de RAM... iti ajung 1GB ca sa poti sa dezactivezi swap-ul. Mie imi place cum se misca acu', asa ca o sa-l las asa pana o sa vad prima oara mesajul cu "not enough virtual memory." :)

Parerea mea e ca ce zice Empathy e valabil... dar in acelasi timp programatorii s-au gandit si ca poate ai RAM mult si vrei sa dezactivezi swap-ul... asa ca au facut windozu' astfel incat sa stie sa puna buffer-ele si cache-urile in RAM in loc sa le puna in swap... dar nah... asta e parerea mea de nespecialist. Important e ca merge mai bine fara swap. :D

~Empathy~

Buffere si cache-ul sunt prin definitie in RAM, nu au unde sa fie altundeva.

Free memory is wasted memory.
We dance, and the music dies...