Hi Laurent, Laurent Dufour <lduf...@linux.ibm.com> writes: > Le 28/07/2020 à 19:37, Nathan Lynch a écrit : >> The drmem lmb list can have hundreds of thousands of entries, and >> unfortunately lookups take the form of linear searches. As long as >> this is the case, traversals have the potential to monopolize the CPU >> and provoke lockup reports, workqueue stalls, and the like unless >> they explicitly yield. >> >> Rather than placing cond_resched() calls within various >> for_each_drmem_lmb() loop blocks in the code, put it in the iteration >> expression of the loop macro itself so users can't omit it. > > Is that not too much to call cond_resched() on every LMB? > > Could that be less frequent, every 10, or 100, I don't really know ?
Everything done within for_each_drmem_lmb is relatively heavyweight already. E.g. calling dlpar_remove_lmb()/dlpar_add_lmb() can take dozens of milliseconds. I don't think cond_resched() is an expensive check in this context.