On Fri, 25 May 2012, Edgar Fu? wrote: > Thanks for the most insightful explanation! > > > Also keep in mind: > Yes, sure. That's why I would have expected the raw device to outperform even > at lower block sizes.
No, for small block sizes the overhead of the copyin() is more than offset by the larger buffercache block size. And the I/O operation is asynchronous with respect to the write() system call. With the character device the I/O operation must complete before the write() returns. So the I/O operations cannot be combined and you suffer the overhead of each one. Eduardo