giovedì 25 ottobre 2012

Sugli SSD, il ramdisk, il pagefile e tutto quanto… parte III

Incredibile vero ? Chi l’avrebbe mai detto che un giorno sarebbe arrivata anche la parte 3..
Mi piacerebbe vantarmi e dire che tutto il tempo che separa questo post dalla precedente parte II e’ stato speso a testare, leggere, studiare e provare le varie configurazioni… ed infatti e’ proprio cosi’ !!!111one
O almeno lo e’ in parte
Diciamo un 10%
Grossomodo… (a Chinatown)
Insomma il tempo non e’ importante, solo la vita lo e’ (cit.)
Quindi si, abbiamo una risposta definitiva: 42 !
E’ la domanda quella che cerchiamo: che cos’e’ Matrix
Sto divagando con le citazioni, torniamo sull’argomento principale. La parte II si concludeva col tenue dubbio se mettere il pagefile su ramdisk o no.
Bene, dopo tutto questo tempo la risposta e’ NO, nien, nada, kaputt, N O
In giro se ne leggono di cotte e di crude, storiche amicizie si son distrutte nei forum in cui si tratta quest’argomento. Interi trattati sono stati scritti dalle piu’ acute menti che internet possa generare eppure cosi’ come potrai trovare 1000 buoni motivi per avere o meno il pagefile (gia’ discusso nella parte II) altrettanti motivi (validi e non) li potrai trovare sullo spostamento del pagefile nel ramdisk.
Io vi riporto solo le parole di Mark Russinovich :
“Yes, putting the pagefile on a RAM disk is ridiculous.”


il quale risponde cosi’ alla mail di un giocondo geek:
”Subject: Page file on a RAM disk
Hey Mark! I was wondering if I could potentially ask you a question regarding the page file? I have quite an understanding of how Windows manages memory and how the page file contributes to things like system commit, etc, but time and time again I see the recommendation to place your page file on a RAM disk.
This just seems counter-intuitive to me, and if one of the roles of the page file is defining the system commit limit, then doesn't it seem silly to extend the amount of virtual memory that can be allocated by allocating virtual memory (which is what the RAM disk driver would have to do...)?
What could be other potential repercussions of storing the page file on a RAM disk?
Hope you can spare 5 minutes or so... I bet you're working hard on Windows Azure!
Cheers!”

Ora potrete dirmi “ekkikazz’e’ Mark Russinovich?”, il dubbio e’ lecito… per questo ho linkato il suo nome direttamente alla Wiki. Ad ogni modo se siete dei cinesi di Jesi e non volete il tl;dr sappiate che e’ un Ph.D in computer engineering e lavora al soldo della Microsoft dopo aver creato migliaia di fantastiche utility nel sito sysinternals, sua societa’ che e’ stata poi inglobata da Microsoft. Questo simpatico ragazzone scrive anche su un blog in cui espone il suo punto di vista su vari aspetti di windows. Uno di questi post parla anche in maniera approfondita del pagefile e di come funziona il processo di gestione della memoria nei vari windows, 32 e 64bit. Interessante come dica: “si ok, se avete tanta ram e sotto stress non raggiungete il limite di sistema (commit charge) potete anche toglierlo ma meglio comunque lasciarlo perche’ il sistema ci mettera’ le pagine non usate o in standby e ci sara’ quindi piu’ RAM disponibile per le applicazioni” ipse dixit
Insomma Mark e’ un fottuto Guru con la G maiuscola e se dice che mettere il pagefile sulla ram e’ una stronzata.. be’ crediamoci.
E poi dov’e’ la logica in tutto questo? Immaginiamo un pc con 16GB di ram, potremmo dedicare 4GB al ramdisk e piazzarci sopra il pagefile. Su questo pagefile andrebbero le pagine dei processi in standby, inusati, inattivi o salcazzo. Nel momento in cui spariamo un gioco alla massima potenza, la richiesta di RAM libera cresce. Il sistema percepisce lo sforzo e libera la RAM spostando piu’ roba possibile sul pagefile. Il problema e’ che il pagefile e’ sulla RAM stessa O_o
So wtf ? Ok che i cicli di lettura/scrittura sono brevissimi quindi i dati si spostano piu’ velocemente da RAM a RAM ma.. che cazzo di senso ha ? Peggio ancora se non ho 16GB di RAM ma ne ho molta meno, 4 per esempio. Dedicare 1GB al ramdisk per metterci il pagefile e’ una stronzata galattica, visto che il PC farebbe fatica a gestire un gioco al massimo dettaglio con “3”GB di RAM disponibile, cercherebbe in tutti i modi di liberarla spostandola sul pagefile e ci sarebbe un volume mostruoso di cicli lettura/scrittura tra ram che finirebbe per fare da tappo a tutto il resto del sistema.
Ok allora togliere il pagefile del tutto ? Anche qui molta gente con 8 o 16GB pensa sia “meglio” per Windows farlo lavorare senza pagefile guadagnando in prestazioni.
Fortuna che qualcuno su internet ha voluto toccare con mano i reali benefici e ha condotto test sui piu’ svariati programmi usando una volta il suo pc col paging e una volta il suo pc senza il paging.
Trovate tutte le prove qua ma se non volete leggere vi dico gia’ che a livello di prestazioni non cambia un cazzo. Decimi di secondo, a volte millesimi.
“Insomma in definitiva che cazzo devo fare? di che minchia parli in sto post?”
In definitiva devi farti le tue misure come t’ho spiegato nella parte II. Vedere quante sono le richieste di applicazioni nel tuo sistema in base a quali programmi lanci e usi. Una volta che misuri il picco di carico puoi calcolarti quanto pagefile avere.
Oltre a questo consiglio, come parlato nella parte I, per chi ha un SSD di verificare quali sono i file che continuano a cagare il cazzo con I/O e spostarli da qualche altra parte (ovviamente Hard Disk a testina classico) col comodo Link shell exstension (c’e’ il link nell’altro post).
Consiglio anche di farsi un ramdisk piccolino (sui 500MB) dove mettere la cache di firefox e il suo profilo. Dataram ramdisk e’ gratis se usato per creare dischi fino a 4GB, molto veloce e permette di essere salvato/caricato ad ogni riavvio della macchina. Io lo uso da anni e c’ho sopra la cache si ffox piu’ i log di alcuni programmi che ogni secondo devono scrivere cosa stan facendo. Son 500MB di file immagine che ad ogni riavvio si crea e si ricarica ma non influenzano minimamente le tempistiche di accensione del mio pc. Se non volete il programma della Dataram potete usare il nuovo e gratuito (da poco) ramdisk di softperfect ammesso che salvi il suo disco ad ogni riavvio (non c’ho guardato). Qui c’e’ una recente comparativa di tutti i principali software di ramdisk, gratuiti e non. Non so cosa facciate al vostro pc ma volendo potete anche non voler salvare l’immagine ogni volta (per esempio una disco di RAM per le cartelle temp di windows), oppure potete scriptarvi winrar che ad ogni spegnimento si salva il contenuto del vostro disco di RAM da n’altra parte e ad ogni accensione ce lo riscompatta dentro… cosi’ anche i software che non prevedono il salvataggio sono fregati ;-)

