On Sat, Mar 24, 2018 at 08:42:34PM +0100, Jaromír Doleček wrote: > The problem there is that FFS triggers a pathologic case. I/O transfer maps > and then unmaps each block into kernel pmap, so that the data could be > copied into user memory. This triggers TLB shootdown IPIs for each FS > block, sent to all CPUs which happen to be idle, or otherwise running on > kernel pmap. On systems with many idle CPUs these TLB shootdowns cause a > lot of synchronization overhead.
What about having a passive unmap as fourth option? I.e. when unmapping in the transfer map, just add them to a FIFO. Process the FIFO on each CPU when there is time or the transfer map runs out of space. Context switching for example would be a natural place to do any such invalidation. Joerg