GUIDA Introduzione ai file di pagina

Pubblicità

Liupen

SSD MAN
Utente Èlite
Messaggi
11,779
Reazioni
5,930
Punteggio
208
Articolo 13/10/2022 https://learn.microsoft.com/it-it/t...ent/performance/introduction-to-the-page-file

Questo vuole essere una trasposizione spiegata di un articolo di Microsoft Learn,



I file di pagina hanno la funzionalità seguente:

1) Estendere fisicamente la RAM
(memoria fisica di sistema)
I file di pagina consentono al sistema di rimuovere le pagine modificate a cui si accede raramente dalla memoria fisica per consentire al sistema di usare la memoria fisica in modo più efficiente per le pagine a cui si accede più di frequente.

(Notate che la frase parla di "pagine"; sappiate che la pagina è l'unità più piccola programmabile. Un insieme di pagine da 4KiB realizzano un Blocco.
1677183730533.png
Dunque il file di paging consente di togliere dalla RAM le pagine che sono poco usate cioè lette o modificate, in modo che la RAM sia utilizzata dalle pagine, cioè i dati a cui si accede più spesso, come un software o una pagina web di cui facciamo uso in quel momento.
Come vedete non si parla di file veri e propri, o blocchi, ma di pagine, cioè di dati amorfi. Il file di paging è, si può dire, un attività grezza, "ignorante" circa il contenuto del dato, ma la pagina essendo fissa come dimensione, consente una allocazione ottimizzata).


2) Rispondere ai requisiti per alcune applicazioni
Alcuni prodotti o servizi richiedono un file di pagina per vari motivi. Per informazioni specifiche, consultare la documentazione del prodotto.
Ad esempio....

(Purtroppo è ancora vero per alcune applicazioni che si reggono sulla RAM e che sono strutturati per avere nel paging una sicurezza).

3) Supportare il dump di arresto anomalo del sistema
I file di pagina possono essere usati per "eseguire il backup" (o supportare) i dump di arresto anomalo del sistema ed estendere la quantità di memoria con commit del sistema (nota anche come "memoria virtuale") supportata da un sistema.

(Quando Windows va in crash memorizza - se è attivo il file di paging ovviamente - tutti i dati di monitoraggio su disco in modo che alla riaccensione sono disponibili; la RAM infatti sapete si resetta ad ogni spegnimento).
(In questa frase si introduce il concetto di "memoria committed" e memoria virtuale.
Memoria virtuale, si tratta di una astrazione della memoria che permette a Windows di gestirla indipendentemente dalla memoria fisica. Con questa astrazione Windows può essere installato in un hardware che ha 8 oppure 16, o 32GB e oltre di RAM ma che può avere dischi di storage diversi.
Inoltre con questa astrazione windows considererà la memoria come fatta di tantissime pagine indipendenti a cui possono essere assegnate priorità diverse e quindi posizioni diverse ma anche considerare pagine allo stesso tempo appartenenti a blocchi diversi, lavorando apparentemente su file diversi.
In sostanza ricordate: Windows lavora con la memoria virtuale e usa la memoria reale/fisica/RAM. Pensateli come 2 livelli distinti per un solo obbiettivo.

Commit cioè nella versione italiana "vincolata", è la parte di memoria virtuale, che Windows impegna al momento per far fronte a tutte le necessità future. A me piacciono le similitudini, quindi ve la posso spiegare così: se siete in auto e viaggiate incolonnati a 40 KM/h, la memoria virtuale vincolata, si può dire che sia: "la distanza che voi valutate giusta (previsione) per non tamponare, se ad un certo punto l'auto davanti inchioda improvvisamente".
Allo stesso modo Windows con degli algoritmi calcola quanta memoria complessiva serve ora ed ipoteticamente nell'immediato futuro (si parla di frazioni di secondo), per memorizzare tutto quello che serve senza crash.
Se non avete afferrato a pieno non vi preoccupate, riprenderemo il concetto più volte).





File di pagina in Windows con memoria fisica di grandi dimensioni
Quando viene installata una memoria fisica di grandi dimensioni, potrebbe non essere necessario un file di pagina per supportare l'addebito del commit di sistema durante l'utilizzo massimo. Ad esempio, le versioni a 64 bit di Windows e Windows Server supportano più memoria fisica (RAM) rispetto alle versioni a 32 bit supportate. La sola memoria fisica disponibile potrebbe essere sufficientemente grande.

