Le dimensioni della cache del disco rigido non contano da nessuna parte poiché tutti i sistemi operativi moderni eseguono la propria memorizzazione nella cache e dispongono di MOLTA più memoria da utilizzare. Se è stato effettuato l'accesso di recente, sarà comunque nella cache del sistema operativo, quindi averlo nella cache dell'unità non ha importanza poiché il sistema operativo non richiederà nuovamente tali dati all'unità.
In confronto alle cache della CPU, è come avere la tua bella cache L3 da 8 MB di grasso moderna, quindi guardare gli anni che passano e trovare CPU con una cache L2 da 128 MB che è 32 volte più veloce, ma che ha ancora quella vecchia, lenta 8 MB L3 cache. Non farà nulla di buono poiché L2 viene sempre consultato per primo ed è sia più grande che più veloce. A quel punto, discutere sul fatto che la cache L3 debba essere 8 o 16 MB è un punto controverso poiché qualsiasi cosa nella L3 sarà anche nella L2, quindi la L3 non vedrà nemmeno la richiesta.
Per vedere l'unità e le cache del kernel in azione, puoi giocare con dd
per vedere quanto velocemente puoi leggere dall'unità.
sudo dd if=/dev/sda of=/dev/null bs=52488 count=1
Questo leggerà 512kb dall'unità. Ripetilo alcune volte e inizierai a vedere alcuni numeri molto veloci. Su questa vecchia macchina che ho a portata di mano, sto vedendo nell'ordine di 751 MB / s. Questo è con la cache del kernel. Ora se si lancia l'opzione iflag = direct, questo disabiliterà la cache del kernel, consentendoti di misurare la velocità della cache dell'unità. Ripetendo questo, vedo solo circa 100 MB / s, che è circa la velocità di trasferimento massima di questa vecchia interfaccia IDE. Non è molto meglio del throughput senza buffer dell'unità di circa 61 MB / s.
Ora chiediti a cosa serve quella cache di unità più lenta e più piccola quando non stai bypassando la cache del kernel.