Stai usando un browser non aggiornato. Potresti non visualizzare correttamente questo o altri siti web. Dovreste aggiornare o usare un browser alternativo.
Semplicemente lo fa su ram.. Infatti se disattivi il paging su disco il commit limit corrisponde al quantitativo di ram che hai sulla tua macchina.. Scarica processo Explorer avviarlo e premi ctrl + i.. E vedrai tu i valori del commit charge ( memoria totale del sistema in uso) e commit limit ( memoria totale più paging)
Non fare per cherry picking, perchè ho aggiunto anche:
Il "commit charge" contiene... di tutto. Tecnicamente si tratta di memoria allocata con VirtualAlloc oppure con MapViewOfFile (e mi sembra altro); paged pool e non-paged pool sono sempre qui dentro. A questo valore va poi aggiunta la dimensione degli stack dei thread in kernel mode e le tabelle delle pagine; inoltre c'è lo spazio che potrebbe essere necessario in caso di future allocazioni (sempre relativo alla tabella delle pagine).
Il commit charge indica la dimensione potenziale che può raggiungere il page file, non l'utilizzo attuale; è la dimensione che verrebbe occupata se tutta la memoria virtuale impegnata venisse paginata sul disco, in pratica.
Il commit charge non può superare il commit limit.
C'è una cosa che non ho aggiunto in effetti prima: quando ho detto che "il commit charge non può superare il commit limit" non ho aggiunto una cosa importante: il "commit limit" ti mostra il valore di RAM+pagefile, ed è la memoria che può essere "committata" senza estendere il pagefile (che può crescere, come mi sembra di aver detto in un intervento precedente). Se il pagefile viene esteso, il limit cambia.
@DispatchCode visto che sembri uno dei pochi ferrato in materia, è vero che se disattivo il paging su disco Windows continua a usarlo ma non avendo il disco a disposizione utilizza la ram??
Io dai test che ho eseguito ho notato che con pagine disattivo dal disco esso continuava ad esserci
Bhe ti assicuro che tutti quelli che ti stanno rispondendo non stanno scrivendo perchè adorano digitare tasti sulla tastiera
Se disabiliti i paging files, quando la RAM è finita non può aumentare; questo comporta fallimenti nelle allocazioni di memoria successive e il passo che segue è un crash (BSOD).
Supponiamo che hai a disposizione 2GB di RAM ed hai un pagefile di 1GB, ok? Quando raggiungi i 2GB di memoria occupata inizia a scrivere sul disco. Raggiunto il limite (2+1 = 3GB) se il page file può crescere in automatico, lo farà (può essere disabilitato).
Poi non è tutto così netto: Windows può usare il pagefile anche in momenti precedenti alla saturazione della RAM; può ad esempio "decidere" che ciò che è in RAM e viene poco utilizzato può essere messo su disco, così da liberare spazio.
Insomma, il page file può essere usato anche con la RAM non satura. Anche questo è fatto per motivi di efficienza in quanto in caso di richieste da parte di nuovi programmi (ancora non caricati in memoria) esiste della RAM a disposizione.
Semplicemente lo fa su ram.. Infatti se disattivi il paging su disco il commit limit corrisponde al quantitativo di ram che hai sulla tua macchina.. Scarica process Explorer avviarlo e premi ctrl + i.. E vedrai tu i valori del commit charge ( memoria totale del sistema in uso) e commit limit ( memoria totale più paging)
Non è che lo fa sulla RAM; il valore sta a significare che non hai pagefile, e quindi il limite è dato dalla RAM stessa. E' una somma "RAM + pagefile (0)", che avrà quindi come totale la RAM.
Sul fatto che se lo togli non esiste, tu concedo il beneficio del dubbio perché non sono ancora convinto. Ma tutto il resto è realtà
Stavo riflettendo che se current limit uguale alla ram significa che page file non c'è ma viene usata la ram quindi effettivamente ci può stare
e confermo di non averne ma c'è un "piccolo dettaglio": io NON gioco quindi è impossibile che un qualunque processo mi divori da un secondo all'altro 10-12 GiB di RAM. Ho provato ad apritre TUTTE insieme le applicazioni che uso più o meno di frequente e per caricare di più anche una 50inna di pagine di browser, niente da fare non riesco a oltrepassare i 10 GiB, per l'uso che ne faccio il mio sistema non può andarmi nel messaggio "non c'è memoria sufficiente per eseguire paperino/pippo"
la memoria vincolata NON è virtuale ma reale ed allocata in una porzione di spazio che puo essere su disco (se attivo il file di paging su disco) oppure allocata nella ram!
no è sbagliato: in un sistema operativo tutto è memoria virtuale
virtuale NON significa memoria fisica necessariamente allocata/usata ma un insieme di numeri (indirizzi di memoria) che servono, o il sistema operativo prevede che serviranno, alle applicazioni in esecuzione
quando la dimensione dell'insieme di tutti gli indirizzi di memoria virtuale (tra allocata, vincolata, riservata ecc) eccede la dimesione della RAM + il file di paginazione è sicuro al 100% che non si possano aprire nuove applicazioni e/o che qualcuna di quelle in esecuzione deve essere terminata (eventualmente in modo forzoso dal sistema operativo)
se ci sono applicazioni che "pretendono" l'esistenza di un file di paging in assenza del quale rifiutano di avviarsi beh, spiacente ma sono programmate male, devono limitarsi a fare i loro compiti, la gestione della paginazione è compito del sistema operativo
in passato (non so se oggi è ancora così) c'erano applicazioni che occupavano uno spazio su disco usando a mo' di memoria virtuale (lo faceva Photoshop) ma è una cosa diversa dal paging
Sei tu a non comprendere che se la memoria vincolata non è altro che data dalla somma della RAM più file di paging.. Prova a vedere tu se elimini il file paging da disco cosa succede al valore della memoria vincolata
no è sbagliato anche questo: sul file di paging ci vanno a finire solo pagine di RAM occupate dalle applicazioni in esecuzione, non c'entra nulla lo spazio di indirizzi della memoria vincolata (ricorda: sono solo dei numeri binari); ripeto ancora una volta. la memoria vincolata non è RAM usata è un insieme di numeri più o meno grande che corrispondono a indirizzi (virtuali) di RAM che potrebbe essere richiesta
Windows pagina, per scelta di progetto, prima che la RAM si avvicini all'esaurimento. Non conosco le modalità precise ma di solito i sistemi operativi adottano la politica del Last Recently Used (= LRU =la memoria che è stata meno usata o il cui uso è più lontano nel tempo), presumendo che, se non è usata da tanto tempo probabilmente per altrettanto tempo non sarà usata, e quindi si può paginare, il che è opinabile.
Linux invece è molto più efficiente di Windows nell'uso della RAM e pagina per davvero solo se e quando serve.
Non fare per cherry picking, perchè ho aggiunto anche:
C'è una cosa che non ho aggiunto in effetti prima: quando ho detto che "il commit charge non può superare il commit limit" non ho aggiunto una cosa importante: il "commit limit" ti mostra il valore di RAM+pagefile, ed è la memoria che può essere "committata" senza estendere il pagefile (che può crescere, come mi sembra di aver detto in un intervento precedente). Se il pagefile viene esteso, il limit cambia.
Bhe ti assicuro che tutti quelli che ti stanno rispondendo non stanno scrivendo perchè adorano digitare tasti sulla tastiera
Se disabiliti i paging files, quando la RAM è finita non può aumentare; questo comporta fallimenti nelle allocazioni di memoria successive e il passo che segue è un crash (BSOD).
Supponiamo che hai a disposizione 2GB di RAM ed hai un pagefile di 1GB, ok? Quando raggiungi i 2GB di memoria occupata inizia a scrivere sul disco. Raggiunto il limite (2+1 = 3GB) se il page file può crescere in automatico, lo farà (può essere disabilitato).
Poi non è tutto così netto: Windows può usare il pagefile anche in momenti precedenti alla saturazione della RAM; può ad esempio "decidere" che ciò che è in RAM e viene poco utilizzato può essere messo su disco, così da liberare spazio.
Insomma, il page file può essere usato anche con la RAM non satura. Anche questo è fatto per motivi di efficienza in quanto in caso di richieste da parte di nuovi programmi (ancora non caricati in memoria) esiste della RAM a disposizione.
Non è che lo fa sulla RAM; il valore sta a significare che non hai pagefile, e quindi il limite è dato dalla RAM stessa. E' una somma "RAM + pagefile (0)", che avrà quindi come totale la RAM.
Beh ma se leggi i miei post era da ieri che cercavo di dire che la memoria vincolata equivale alla memoria totale in uso ma nessuno mi dava credito .. Pero ora ho capito anche il concetto di current limit ( ram più file page) e current charge
Sul fatto che se lo togli non esiste, tu concedo il beneficio del dubbio perché non sono ancora convinto. Ma tutto il resto è realtà
Stavo riflettendo che se current limit uguale alla ram significa che page file non c'è ma viene usata la ram quindi effettivamente ci può stare
Allora trovami il processo pagefile.sys sul pc quando togli il page file io aspetto
Quando il page file non c'è ovviamente tutto viene scritto in RAM questo non significa affatto che esiste un file di paging" non esiste proprio sul pc nè un file di paging nè un processo che fa riferimento a quello
In ram ci sono dati usare la paginazione significa proprio la scrittura al livello fisico di dati sul disco il che è anche diverso da confonbdere la dimensione del page file con quello che è effettivamente scritto sul page file
se ci sono applicazioni che "pretendono" l'esistenza di un file di paging in assenza del quale rifiutano di avviarsi beh, spiacente ma sono programmate male, devono limitarsi a fare i loro compiti, la gestione della paginazione è compito del sistema operativo
D'accordissimo, mala programmazione senza dubbio, purtroppo so per esperienza personale che a volte capita (o capitava almeno, ormai sono anni che non ho più provato a togliere il pagefile)
Stavo riflettendo che se current limit uguale alla ram significa che page file non c'è ma viene usata la ram quindi effettivamente ci può stare.
Ma se ti ho appena scritto che non c'è page file.. Ho riflettuto e alla luce di. Quanto emerso se il current limit quando disattivi il page file coincide col valore della ram allora non ce page file..
Ergo, se disattivi file di paging non avrai file di paging ma il sistema crash era non appena la memoria vincata ovvero commit charge raggiunge il quantitàtivo di ram.. Easy
Ergo, se disattivi file di paging non avrai file di paging ma il sistema crash era non appena la memoria vincata ovvero commit charge raggiunge il quantitàtivo di ram.. Easy
il punto è che questo succede in linea teorica all'atto pratico non è affatto detto che il sistema sia stabile se disattivi il file di paging.
il perchè `te lo abbiamo spiegato, possono esistere applicativi che richiedono il file di paging, possono esistere bug in windows che per qualche ragione in alcuni applicativi tenta di scrivere nel page file quando non esiste può succedere che un gioco o un applicativo sia programmato male o che gli stessi programmatori non abbiamo previsto che tu lo disattivi, combinazioni hardware e software diversi in cui una particolare condizione può portare a un comportamento "anomalo"
In linea teorica e del tutto teorica se oggi hai un buon quantitativo di ram il page file potrebbe anche essere disattivato, ma al livello pratico non è esattamente così.
Alla luce di quanto è emerso, dai test eseguiti e da quello che ha scritto @DispatchCode pissiamo dire che.. Col termine usato da Windows "memoria vincolata" si intende la memoria totale che il sistema sta usando e questo l'ho ampiamente dimostrato con i vari test inoltre esiste anche un termine che troviamo volendo sul programma process Explorer che si chiama commit limit.. Quello è il valore della ram più il page file, quindi per capire quanto file di paging stiamo utilizzando basta fare quel valore meno la ram totale presente nel nostro sistema
Stavo riflettendo che se current limit uguale alla ram significa che page file non c'è ma viene usata la ram quindi effettivamente ci può stare.
Ma se ti ho appena scritto che non c'è page file.. Ho riflettuto e alla luce di. Quanto emerso se il current limit quando disattivi il page file coincide col valore della ram allora non ce page file..
Ergo, se disattivi file di paging non avrai file di paging ma il sistema crash era non appena la memoria vincata ovvero commit charge raggiunge il quantitàtivo di ram.. Easy
Sì se la memoria vincolata (charge) supera la memoria totale ed il sistema non riesce a chiudere/scaricare nulla e non ha la possibilità di paginare su disco avrai dei crash
--- i due messaggi sono stati uniti ---
Quello è il valore della ram più il page file, quindi per capire quanto file di paging stiamo utilizzando basta fare quel valore meno la ram totale presente nel nostro sistema
Questo è il mio sistema in questo momento
Come vedi la "committed charge" è a circa 15 GB e la "Physical" è occupata ad 8 GB
Se fai la mera sottrazione ti viene un pagefile da circa 7 GB, ma come vedi Windows ha "attualmente allocata" 2,5 GB
D'altra parte, per come è impostato il mio pagefile neanche potrebbe allocare 7 GB nel pagefile perché lo ho forzatamente limitato a 4 GB io
Quindi?
Una parte di quella memoria "committed charge" è caricata sulla RAM ma windows non la considera in uso perché fa riferimento a quelle cose che il sistema ha deciso di caricare per averle pronte all'uso, ma non sono usate attualmente
Le "committed" sono quelle pagine mappate in RAM o su pagefile, che possono anche non essere allocate effettivamente (è stato però riservato questo spazio, quindi è probabile verrà poi usato).
Non so se hai conoscenze di programmazione, ma quando allochi della memoria in un programma non stai effettivamente occupando memoria fisicamente, la stai, diciamo così "prenotando": quando scrivi su quella memoria che hai richiesto (che nel frattempo avrà generato il famoso page fault, non essendo in RAM) allora Windows si occupa di mappare la nuova pagina nello spazio di indirizzi, e la memoria (RAM) sarà ora occupata.
Anche nel Limit, non si possono fare sottrazioni: il valore non tiene conto della memoria non-paged pool.
Per andare sul tecnico, ma collegandomi a quanto appena detto anche da @Ale3Mac : la memoria virtuale la si alloca con VirtualAlloc. Se chiami questa funzione passando come flag MEM_RESERVE, viene riservato quel quantitativo di bytes che hai richiesto; questa memoria però non è ancora fisicamente allocata! Non è in RAM, stai chiedendo di riservarti uno spazio.
Quando gli passi il flag MEM_COMMIT, stai dicendo di occupare fisicamente quella memoria.
Per fare un'analogia più semplice: avere della "committed charge" memory è come chiamare una pizzeria o un ristorante e prenotare un tavolo; il tavolo ti è stato riservato (il sistemao operativo sa dove "piazzare" la memoria che hai richiesto, ti ha trovato un posto), ma non è usato. Quando ti rechi sul posto, chiedi al sistema operativo di committare (MEM_COMMIT) e quindi occupi fisicamente il tavolo.
A proposito del discorso page file, la realtà è ancora un pò più complicata, poichè se un dato non è in RAM e genera un page fault, non è detto sia necessariamente sul pagefile, visto che ci sono diversi livelli di cache. TLB è uno di questi ad esempio, usata per evitare di ripetere la traduzione di un indirizzo. Quando viene caricata una pagina quelle adiacenti finiscono qui dentro, proprio poichè ci sono probabilità che vengano poi utilizzate "a breve".
Poi non so se è stato detto da qualche parte, mi perdonerà @BWD87 magari l'ha ripetuto anche più volte nel topic, ma il "Paging pool" e "Non paging pool" che si vede sul Task Manager sta ad indicare due memory pool usati dai driver e dal kernel. Il primo fa riferimento a quella memoria che può essere paginata, il secondo al contrario quella che deve assolutamente rimanere in memoria (e quindi è sempre in RAM). Così, giusto per completezza.
Mi è rimasto il tarlo di quanto grande dovrebbe essere il page file e di come viene calcolato, così sono andato a prendere al volo Windows Internals per guardare
Ho fatto direttamente 2 foto, le metto sotto spoiler vista la dimensione (le ho lasciate in alta qualità, così sono leggibili):
Come sempre è tutto molto semplice da ricordare dopo una prima lettura veloce :sarcasm:
Le "committed" sono quelle pagine mappate in RAM o su pagefile, che possono anche non essere allocate effettivamente (è stato però riservato questo spazio, quindi è probabile verrà poi usato).
Non so se hai conoscenze di programmazione, ma quando allochi della memoria in un programma non stai effettivamente occupando memoria fisicamente, la stai, diciamo così "prenotando": quando scrivi su quella memoria che hai richiesto (che nel frattempo avrà generato il famoso page fault, non essendo in RAM) allora Windows si occupa di mappare la nuova pagina nello spazio di indirizzi, e la memoria (RAM) sarà ora occupata.
Anche nel Limit, non si possono fare sottrazioni: il valore non tiene conto della memoria non-paged pool.
Per andare sul tecnico, ma collegandomi a quanto appena detto anche da @Ale3Mac : la memoria virtuale la si alloca con VirtualAlloc. Se chiami questa funzione passando come flag MEM_RESERVE, viene riservato quel quantitativo di bytes che hai richiesto; questa memoria però non è ancora fisicamente allocata! Non è in RAM, stai chiedendo di riservarti uno spazio.
Quando gli passi il flag MEM_COMMIT, stai dicendo di occupare fisicamente quella memoria.
Per fare un'analogia più semplice: avere della "committed charge" memory è come chiamare una pizzeria o un ristorante e prenotare un tavolo; il tavolo ti è stato riservato (il sistemao operativo sa dove "piazzare" la memoria che hai richiesto, ti ha trovato un posto), ma non è usato. Quando ti rechi sul posto, chiedi al sistema operativo di committare (MEM_COMMIT) e quindi occupi fisicamente il tavolo.
A proposito del discorso page file, la realtà è ancora un pò più complicata, poichè se un dato non è in RAM e genera un page fault, non è detto sia necessariamente sul pagefile, visto che ci sono diversi livelli di cache. TLB è uno di questi ad esempio, usata per evitare di ripetere la traduzione di un indirizzo. Quando viene caricata una pagina quelle adiacenti finiscono qui dentro, proprio poichè ci sono probabilità che vengano poi utilizzate "a breve".
Poi non so se è stato detto da qualche parte, mi perdonerà @BWD87 magari l'ha ripetuto anche più volte nel topic, ma il "Paging pool" e "Non paging pool" che si vede sul Task Manager sta ad indicare due memory pool usati dai driver e dal kernel. Il primo fa riferimento a quella memoria che può essere paginata, il secondo al contrario quella che deve assolutamente rimanere in memoria (e quindi è sempre in RAM). Così, giusto per completezza.
Mi è rimasto il tarlo di quanto grande dovrebbe essere il page file e di come viene calcolato, così sono andato a prendere al volo Windows Internals per guardare
Ho fatto direttamente 2 foto, le metto sotto spoiler vista la dimensione (le ho lasciate in alta qualità, così sono leggibili):
Come sempre è tutto molto semplice da ricordare dopo una prima lettura veloce :sarcasm:
Ma se il commit charge ovvero memoria vincolata è la memoria totale che il sistema sta utilizzando, può essere allocato come no ma è cmq indispensabile per far funzionare l'intero sistema in modo stabile, infatti appena viene superata in assenza di file di paging il sistema crasha
--- i due messaggi sono stati uniti ---
Infatti quando facevo i test con file di paging disattivo, il sistema andava in crash non appena la commit charge raggiungeva 16 Gb e non la ram.. La ram utilizzata in quel momento era a 9/10/11 GB( a seconda dei casi), da lì ho dedotto che quello che windows chiama memoria vincolata è la memoria di sistema ovvero quella memoria che serve a far girare in modo stabile la macchina. Che sia allocata o non allocata o dove sta poco importa, la cosa che realmente conta è che quella memoria serve per far girare la macchina, senza quel quantitativo la macchina non gira
@Valeriooo No aspetta Vale, il discorso che hai fatto è in parte giusto, nel senso che se disattivi il file di paging, lo disattivi sul serio. Quindi che succede, che il sistema alloca tutto nella ram, sempre considerando tutto lo spazio come memoria virtuale, scrivendoci appunto indirizzi virtuali. Il problema è che quando finisce la ram, l'app che richiede più spazio da allocare crasha (vedi tutti i giochi che hai testato)
@Liupen nell'esempio di gta5 con paging disattivo, è vera solo una conclusione, che gta5, insieme al SO compreso di tutte le app in esecuzione, richiede più di 16GB di spazio libero in memoria virtuale (che sia fatta solo di ram o ram+paging); ecco perchè senza paging gta5 crasha, dato che si ritrova lo spazio esaurito.
In particolare di gta5, lo natai addirittura nel 2016 quando fu per la prima volta che ebbi 16Gb di ram nel pc ed avevo disattivato il paging (essendo sicuro che all'epoca sarebbero bastati per tutti i giochi in quel momento, mio malgrado sbagliando). Facendo prove e contro prove, con mio grando stupore, riscontrai che era proprio la memoria virtuale ad essere finita e la potevo compensare soltanto riattivando il file di paging! A quel punto con il paging attivo potetti giocare per ore senza alcun crash da parte di gta5. Per curiosità sono rientrai a dare un occhio in gestione attività ed in vincolata avevo ben 17,5GB (me lo ricordo limpido ancora). A quel punto constatai che era il primo gioco a far sforare la memoria virtuale oltre i 16GB commissionati! Non persi tempo ad ordinare altri 16GB di ram io è dal 2016 quindi che sto con 32GB di ram!
Tuttavia tengo il paging attivo, perchè effettivamente ci sono alcuni programmi che lo richiedono a prescindere pur avendo ram fisica disponibile, pena crash del programma stesso alcune volte; io ho il paging settato a 16MB min e 30000MB max, quindi appena acceso il pc parte con il minimo di 16MB il paging; mi è capitato di notare alcune volte che, pur avendo 32GB di ram, il paging viene scritto ed ampliato comunque, anche se di poco, tipo può arrivare a 100/200MB. Il paging quindi serve anche se si ha tanta ram fisica disponibile
@Valeriooo No aspetta Vale, il discorso che hai fatto è in parte giusto, nel senso che se disattivi il file di paging, lo disattivi sul serio. Quindi che succede, che il sistema alloca tutto nella ram, sempre considerando tutto lo spazio come memoria virtuale, scrivendoci appunto indirizzi virtuali. Il problema è che quando finisce la ram, l'app che richiede più spazio da allocare crasha (vedi tutti i giochi che hai testato)
@Liupen nell'esempio di gta5 con paging disattivo, è vera solo una conclusione, che gta5, insieme al SO compreso di tutte le app in esecuzione, richiede più di 16GB di spazio libero in memoria virtuale (che sia fatta solo di ram o ram+paging); ecco perchè senza paging gta5 crasha, dato che si ritrova lo spazio esaurito.
In particolare di gta5, lo natai addirittura nel 2016, quando fu per la prima volta che ebbi 16Gb di ram nel pc ed avevo disattivato il paging. Facendo prove e contro prove, con mio grando stupore, riscontrai che era proprio la memoria virtuale ad essere finita e la potevo compensare soltanto riattivando il file di paging! A quel punto con il paging attivo potetti giocare per ore senza alcun crash da parte di gta5. Per curiosità sono rientrato a dare un occhio in gestione attività ed in vincolata avevo ben 17,5GB (me lo ricordo limpido ancora). A quel punto constatai che era il primo gioco a far sforare la memoria virtuale oltre i 16GB commissionati! Non persi tempo ad ordinare altri 16GB di ram io è dal 2016 quindi che sto con 32GB di ram!
Tuttavia tengo il paging attivo, perchè effettivamente ci sono alcuni programmi che lo richiedono a prescindere pur avendo ram fisica disponibile, pena crash del programma stesso; io ho il paging settato a 16MB min e 30000MB max, quindi appena acceso il pc parte con il minimo di 16Mb il paging, mi è capitato di notare alcune volte che, pur avendo 32GB di ram, il paging viene scritto comunque, anche se poco, tipo può arrivate a 100/200MB. Il paging quindi serve anche se si ha tanta ram fisica disponibile
Giustissimo!
Infatti poi ho analizzato meglio tutta la questione legata al paging ed effettivamente quando lo disabiliti non lo usi più né in disco né in ram, usi solamente il quantitativo di ram e appena sfori vai in crash, pero è bene tenere a mente che il quantitativo di memoria che si sta usando in quel momento non è dato dalla ram in uso ma dalla memoria vincolata!! Infatti i miei test volevano dimostrare sopratutto questo.
Spero di essere stato utile per la comunity