Here is a very simple raid5 performance patch that reduces the number of times a stripe is queued on the release list. Whenever IO is scheduled for N chunks, the stripe may be queued on the release list up to N+1 times. But, it is only handled when the reference drops to zero. For each IO that completes, the stripe is again queued on the release list. It is not until the last IO completes that the stripe needs to be put on the release list. All the other times the stripe is queued does nothing other than add useless processing and lock contention. This patch will reduce the number of times raid5d (or kworkers, if enabled) are woken up. The number of stripes that are queued on the release list will be reduced to 1/3 or 1/2 depending on the type of write workload. Eivind Sarto
Attachment:
raid5.patch
Description: Binary data