Tuttavia, il motivo per configurare le dimensioni del file di pagina non è stato modificato. Si tratta sempre di supportare un dump di arresto anomalo del sistema, se necessario, o di estendere il limite di commit del sistema, se necessario. Ad esempio, quando viene installata molta memoria fisica, potrebbe non essere necessario un file di pagina per eseguire il backup dell'addebito del commit di sistema durante l'utilizzo massimo. La sola memoria fisica disponibile potrebbe essere sufficientemente grande per eseguire questa operazione. Tuttavia, potrebbe essere necessario un file di pagina o un file di dump dedicato per eseguire il backup di un dump di arresto anomalo del sistema.

(L'idea del file di paging nasce con pc con poca RAM quando era una funzione importantissima. Oggi abbiamo PC con tanta RAM, quindi l'autore del testo ci dice che potrebbe non essere più necessario il file di paging - che sapete si può disattivare - ma che disattivandolo non avremo più la funzione di creazione del file di dump, ovvero il punto 3 sopra.
Soffermandoci sulla frase:

...o di estendere il limite di commit del sistema, se necessario. Ad esempio, quando viene installata molta memoria fisica, potrebbe non essere necessario un file di pagina per eseguire il backup dell'addebito del commit di sistema durante l'utilizzo massimo.
Estendere il limite di commit significa questo: ho detto che Windows vincola della memoria, come se dicesse "ora serve tot GB di memoria e la metto quì, quì e quì!", ovviamente a quel punto se il file di paging non c'è, Windows ha come limite massimo, la dimensione della RAM (c'è solo quella), ma andando ad accendere il file di paging, Windows vede anche i dischi di storage sapendo che parte di quello spazio può essere utilizzato.
Ecco che allora lo spazio vincolato (committed) da Windows si estende a oltre la dimensione della RAM. Si estende il limite di commit.
Diventa ora chiaro che l'addebito di commit di sistema durante l'utilizzo massimo è la crescita della memoria vincolata che durante l'utilizzo massimo della memoria fisica/RAM - dice il testo - in caso di tanta RAM, rimane al di sotto della quantità di RAM disponibile, cioè il file di paging non è più necessario.
Altro esempio: sono a casa e attendo ospiti. Man mano che entrano dalla porta faccio accomodare gli ospiti su sedie, poltrona divano... il mio addebito di commit stà crescendo ma se ho sedie a sufficienza --> RAM, posso permettermi di non andare nel ripostiglio a tirar fuori le sedie pieghevoli-->file di pagnig.




Memoria di cui è stato eseguito il commit del sistema
I file di pagina estendono la quantità di "memoria di cui è stato eseguito il commit" (nota anche come "memoria virtuale") per archiviare i dati modificati.
Il limite di memoria del commit di sistema è la somma della memoria fisica e di tutti i file di pagina combinati. Rappresenta la memoria massima con commit del sistema (nota anche come "addebito del commit di sistema") che il sistema può supportare.

Sostituite la parola commit con "vincolo" o "prenotazione" e la frase già sembra più comprensibile.
Windows può creare più file di paging ed utilizzarli, uno per disco storage. Ecco il perchè dell'uso plurale di "file di pagina".
In questo paragrafo si parla del file di paging secondo la funzione 1) che avete letto all'inizio, ovvero che il limite di memoria del commit di sistema - commit limit - cioè tutta la memoria virtuale a cui ha accesso Windows è la somma della memoria fisica/RAM e di tutti i file di pagina combinati.


task-manager-system-commit-memory.png


