No, the storage subsystem is not that dumb, so to speak. When it detects you are trying to sequentially access a some small files it predicts you will keep accessing and loads megabytes of those files from the array into cache first (read ahead). It is essentially guessing that if you have accessed files 1,2,3 that you will continue accessing 4,5,6,7,etc. and loads all of those as a chunk into the cache. This chunk is going to be a larger piece of data which will stripe between different drives. That's why we see ~400MB/s from two X25-Es when accessing 4kb-64kb files on 128kb stripe. If what you were saying was true (and it is true if there was no cache) then we would not get performance that is higher than a single drive (2xxMB/s).
I am probably not 100% correct and accurate with my explanation, but that is the general idea. Perhaps stevecs or someone else can explain it better.





Reply With Quote

Bookmarks