Devo ancora usare la memoria virtuale?


14

Avrei pensato che fosse già stato chiesto, ma non riesco a trovarlo.

A che punto non ho più bisogno della memoria virtuale abilitata? Con 4 GB di RAM vedo che il computer raramente lo utilizza ovunque vicino a tutto questo. A quel punto la memoria virtuale non è strettamente necessaria. C'è pericolo nel spegnerlo? Ci sono funzioni che perderò se lo faccio?


1
Attenzione: ai driver è disponibile solo una quantità limitata di memoria, denominata sezioni memoria memoria non-pagede pagedpool . Un file di paging è necessario quando la sezione di paging si riempie, da giocatore ho visto un gioco lamentarsi della memoria del pool di paging solo perché il mio file di paging era disabilitato su un sistema da 8 GB. Conclusione: i file di paging sono necessari, impediscono l'esaurimento del pool di paging e velocizzano il sistema.
Tamara Wijsman,

Risposte:


9

Poiché la memoria non è più esattamente una risorsa scarsa sui PC desktop / laptop, dubito che la maggior parte dei programmi sia in grado di gestire le condizioni di memoria insufficiente e che invece si blocchi.
Quindi: pericoloso? Sì , se i tuoi 4 GB sono esauriti in qualche modo e non hai file di paging, le applicazioni potrebbero iniziare a bloccarsi.
E come mostrato nell'esempio di Zoran, potrebbe essere difficile identificare il problema in un secondo momento.

L'articolo, a cui si riferisce Ram, afferma anche che disattivare lo scambio di solito non migliora la velocità e può invece fare il contrario :

Quindi, mentre potrebbero esserci alcuni carichi di lavoro che funzionano meglio senza file di paging, in generale avere uno significherà che sarà disponibile più memoria utilizzabile per il sistema


Dovrò scavare l'articolo sul sito di MS, ma MS dice che dovresti sempre avere un file di paging. Anche su sistemi ad alta memoria, non averne uno può rallentare la macchina.
Keltari,

10

Vedi l'articolo di Mark Russinovich sulla memoria virtuale. Questo dovrebbe darti un buon puntatore sulla memoria virtuale.

Ecco un estratto utile dal link

Quindi, come fai a sapere quanta commissione di commit richiedono i tuoi carichi di lavoro? Potresti aver notato negli screenshot che Windows tiene traccia di quel numero e Process Explorer lo mostra: Peak Commit Charge. Per dimensionare in modo ottimale il tuo file di paging, dovresti avviare tutte le applicazioni che esegui contemporaneamente, caricare i set di dati tipici e quindi annotare il picco di addebito del commit (o guardare questo valore dopo un periodo di tempo in cui sai che è stato raggiunto il carico massimo) . Impostare il minimo del file di paging su quel valore meno la quantità di RAM nel sistema (se il valore è negativo, selezionare una dimensione minima per consentire il tipo di dump di arresto anomalo per il quale si è configurati). Se vuoi avere un po 'di respiro per richieste di commit potenzialmente grandi, imposta il massimo per raddoppiare quel numero.


+1 per riferimento Mark Russinovich. Sempre un'ottima lettura.
mrduclaw,

3

Questo post classico su ServerFault ha alcuni punti positivi. Per soli 4 GB lascerei da solo il file di paging e lo spazio sul disco è comunque ridotto.


3