Aprendo il Task Manager / Gestione Attività vi ritroverete con questi dati.
Oltre al dato di uso della RAM rispetto al totale e quella ancora libera, nella riga inferiore segnata in rosso, è evidenziata la memoria virtuale organizzata da Windows per il vostro hardware.
Nell'esempio 37,7 GB è tutta la memoria virtuale a cui ha accesso Windows che è la somma della memoria fisica/RAM e di tutti i file di pagina combinati = commit limit.
6,8 GB è la porzione di memoria virtuale prenotata/vincolata cioè ripeto è la parte di memoria virtuale, che Windows impegna al momento per far fronte a tutte le necessità future.
Due considerazioni.
Notiamo che 37,7 > 32 GB che è la RAM, quindi oltre alla RAM questo pc ha sicuramente memoria impegnata su disco quindi ha almeno un file di paging.
Seconda cosa 6,8 GB in questo esempio specifico, corrisponde alla RAM in uso perchè il pc è a riposo, ma solitamente non coincidono. La memoria virtuale vincolata non è la memoria in uso che invece ritrovate nella riga sopra, questa memoria virtuale è uno spazio su RAM o disco prenotato lì, piuttosto che nel chip vicino, ma non è detto che sia in uso, semplicemente Windows se si trovasse ad averne bisogno sa già dove metterla.
Perchè? Velocità di esecuzione e riduzione degli errori di allocazione della memoria.
Altro esempio: quando su Booking.com prenoto l'albergo per l'albergatore cioè Windows, la stanza è già occupata quel giorno, ma in effetti solo quando la occupo, è realmente piena. Così funziona la memoria virtuale, permette a Windows di trovare un posto ai dati, cioè le pagine, con anticipo riguardo a quando servono.
La memoria virtuale è un sistema dinamico, poiche una pagina prenotata su RAM o su disco può essere spostata e mai riempita davvero.
La memoria reale è un sistema altrettanto dinamico, posso avere una pagina nella RAM che non serve e spostata nel file di paging - paginazione - anche se di RAM ce ne ancora in abbondanza.


Domanda: la memoria totale necessaria al mio pc è la memoria vincolata che leggo in gestione attività?
Essendo la memoria vincolata, una parte di memoria virtuale totale, ci dice solo la quantità di memoria che Windows ha necessità di allocare per far funzionare bene il sistema, ma comprende, sia pagine sulla RAM che degli eventuali file di paging.
Visto che nessun sistema operativo o software, funziona se è esaurita la RAM, con un massivo uso di paginazione, se ne deduce che è solo la % d'uso della RAM rappresenta la memoria totale in uso del mio pc (pare ovvio ma...).


Un esempio concreto:

1677236348210.png


Vincenzo in questo momento fa girare un gioco e si preoccupa perchè ha solo 16GB di memoria RAM.

Ha di default attivato il file di paging su un ssd.
Nel momento in cui gioca e tiene il Task Manager aperto, leggiamo che il software utilizza 9,5GB di memoria Fisica/RAM e che ancora diversi GB di RAM sono liberi.
Legge però preoccupato che il sistema vorrebbe 18GB di memoria.
No Vincenzo, il gioco chiede e richiede la memoria RAM che occupa.
Al motto di: "repetita iuvant" dico che 18GB è la memoria vincolata, della memoria virtuale, cioè la quantità di memoria che Windows ha necessità di allocare per far funzionare bene il sistema, ma comprende, sia pagine sulla RAM che su un eventuale file di paging.
Calcoli spiccioli? Commit Charge = 18GB = (16GB RAM + 2GB File di Paging)
Togliendo infatti il file di paging, Vincenzo ottiene che il commit limit (tutta la memoria virtuale a cui ha accesso Windows che è la somma della memoria fisica/RAM e di tutti i file di pagina combinati) che prima era 21GB si riduce alla sola dimensione della RAM fisica, cioè 16GB. Il relativo commit charge (altro nome per definire la memoria virtuale vincolata), si ridurrà sempre al di sotto del commit limit.
Cosa comporta il fatto che Vincenzo ora che gioca, ha tolto il file di paging a Windows?
Comporta che la memoria virtuale prenotata da Windows verrà posizionata (ma attenti.. non automaticamente USATA, solo prenotata per poterla usare velocemente) tutta sulla RAM, in particolare su quei 6,3GB liberi.
Altri calcoli spiccioli e si potrà prevedere indicativamente che a pari condizioni senza file di paging con Vincenzo che gioca...
commit charge = (9,5GB RAM in uso + 2GB ex File di Paging) = 11,5GB
All'approssimarsi della memoria vincolata - commit charge - 11,5GB, al limite - commit limit - della memoria virtuale trovata da windows (che senza file di paging corrisponde a) 16GB, Windows rallenterà sempre di più fino a bloccarsi.

Quindi cosa mi dice il commit charge/memoria virtuale vincolata?

