Qual è la soglia "bassa memory" con 16 GB x 64 windows?

EDIT4 Ora abbiamo una risposta. Grazie per tutti coloro che hanno partecipato alla prova e, naturalmente, quelli che sottopongono la domanda.

Con 8 GB o 6 GB di Windows 8.1 x64 si ottiene un avviso di memory insufficiente se la RAM gratuita scende al di sotto del 20% della quantità totale di RAM di sistema (rispettivamente 1,6 GB e 1,2 GB) e non c'è più spazio nel file di pagine. Se lo spazio file di pagina è disponibile, la memory fisica verrà assegnata in file di pagina per mantenere la riserva del 20% o della RAM. Quindi, se stai giocando a Skyrim con un sacco di mod e ricevi un avviso di memory ridotta, probabilmente vedrai che il file di pagina è completamente pieno e un po 'less del 20% di RAM è disponibile.

Qualcuno ha provato che cosa è il limite con una macchina per windows da 16 GB? Si estende senza limiti, vale a dire che avresti ricevuto un avviso di memory ridotta a 3,2 GB?

Il modo più semplice per provarlo è distriggersre completamente il file di pagine o impostarlo a un valore basso (come 1GB) e quindi avviare diverse applicazioni con utilizzo di memory elevata e / o semplicemente utilizzare questa piccola utility: http: //www.soft.tahionic. com / download-memalloc /

Provo questa prova, ma non ho accesso a un PC con un RAM di 16 GB (o più!).

In Win8.1 la figura di utilizzo della memory reale è un po 'più difficile da vedere mentre il monitoraggio delle performance non ti mostra l'utilizzo di un file di pagine. Ma il task manager ti dà il valore "impegnato" che mostra la memory totale in uso (incluso il file di pagina)

Modifica: le informazioni sul sistema di esplorazione di process sono probabilmente le migliori per monitorare la modalità di utilizzo della memory. Commit charge e limit è il bit pertinente qui, se non si dispone di un file di pagina, Commit limit = RAM e si dovrebbe get un avviso di memory ridotta quando si ottiene ~ 81% carica.

Edit2: per renderlo ancora più inequivocabile, ecco un pseudocode per i due casi che chiedo

Caso A nessun limite quanto la memory libera minima (carica di commissione disponibile) può aumentare prima che venga emesso un avviso:

if (CC/CL) > 0.8 then print "low memory warning" 

Caso B La memory libera minima (carica di commissione disponibile) è limitata ad un certo valore assoluto e non viene emesso alcun avviso prima che venga attraversato:

 if (CC/CL) > 0.8 and if (CL-CC) < 2048MB then print "low memory warning" 

Edit3: si scopre che Windows 10 compresse la memory quando si esegue abbastanza basso sulla RAM effettiva. Questo rende questo test più difficile da eseguire. Potresti ancora scaricare il ram disponibile per essere sicuro, ma le windows comprimeranno malloc con valori zero in modo abbastanza efficiente. In Win8.1 x64 e prima è un task semplice.

C'è qualche malinteso qui che vorrei chiarire, per l'OP.

La risposta di David Schwartz, pur non completa, è certamente accurata, tuttavia vorrei aggiungere a ciò che ha detto.

@OP nel 2011 il mio datore di lavoro mi ha incaricato di trovare una risposta a questa domanda.
Dopo circa 3 m di test hardware e ricerche approfondite, l'ho trovato.

Non ha niente a che fare con il file di pagine o la distribuzione di applicazioni malloc / vmalloc. La maggior parte del problema è l'API obsoleta e alcune implementazioni di D3D interrotte.

La risposta veramente breve:

GPU WDDM2.0 + D3D11.2 + 4GB

La RAM mancante 2 / 4GB è stata riservata alla GPU. La CPU non può toccarla, ma non esiste. Indipendentemente dal fatto che il VRAM viene utilizzato o non, è stato risolto e mappato nello spazio di indirizzi della GPU.