Consiglio di lasciare le impostazioni della memoria virtuale ai loro valori predefiniti. Ho 8 GB di RAM e ho disattivato la memoria virtuale pensando che avrei guadagnato in velocità (a causa di nessuno scambio), ma si è scoperto che ha reso il mio sistema meno stabile (e l'ho fatto su 2 macchine, risultato simile). Stavo sperimentando un BSOD a settimana circa, su entrambe le macchine. Ho iniziato a esaminare i minidump prodotti e ho scoperto che tutti i BSOD sono stati attivati ​​da una chiamata a una routine chiamata KiPageFault. Quindi ho provato a riportare le impostazioni della memoria virtuale ai loro valori predefiniti e i normali BSOD sono scomparsi.

Mi ci è voluto un po 'per correlare il 2 e non ho prove concrete del fatto che il fatto di aver spento la memoria virtuale abbia causato i BSOD, ma le mie macchine erano più stabili dopo averlo riacceso ...


Grazie. È bello ascoltare risultati reali e non solo supposizioni.
Steve Rowe,

0

Dipende dal carico di lavoro. Ho creato un sacco di frontend diskless per un'applicazione web. Si sono avviati in rete e hanno eseguito tutto il necessario entro 8 GB di RAM.

Ho anche usato Windows (98 probabilmente) con 32 MB e nessun file di paging - ovviamente devi vivere in quello spazio di memoria e limitare le tue app per adattarle alle risorse.

Vuoi assicurarti che ci sia della RAM aggiuntiva per la cache del disco, altrimenti le prestazioni possono diventare orribili.

Mi sembra di ricordare che ci sono alcuni programmi che non funzioneranno senza VM, ma non ho idea di cosa fossero


-2

Bene, Steve, interessante che dovresti chiederlo.

Ti dirò un piccolo segreto: il punto in cui avevi bisogno della memoria virtuale non è mai stato. La memoria virtuale era un'idea follemente incompetente creata da un gruppo di accademici che non conoscevano i sistemi di calcolo pratici e QUALSIASI computer funzionerà molto meglio se può funzionare senza VM.

Ora, potresti chiederti, se la VM è inutile e dannosa, perché la usano la maggior parte dei grandi sistemi operativi moderni? La risposta breve a questa domanda è che le persone che decidevano se usare la VM o meno in Microsoft, Apple e IBM erano ancora più stupide e inesperte rispetto agli accademici che inventarono la VM e volevano adottarla sulla base delle stesse, completamente errate ipotesi che il gli accademici l'hanno inventato. Potremmo iniziare a parlare di questi presupposti e idee sbagliate, ma sfortunatamente, se fossero facili da capire e descrivere non avremmo il problema della VM in primo luogo.

Tornando da te. Sfortunatamente, proprio come i suddetti tardnoggin di Apple e Microsoft, hai le tue idee sbagliate, vale a dire l'idea che puoi disattivare la VM. Certo, non puoi spegnerlo, ciò vanificherebbe l'intero scopo di fregarti se potessi semplicemente spegnerlo. Quando le persone fanno qualcosa di veramente stupido, si assicurano sempre che sia irreversibile. Dopotutto, se tutti potessero semplicemente spegnere la VM, lo farebbero e ciò renderebbe i bozos che l'hanno creata un aspetto piuttosto stupido, no? Hanno impedito questa possibilità rendendola inamovibile, un po 'come Microsoft ha reso Internet Explorer inamovibile.

Quello che puoi fare è limitare la dimensione del file di paging, che ovviamente dovrebbe essere impostato su qualunque sia il minimo, si spera 0. La memoria virtuale è ancora lì, ma almeno puoi ridurla da molto molto molto lentamente a solo molto molto rallentando chiedendogli di non coinvolgere l'unità disco nella follia.


La memoria virtuale consente molte cose buone. Se non si disponesse di memoria virtuale, sarebbe necessario disporre di RAM sufficiente per contenere ogni byte di codice e dati definito da ogni processo sul sistema, indipendentemente dal fatto che sia stato effettivamente referenziato. Poiché la maggior parte dei programmi impiega il 90% del proprio tempo utilizzando il 10% del proprio codice e dei propri dati, ciò sarebbe un enorme spreco. Perderai anche molte altre cose utili, che il formato del commento qui non mi dà spazio per delineare. Il motivo per cui non abbiamo abbandonato la memoria virtuale è che è ancora una buona idea. Anche nei "sistemi informatici pratici".
Jamie Hanrahan,

@RickBrant Sembri gli idioti ingegneri elettrici di Intel e IBM che devo ascoltare negli anni '80 cercando di spiegare perché VM fosse una buona idea. Ricordo quando IBM uscì con OS / 2, che fu il primo sistema operativo danneggiato dal cervello con VM, dovendo ascoltarli spiegare perché fosse una così grande idea. Bene, grazie a dio OS / 2 è morto, ma sfortunatamente VM ha continuato a funzionare, come uno zombi, quindi eccolo qui 2017 e sto ancora ascoltando questa assurdità. Scommetto dollari per le ciambelle che non hai un CS, voi? Questa è la parte scherzosa. Il 99% dei ragazzi che promuovono VM non sono programmatori
Tyler Durden il

In realtà ero un doppio maggiore, CS / EE, in una delle migliori scuole di tecnologia della costa occidentale. Oggi sono principalmente un programmatore, ma interagisco con i tipi di hardware. Ora, hai una confutazione convincente al punto che sarebbe molto dispendioso mantenere ogni ultimo byte di codice e dati che un programma definisce in RAM in ogni momento, che ne abbia bisogno o no? Perché la memoria virtuale lo evita. O continuerai con attacchi personali che equivalgono a "devi essere un idiota"?
Jamie Hanrahan,

Oh, e ri "OS / 2, che è stato il primo cervello del sistema operativo danneggiato con VM" Uhm, no, non da circa due decenni. Forse il primo sistema operativo ampiamente utilizzato per PC. (Ma non il primo per "personal computer".)
Jamie Hanrahan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.