Commits
Alexey Kuznetsov authored and Konstantin Khorenko committed 34cba88f29f
fuse: skip bg_queue for async direct io pcs requests There is a capital problem in fuse pcs implementation. While requests scale by cpu we still have contention on bg_lock and all the requests go through single bottleneck at bg_queue. Of course we had inferior performance due to this, but we ignored the problem as the preformance still was good. But recently it was found that under some realistic curcumstances we get collapse of preformance, it drop > 10 times when load on pcs increases. The reason is that algorithm effectively reduces number of cpus used to 1 or a few and besides that triggers an extreme contention on bg_lock. Yet, bg_queue for kio pcs requests is entirely useless. The request is already allocated, resources are consumed. If we push it to kio pcs it will be treated by pcs finegrain congenstion avoidance. So, we can skip bg_queue. This patch makes this only for async direct io requests. The reason is that for page cache reqs we must conform invalidation rules which need some serialization. It is not impossible, but requires some work and in fact not very useful. The patch is extreme. It removes not only bg_queue, which is good deal, no doubts, but also blocking at allocation of aio request, which is dubious. Right now we are limited only by system aio limit. https://pmc.acronis.work/browse/VSTOR-54040 Signed-off-by: Alexey Kuznetsov <kuznet@acronis.com> Feature: vStorage