这些文章已经写了好几年了,可能已经过时了。在MSN space和QQzone几经辗转之后,我想也许这些技术文章还是放在搞技术的博客中更能帮助人。于是做了一个艰难的决定,把这些文章一篇篇搬过来!绝对是原创的。
延迟写是RAID-5中提高I/O吞吐率的一种重要的方法。延迟写(delay write),顾名思义就是在make_request将写请求加入到stripe_head中以后, 并不急于启动写处理(rmw或rcw),而是等一段时间,看是不是有后续的写请求也会被加入到这个stripe_head中。最好的情况就是后续加入的写请求填满了所有的数据dev,这样我们就不需要任何额外读就可以计算新Parity。这在顺序写(sequential WRITE)的情况下能带来很好的效果,而实践中很多情况都是顺序写的。别看前面的一些写请求被延迟了,但丝毫没有使写处理的效率下降,反而获得了更好的性能。