Piccola parentesi: Per il calcolo del Pagefile Mark propone il suo sistema basato sull’osservazione del Commit Charge Peak espresso in K. Quest’informazione la trovate usando il Process Explorer (la solita utility da pochi KB di sys internals dalle potenzialita’ disumane) semplicemente lanciando l’exe, andando su “View” e su “System Information” e da li nel tab “Memory”

il mio peak mentre sto scrivendo questo post

La quantita’ di pagefile che consiglia e’ data dal valore del Peak meno la vostra RAM. Se e’ negativo, dategli comunque un minumo per far felice Windows ed eventuali applicazioni. Per arrivare al Peak, lanciate il process explorer e poi usate il pc con i peggio giochi e le peggio applicazioni (anche tutte assieme). Stressate il sistema il piu’ che potete e fatevi i conti. Il convertitore da K a MB e GB lo trovate qua. Azzardo un po’ di presunzione nel dire che se dovessi fare questa prova sul mio otterrei quello che ho visto con la precedente misurazione che m’ha portato a settare il mio pagefile a 2048MB nonostante i miei 16GB (e son stato largo anche).
Ciaps

3 commenti:

Myab ha detto...

beh alla fine sono le stesse conclusioni alle quali ero arrivato io coi miei test più o meno spannometrici.
non ha senso occupare ram per non fare usare ram al pc, non ha senso avere un ssd e non metterci il pagefile e non ha senso levare del tutto il pagefile anche se i problemi potrebbero essere solo teorici.
rimane da valutare il ramdisk appunto per quanto riguarda i browser, più che altro su macchine datate e senza ssd, a meno che lo scopo non sia alzare notevolmente la privacy, con la scomparsa di "buona parte" delle tracce di navigazione.
In un'immagine di ramdisk vuota, che si ricrea da capo ad ogni riavvio, però nn si può mettere anche il profilo, ma solamente la cache (esattamente come fai tu).

io in realtà avevo provato proprio a settare firefox in modo che profilo, pagine da avere all'apertura e cache rimandassero tutto alla cartella firefox, trasformandolo in pratica in una versione standalone/portable, e mettendo poi la suddetta cartella nel ramdisk.
Provata la cosa sia su notebook core2duo hd 5400rpm, sia su un desktop i7 ssd. Per me che faccio aprire ffox praticamente sempre con 10 o più schede aperte la differenza sul notebook era sensibile sia in avvio sia in navigazione, così come altrettanto sensibile però era lo sbattimento del caricare salvare l'image del ramdisk in avvio/chiusura win.
Con le prestazioni del fisso i vantaggi mi sono sembrati trascurabili, pur non potendo mettere la cache sul ssd, mentre gli svantaggi rimangono(anche qui non potendo far salvare la iso sull ssd)
Le ultime versioni di ffox poi hanno incredibilmente migliorato l'apertura in avvio multischeda (una delle cose che mi preme di più), caricandole effettivamente solo quando selezionate.
Con la iso vuota ad ogni boot e la cache "fuggevole" c'è sicuramente il vantaggio privacy, ma sarò paranoico io (anche qua valutazione più a sensazione che reale), ma mi sembra sensibile la differenza tra la prima apertura di una pagina cachata e quella di una non. Anche se bisogna dire che si sta probabilmente parlando di frazioni di secondo una volta al giorno/reboot...

Giacomo ha detto...

+1 a myab.

c4os ha detto...

no ma io non c'ho messo solo la cache. Ho messo profilo e cache e ad ogni riavvio il contenuto del ramdisk viene salvato e ricaricato. Ho due partizioni per gestire la "munnezza", una il ramdisk e l'altra nel raid0 con le cartelle TEMP e TMP piu' appunto l'iso del ramdisk che si salva/carica ad ogni riavvio. That's all
Navigare su ramdisk e' piu' "snello", tutti i log, tutti gli aggiornamenti al dbsql di ffox sono tutti gestiti su ramdisk con buona pace dei miei hd