La RAM che è GPU Reserved non viene visualizzata sul sistema Commit Limit perché non è disponibile per la CPU. Né appare contro la Commit Charge, perché non è allocata – riservata solo.

^^ Russunovich ha parlato di questo anomalo in Winternals 7a edizione. È semplicemente un problema con l'API di utilizzo delle risorse, niente di più.

Ho letto il libro di nuovo in avanti cercando di capire perché la mia memory mancante era sempre uguale alla quantità di VRAM sulla GPU.

A partire da DX11.2 WDDM 2.0 support l'indirizzamento unificato tra CPU RAM e GPU VRAM, il che significa che la GPU può mappare la RAM nel proprio spazio di indirizzi per la copia di pagine a 0, le risorse pieghevoli o il buffering.

Questo è where va tutto a sud, l'allocazione di risorse dinamiche era destinata ad essere supportta con 8.1, tuttavia non è stata implementata fino alla W10. . L'allocazione delle risorse dinamiche è una funzionalità DX11.x che consente di ridimensionare dynamicmente la memory del sistema riservata della GPU e restituire alla CPU durante il gioco. La parte "dynamic" non lo ha mai fatto, ma la riserva di memory di sistema ha fatto.

Ciò che succede è: 8 GB di RAM e 4 GB di GPU, 4 GB di RAM viene tagliata di riserva

Quindi, se si dispone di GPU con 4 GB di VRAM su 8,1, 4 GB di RAM di systyem viene tagliato e riservato alla GPU, lasciando solo 4 GB per tutto il resto del sistema.

È bene eseguire con il Pagefile distriggersto in 8.1 / Dx11, basta ricordare di aggiungere una RAM aggiuntiva a seconda di quanto VRAM si ha.

L'altra ironia qui è perché DX9 è 32bit i giochi dopn't sostenere oltre 4GB di spazio di indirizzi, lol Così 4GB di RAM è riservata, ma i giochi come Fallout NV non possono neppure usarla comunque … lmao.

Facciamo un bel po 'di test di piattaforma where sono, regola di avviso che trovo i lavori è di 16 GB di RAM con una GPU da 4 GB, che permette di ~ 12 GB gratis per i giochi DX12 che mangiano RAM.

Potresti andare a W10 (ugh) che non soffre di questi problemi ..: P

Btw c'è anche una pagina nella libreria MSDN d # d che copre la GPU DX9 me

Ora, vero, quando si nota che non è corto di RAM, cercherà di recuperare alcuni: copiando i processi lunghi inattivi e anche pagine non accessibili recentemente di tutti i processi. Jamie Hanrahan

Non è del tutto corretto. Un process inattivo non viene pagato, solo il set di lavoro viene tagliato (se ansible).
Tutte le pagine in eccesso in eccesso vengono quindi scaricate sul disco, ma c'è una dimensione WS minima che risiede sempre nella RAM.

Il taglio del WS è però l'ultima risorsa, un segno di RAM insufficiente. Memoria Normalmente i file mappati / memorizzati vengono eliminati prima dall'elenco di standby.

Btw su una nota laterale l'Elenco Standby consiste quasi interamente di file memorizzati nel disco rigido nella RAM. Controllare la cache dopo una deframmentazione o leggere la tua raccolta di musica da 200GB, anche la memory rimane libera. 🙂

OP, se ti piace posso submit alcuni screenshot / risultati / conclusioni da testare giochi e altre applicazioni con, note ecc. Forse 8-9 giochi a metà di molte piattaforms …… Mi faccia sapere.

PS Quanto sopra ho scritto dalla memory, perché tutte le prove sono state accadute 4-5 anni fa, è ansible (probabilmente non) un paio di punti minori che ho fatto non può essere esattamente il 100% parola per parola come scritto nelle citate fonti.