Mi dà certo, Vincenzo, una indicazione della memoria totale di cui ho bisogno e quindi di quanto potenziare la RAM, MA sapendo che quel numero di GB è superiore al fabbisogno di RAM necessario, poichè include anche le prenotazioni fatte su file paging e non solo sulla RAM e quelle sul file di paging potrebbero essere prenotazioni di spazio superiore a quello effettivamente poi occupato.

L'addebito per il commit per ogni processo non include altri importanti contributi allo spazio degli indirizzi virtuali del processo, come i file mappati . Per questo motivo, il working set del processo (la porzione del suo spazio degli indirizzi a cui è possibile fare riferimento senza incorrere in un errore di pagina) può essere maggiore del suo contributo all'addebito di commit totale e l'addebito di commit totale non include la memoria totale (fisica o virtuale) effettivamente in uso.
La risposta quindi non è 18GB Vincenzo, ma un range che va da__ a__ GB e che dipende imprescindibilmente dal carico di lavoro che dai al tuo pc.
Ogni software, ogni gioco ogni volta che accendi il pc e apri qualcosa, la situazione muta.
Quindi giusto vedere la porzione di memoria vincolata per farsi un idea del consumo di memoria totale (forzando che sia reale); sbagliato dire che quella è la memoria reale richiesta.

L'addebito del commit di sistema è la memoria totale di cui è stato eseguito il commit o la memoria "promessa" di tutta la memoria virtuale di cui è stato eseguito il commit nel sistema. Se l'addebito del commit di sistema raggiunge il limite di commit di sistema, il sistema e i processi potrebbero non ottenere memoria di cui è stato eseguito il commit. Questa condizione può causare il blocco, l'arresto anomalo e altri malfunzionamenti. Assicurarsi pertanto di impostare il limite di commit di sistema sufficientemente elevato da supportare l'addebito del commit di sistema durante l'utilizzo massimo.
out-of-memory.png

