2010-08-09 21 views
5

Eventuali duplicati:
CPU cache flushCome cancellare L1 CPU e cache L2

sto correndo un punto di riferimento sul server di Xeon, e ripeto le esecuzioni 2-3 volte. Mi piacerebbe cancellare il contenuto della cache in L1 e L2 mentre si ripetono le esecuzioni. Puoi suggerire qualche metodo per farlo?

+4

Quale architettura e sistema operativo stai testando? –

+0

Suppongo che fare altre cose a caso sul server per un miunute o sarebbe un po 'troppo duro? – Dentrasi

+0

La mia domanda è perché vorresti farlo? –

risposta

8

Provare a leggere dati ripetitivi di grandi dimensioni tramite CPU (vale a dire non da DMA). Come :

int main() { 
    const int size = 20*1024*1024; // Allocate 20M. Set much larger then L2 
    char *c = (char *)malloc(size); 
    for (int i = 0; i < 0xffff; i++) 
     for (int j = 0; j < size; j++) 
     c[j] = i*j; 
} 

Tuttavia dipendono server di un problema più grande può essere una cache del disco (in memoria) allora cache L1/L2. Su Linux (per esempio) goccia utilizzando:

sync 
echo 3 > /proc/sys/vm/drop_caches 

Edit: E 'banale di generare programma di grandi dimensioni che non fanno nulla:

#!/usr/bin/ruby 
puts "main:" 
200000.times { puts " nop" } 
puts " xor rax, rax" 
puts " ret" 

Esecuzione di un paio di volte con nomi diversi (codice non il prodotto script) dovrebbe fare il lavoro

+6

La maggior parte delle CPU moderne ha cache di istruzioni e dati separate; mentre il ciclo di 20M di RAM può pulire la cache dei dati; non toccherà la cache delle istruzioni. Inoltre non è garantito che la CPU utilizzerà tutta la cache, potrebbe riutilizzare continuamente la stessa piccola sezione. –

+0

La soluzione è fondamentalmente la stessa. Genera un sacco di codice ed eseguilo. –

+0

I processori più recenti riconosceranno il pattern e non invalideranno la linea cache esistente; quindi userà solo 2 (o così) righe di cache per il tuo programma. Se la cache è un fattore importante; meglio spegnerlo e non usarlo. D'altra parte; probabilmente non sta facendo 2 colpi di differenza in primo luogo. –

Problemi correlati