Hello, Miklos Szeredi wrote:Event notification performance problem is usually in its scalability not in each notification. It's nice to optimize that too but I don't think it weighs too much especially for FUSE. Doing it request/reply way could have scalability concerns, please see below. That would simply be a broken poll implementation just as O_NONBLOCK read can block in ->read forever. Given that the number of in-flight requests are not too high, I think linear search is fine for now but switching it to b-tree shouldn't be difficult. So, pros for req/reply approach. * Less context switch per event notification. * No need for separate async notification mechanism. Cons. * More interface impedence matching from libfuse. * Higher overhead when poll/select finishes. Either all outstanding requests need to be cancelled using INTERRUPT whenever poll/select returns or kernel needs to keep persistent list of outstanding polls so that later poll/select can reuse them. The problem here is that kernel doesn't know when or whether they'll be re-used. We can put in LRU-based heuristics but it's getting too complex. Note that it's different from userland server keeping track. The same problem exists with userland based tracking but for many servers it would be just a bit in existing structure and we can be much more lax on userland. ie. actual storage backed files usually don't need notification at all as data is always available, so the amount of overhead is limited in most cases but we can't assume things like that for the kernel. Overall, I think being lazy about cancellation and let userland notify asynchronously would be better performance and simplicity wise. What do you think? Thanks. -- tejun --
| Heiko Carstens | [patch -mm] s390: struct bin_attribute changes |
| Andrew Morton | 2.6.25-rc2-mm1 |
| Eric W. Biederman | Re: [PATCH] kexec: force x86_64 arches to boot kdump kernels on boot cpu |
| Jan Engelhardt | intel iommu (Re: -mm merge plans for 2.6.23) |
git: | |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 27/37] dccp: Integration of dynamic feature activation - part 2 (server side) |
| Jens Axboe | Re: [BUG] New Kernel Bugs |
| Andrew Morton | Re: [PATCH] PHYLIB: IRQ event workqueue handling fixes |