(testualmente: se il crescere della parte di memoria virtuale vincolata - 6,8GB - raggiunge la memoria virtuale totale si verifica un blocco nell'allocazione di nuova memoria. Questa condizione - thrashing - può causare il blocco l'arresto anomalo e altri malfunzionamenti. Assicurarsi pertanto di impostare un file di paging sufficientemente elevato da supportare il crescere della richiesta di memoria durante l'utilizzo massimo).
I file di pagina gestiti dal sistema crescono automaticamente fino a tre volte la memoria fisica o 4 GB (a seconda di quale sia più grande, ma non più di un ottavo delle dimensioni del volume) quando l'addebito del commit del sistema raggiunge il 90% del limite di commit del sistema. Si presuppone che sia disponibile spazio su disco sufficiente per supportare la crescita.


NdR. Si può discutere di file di paging attivo o file di paging spento, anche di file di paging gestito dal sistema o con delle dimensioni impostate manualmente, tutti possono avere opinioni diverse su questo, spesso basate sulle nostre esperienze, MA come la matematica, il funzionamento della memoria virtuale, memoria vincolata e paginazione è una, e non si presta ad interpretazioni.
Liupen
 
Ultima modifica:
Si può discutere di file di paging attivo o file di paging spento, anche di file di paging gestito dal sistema o con delle dimensioni impostate manualmente, tutti possono avere opinioni diverse su questo, spesso basate sulle nostre esperienze, MA come la matematica, il funzionamento della memoria virtuale, memoria vincolata e paginazione è una, e non si presta ad interpretazioni.
👍
e vaglielo a spiegare a certi saputelli arroganti che leggono mezzo articolo e pensano di "farsi la conoscenza", diventando in pochi minuti guru della paginazione; e a certi altri (o sempre lo stesso? 🤣) che si credono premi Nobel dei flussi termodinamici all'interno dei case dopo aver linkato una pseudoguida (pure sbagliata) di 15 anni fa e citato il commento di uno sconosciuto in un altro forum "saputo" quanto lui...
 
A questo punto @Liupen aggiungi come articolo anche quello di Raymond Chen: https://devblogs.microsoft.com/oldnewthing/20091002-00/?p=16513

Cito la parte finale:

As one of my colleagues explained, “Commit is the system’s guarantee you will get a page when you need it. In giving you this guarantee, it does not have to give you the page yet.” Commit is merely a promise that when you need the page, it will be there.


The fire department promises that if there’s a fire in your house, they will come to try to put it out. But that doesn’t mean that there’s a tank of water at the fire station with your name on it.

Varrebbe magari la pena tradurlo in italiano (mi riferisco all'intero articolo, che è breve ma scritto bene) così che tutti capiscano. Ci faccio un pensierino non appena trovo del tempo, se non verrò preceduto.
 
Traduco:

Quando allochi memoria, ad esempio creando una sezione di memoria condivisa o chiamando VirtualAlloccon il MEM_COMMITflag, ciò che hai è noto al gestore della memoria come commit . Il gestore della memoria ha promesso che se provi ad accedere a quella memoria, l'accesso alla memoria avrà successo. Ma ciò non significa che il gestore della memoria sappia esattamente quale chip di memoria sulla tua scheda madre utilizzerà. (Sì, lo so che la memoria è effettivamente distribuita su più chip di memoria, ma sto parlando metaforicamente. Se vuoi essere pignolo, li chiamerò frame di pagina fisici poiché è quello che sono.)

Questo in realtà è ovvio se ci pensi. Dopotutto, se la memoria viene estratta e quindi ricollocata, potrebbe essere assegnata a un frame di pagina fisico diverso quando ritorna. Pertanto, il gestore della memoria non può promettere "Okay, se provi ad accedere alla memoria all'indirizzo 0x00900000, lo mapperò al frame della pagina fisica 0x471".

Ma cosa succede se disattivo il paging disabilitando il mio file di paging?

Certo, questo toglie lo scenario "pagina fuori e dentro" fuori dall'immagine, ma il gestore della memoria non decide ancora quale frame di pagina assegnare al tuo indirizzo lineare virtuale fino a quando non lo accedi effettivamente.

Pensa a un impegno di memoria come ottenere un contratto con un servizio di pulizia per pulire la tua stanza. Li assumi per pulire la tua stanza una settimana da sabato. Al momento della firma del contratto, il servizio di pulizia in genere non deciderà quale membro del suo personale addetto alle pulizie verrà nella tua stanza. Ricorda solo che si è impegnato a pulire la tua stanza e assicura che ci sarà qualcuno disponibile per farlo. Ad esempio, se hanno uno staff di dieci persone e ci vuole un giorno per pulire una stanza (ehi, è un dormitorio disordinato), allora non prenoteranno più di dieci lavori al giorno.

Perché non pre-assegnano i lavori? Ebbene, diversi membri del personale possono avere competenze diverse e non tutti i lavori possono richiedere tutte le competenze di un particolare membro del personale. Ad esempio, supponiamo che lo staff sia composto da due persone, Alice e Bob. Alice è brava con i tappeti e Bob con i bui. Il tuo dormitorio non ha né l'uno né l'altro. Se il servizio di pulizia ha deciso di affidare il tuo lavoro ad Alice nel momento in cui hai firmato il contratto, allora sta correndo il rischio che possa ricevere un'altra offerta per un lavoro di tappeto e dovrebbe rifiutare perché Alice è già assegnata al tuo camera. D'altra parte, se ha assegnato Bob, allora sta correndo il rischio che arrivi un'offerta per un lavoro che include i bui. La cosa migliore da fare per il servizio di pulizia è non assegnare ancora nessuno, ma ricordarsi comunque che deve assegnare qualcuno entro sabato mattina, quindi sa che può accettare un lavoro in più, ma non due. (E non può accettare alcun lavoro che riguardi sia tappeti che persiane.)

Il gestore della memoria fa la stessa cosa. Sa che deve assegnare alcuni frame di pagina al tuo processo, ma non prende alcuna decisione fino a quando non usi effettivamente la memoria, quindi può avere la massima flessibilità per soddisfare nel frattempo altre allocazioni di memoria. E se liberi la memoria senza mai accedervi, il gestore della memoria non ha bisogno di prendere alcuna decisione!

Ad esempio, un driver di dispositivo potrebbe richiedere della memoria con una particolare caratteristica; ad esempio, potrebbe richiedere memoria al di sotto del limite di 4 GB (perché sta comunicando con un dispositivo hardware che non supporta indirizzi superiori a 4 GB) oppure potrebbe richiedere 64 KB di memoria fisicamente contigua. Se il gestore della memoria avesse deciso in anticipo di assegnare un frame di pagina fisico 0x471al tuo processo, potrebbe dover rifiutare una di quelle altre richieste perché il tuo frame di pagina era l'unico disponibile che si adattava al conto.

Come ha spiegato uno dei miei colleghi, “Commit è la garanzia del sistema che riceverai una pagina quando ne avrai bisogno. Nel darti questa garanzia, non deve ancora darti la pagina. Il commit è semplicemente una promessa che quando avrai bisogno della pagina, sarà lì.

I vigili del fuoco promettono che se c'è un incendio in casa tua, verranno a cercare di spegnerlo. Ma questo non significa che ci sia una tanica d'acqua alla caserma dei pompieri con il tuo nome sopra.

Fonte: https://devblogs.microsoft.com/oldnewthing/20091002-00/?p=16513
 
Grazie ragazzi, vi chiedo inoltre di correggere inesattezze (direttamente modificando il mio testo) visto che per voi @sp3ctrum @DispatchCode è stata materia di studio e io sono un dilettante... studioso 😂 ma ahime non un informatico.
--- i due messaggi sono stati uniti ---
I vigili del fuoco promettono che se c'è un incendio in casa tua, verranno a cercare di spegnerlo. Ma questo non significa che ci sia un serbatoio d'acqua alla caserma dei pompieri con il tuo nome sopra.

Come si fà a non ridere 🤣🤣🤣
 
Ultima modifica:
Grazie ragazzi, vi chiedo inoltre di correggere inesattezze (direttamente modificando il mio testo) visto che per voi @sp3ctrum @DispatchCode è stata materia di studio e io sono un dilettante... studioso 😂 ma ahime non un informatico.
--- i due messaggi sono stati uniti ---
I vigili del fuoco promettono che se c'è un incendio in casa tua, verranno a cercare di spegnerlo. Ma questo non significa che ci sia un serbatoio d'acqua alla caserma dei pompieri con il tuo nome sopra.

Come si fà a non ridere 🤣🤣🤣

È stata materia di studio per me è un parolone 😅😅
 
hO UNA x99 M WS, un po' vecchiotta, ma mi ha dato delle soddisfazioni. Go anche una Z490 Rog Strix G gammin, con un i 5 10600k , ma al momento non avevo il badget per comprare un i7 o un i 9 che sarebbero molto piu adeguati per via delle molte periferiche. Fare un Upgrade ora con un i7 10700K a me sembra una follia confrontando il prezzi con gli attuali 13 Th che lo distano a dismisura a differenza dei processori dalla 1 Th fino all' 11Th. Un semplice confronto ta il 10600k con il 7600K non c'e' tutta questa differenza come il 13600k ha sia con l' 7 10700l il 10600k e direi anche con l' 9 10900K CONFRONTANDO I PREZZI. La causa non e' assolutamente dei proguttori. Da non dimenticare che questa sche e' a 4 canali e inspiegamilmente si notano processori con molti core a 14NM a prezzi stracciaciati considerando che per i Game vanno piu' che bene con schede videro PCIE 3x4 e altro. Per ora non posso fare una valutazione completa utilizzando 2 RAM, ma quando riempiro' i 4 slot con le gemelle e la provero' con la ROG 1660 Ti.
 
hO UNA x99 M WS, un po' vecchiotta, ma mi ha dato delle soddisfazioni. Go anche una Z490 Rog Strix G gammin, con un i 5 10600k , ma al momento non avevo il badget per comprare un i7 o un i 9 che sarebbero molto piu adeguati per via delle molte periferiche. Fare un Upgrade ora con un i7 10700K a me sembra una follia confrontando il prezzi con gli attuali 13 Th che lo distano a dismisura a differenza dei processori dalla 1 Th fino all' 11Th. Un semplice confronto ta il 10600k con il 7600K non c'e' tutta questa differenza come il 13600k ha sia con l' 7 10700l il 10600k e direi anche con l' 9 10900K CONFRONTANDO I PREZZI. La causa non e' assolutamente dei proguttori. Da non dimenticare che questa sche e' a 4 canali e inspiegamilmente si notano processori con molti core a 14NM a prezzi stracciaciati considerando che per i Game vanno piu' che bene con schede videro PCIE 3x4 e altro. Per ora non posso fare una valutazione completa utilizzando 2 RAM, ma quando riempiro' i 4 slot con le gemelle e la provero' con la ROG 1660 Ti.
Scusami ma cosa c'entra tutto questo con l'argomento del topic?
 
Pubblicità
Pubblicità
Indietro
Top