Misurazione della perfezione I / O Paradox

Sto cercando di capire il modo corretto per get la performance di scrittura del mondo del mondo reale del mio cluster NFS.

L'esportzione NFS è montata su un hypervisor XEN e sto eseguendo 'dd' da un VM.

Quello che non posso decidere è dovrei usare O_DIRECT/O_SYNC o no.

Se non lo uso, il kernel farà la cache della pagina alla RAM e io finirò per misurare il throughput di RAM, non il disco.

D'altra parte, la maggior parte, se non tutte le applicazioni server utilizzeranno comunque la memorizzazione nella memory RAM (sono sbagliato con tale ipotesi?).

Così mi chiedo where sia il punto di equilibrio, che cosa veramente accadrà nel 'mondo reale' ?

2 Solutions collect form web for “Misurazione della perfezione I / O Paradox”

Prima di tutto, avrei usato un vero e proprio strumento di benchmark I / O come 'iozone'. Testerà una varietà di cose e usa anche O_DIRECT se contrassegnato per farlo. E anche, come mi ricordo, ha alcune bandiere specifiche del NFS.

Una cosa che ho trovato molto affidabile è utilizzare una dimensione di file che supera la dimensione RAM per il dispositivo in cui stai eseguendo il test. Questo blocca la cache e ti dà numbers di I / O affidabili. Se si dispone di una macchina da 2 GB di RAM e il test su un file da 4 GB, avrai numbers affidabili. Se si utilizza un file da 1 GB, ma si utilizza invece la bandiera O_DIRECT, si otterranno numbers un po 'diversi a causa dell'aspetto dell'unico rapporto riportto quando viene detto che è flushed di O_DIRECT.

Ciò si complicano quando il target di sistema di file di networking dispone anche di una cache di block, per cui potrebbe essere necessario dimensionare il test per eliminare la cache anziché la cache Xen-locale.

Questo dipende solo da ciò che si desidera misurare.
Hai appena dimenticato di definire il tuo objective.

Se si desidera che le performance crude del cluster NFS, è necessario ignorare la RAM.
Se si desidera una performance "reale", è necessario utilizzare la RAM. Ma l'I / O del mondo reale sono raramente quelli da dd. Per esempio, avrai risultati migliori con iozone.

Quindi definisci il tuo objective.
Quindi scegliere lo strumento e il metodo appropriati.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.