Come aumentare la cache del disco di Windows 7


18

Sotto Windows 7 (64 bit), sto leggendo 9000 file di dimensioni moderate. In totale, ci sono più di 200 MB di dati. Usando Java (JDK 1.6.21) sto ripetendo i file. I primi 1400 circa raggiungono la massima velocità, ma poi diminuiscono a 4ms per file. Si scopre che il costo principale è sostenuto semplicemente aprendo i file.

Sto aprendo i file usando new FileInputStream(e ovviamente chiudendoli in tempo per evitare perdite di file). Dopo qualche indagine, vedo che la cache del disco di Windows sta usando solo 100 MB circa di RAM anche se ho 8 GiB disponibili. Ho provato ad aumentare le dimensioni della cache utilizzando lo strumento CacheSet ma tutti i valori forniti sono considerati fuori portata .

Ho anche provato ad abilitare la LargeSystemCachechiave di registro ma (dopo il riavvio) lo CacheSetstrumento indica ancora che sto usando 100 MB di cache (e non aumenta durante l'esecuzione del test). Qualcuno ha qualche suggerimento per "incoraggiare" Windows 7 a memorizzare nella cache i miei file 9000?


3
Da dove vengono ricavate le informazioni che per la cache del disco vengono utilizzati solo 100 MB? Da quello che so Windows utilizza per impostazione predefinita tutta la memoria libera per la memorizzazione nella cache del disco. Un valore di soli 100 MB mi sembra un valore minimo.
Robert,

1
Parte del problema potrebbe essere Java ed è JVM. Ci sono tonnellate di opzioni per modificare la JVM - publib.boulder.ibm.com/infocenter/javasdk/v6r0/… . Penso che la tua scommessa migliore sia semplicemente scriverlo in C ++ o FreeBASIC (entrambi compilabili in codice nativo e limitati solo da ciò che il sistema operativo consente).
Natalie Adams,

Risposte:


4

Superfetch non memorizza nella cache tutti i file di grandi dimensioni, ma solo le parti a cui si accede. Quindi l'accesso a quel file richiede la lettura del disco ancora. Una cache su disco a 210 MB come la mia può memorizzare nella cache tutto da tutti quei piccoli file in Windows. E le prestazioni sono evidenti. Dubito, tuttavia, che avrebbe un impatto su sistemi più veloci.


2
Che cos'è il superfetch e come si collega a questa domanda?
jpaugh

4

Ho provato ad aumentare le dimensioni della cache utilizzando lo strumento CacheSet ma tutti i valori forniti sono considerati fuori portata.

  1. Assicurarsi di eseguire esplicitamente CacheSet "Come amministratore". CacheSet dirà che i valori sono fuori portata quando qualcosa va storto.
  2. Assicurarsi che la dimensione della cache sia divisibile per 4 KB

Inoltre, ho notato che CacheSet ha qualche problema con valori di grandi dimensioni, probabilmente perché è un'applicazione a 32 bit dal 2006. Sono andato e ho scritto un programma a 64 bit attorno alla stessa API, che consente di impostare dimensioni della cache superiori a 4 GB: http: / /blog.thecybershadow.net/2012/12/14/64-bit-cacheset/

Nota: l'articolo CacheSet menziona CacheMan, tuttavia l'ultima versione sembra utilizzare la stessa API di CacheSet: è appena impacchettata in un'interfaccia utente con un sacco di preset e altre funzionalità.


0

So che questo è vecchio, ma per gli altri che incontrano questo problema: è necessario eseguire CacheSet con i privilegi di amministratore manualmente. In caso contrario, verrà visualizzato l'errore OutOfRange; NON richiederà automaticamente i privilegi.

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.