C'è qualcos'altro che ho dimenticato di citare quale è la tua domanda di memory libera vs memory disponibile. C'è una sostanziale differenza tra ciò che è disponibile e ciò che è gratuito – lo coprirò più in profondità quando avrò il tempo. Ma assicurati, Nessun memory libera provocherà un degrado delle performance elevate se un programma intensivo di memory come Skyrim è in esecuzione con ~ 25 GB di mod. I processi su 64 bit sono limitati a 8 GB per il set di lavoro, tuttavia lo spazio di indirizzi totale disponibile per quel process è di 8 TB. Questo è chiamato un object di sezione ed è come funziona AWE.

La ricerca avviene ancora, ma avviene interamente nella RAM (utilizzando i puntatori che credo). Ogniqualvolta si fa riferimento a pagine nell'elenco standby, si verifica una paginafault, per cui le pagine di pagine si verificano senza PF.

Le pagine si verificano se una pagina di riferimento è nell'elenco di standby, la posizione effettiva sull'HDD o la RAM non è veramente entrata in esso …

Anche quando si tratta di un file di pagine distriggersto, non esiste uno spazio di indirizzi virtuale: c'è solo spazio di indirizzi. I puntatori sono ancora utilizzati ma indicano sempre gli indirizzi di memory reali (anche idealmente, ma non sempre) e il limite di commit è uguale a quello della RAM installata. 🙂

Purtroppo, ci sono risposte sbagliate a domande come questa su tutto Internet. Se si vede una risposta che non indica la differenza tra la memory allocata e la RAM utilizzata, quella risposta sarà completamente sbagliata. Questo avviso di memory può essere prodotto con qualsiasi quantità di RAM libera. È ansible vedere rapporti su Internet di persone che ricevono avvisi di memory bassi anche se dispongono di un sacco di RAM.

L'avviso di memory bassa non ha niente a che fare con quanto RAM è libera. È ansible avere un sacco di RAM libera e ancora get l'avviso di memory insufficiente perché tale RAM (indirettamente) è riservata a ripristinare le allocazioni già effettuate ma non ancora utilizzate la RAM e non possono essere utilizzate per ripristinare le allocazioni successive.

Ad esempio, supponiamo di avere una macchina Windows 8.1 x64 con 16 GB di RAM fisica e nessun file di pagine. Quindi immagina di eseguire un programma che assegna 15 GB ma non ne usa ancora. Se il sistema operativo consente l'allocazione, inizierà a dare minime avvertenze sulla memory virtuale (perché non può consentire l'allocazione della memory backed per avere successo) anche se quasi tutti i 16 GB di RAM sono ancora gratuiti.

Devi stare molto attenti a separare la RAM usata dalle richieste di allocazione per la memory virtuale.

Windows vi darà un avviso di memory ridotta quando può essere necessario che non venga less le allocazioni della memory virtuale che potrebbero richiedere un archivio di backup. Ciò può verificarsi a prescindere dalla quantità di RAM libera del sistema, poiché tale RAM può essere vincasting a causa delle allocazioni precedenti che potrebbero richiedere anche un archivio di backup.

Ad esempio, se si esegue un'allocazione di memory normale per 8 GB, ma non ha ancora toccato tale allocazione, in pratica non sarà utilizzata alcuna RAM da tale allocazione. Ma se non si dispone di un file di pagine, 8 GB di RAM libera ora hanno un vincolo che devono rimanere scartati in modo che possano essere utilizzati per ripristinare tale allocazione in seguito, se ne avesse bisogno.

In effetti, la RAM è come il denaro in banca e le allocazioni di memory sono come controlli. Puoi avere abbastanza soldi in banca, ma non potresti scrivere altri controlli perché le persone potranno contare i controlli che hai già scritto. Una persona può non essere in grado di acquistare nulla, non import quanti soldi hanno lasciato in banca. (I file di pagina sono come una linea di credito in questa analogia.)

Non è ansible capire come funziona la memory in Windows in termini semplici come quelli della tua domanda. Devi comprendere la distinzione tra l'allocazione della memory e l'utilizzo della RAM.

Detto questo, c'è una soglia, forse una frazione della RAM totale, che triggers questo avviso. Ma non ha nulla a che fare con se la RAM libera è inferiore a quella soglia.