> io_setup() makes the ring at least 4 events per possible CPU of the
> node. The ring is mapped into the task memory, and CRIU restores it with
> io_setup() and moves the new mapping to the address of the old one, so
> it needs a ring of the same size. On a node with more possible CPUs it
> gets a bigger ring, and the restore fails. E.g. io_setup(1) makes a
> ring of one page, 127 events, on 4 CPUs, and of two pages, 255 events,
> on 16 CPUs.
> 
> Skip the CPU heuristic while the VE is pseudosuper, which it is only for
> the restore. Keep the other adjustments, the doubling and the rounding
> up to pages: they don't depend on the node, and the queue depth CRIU
> estimates from the dumped ring already offsets them, so the restore gets
> the ring of the dumped size.
> 
> After a migration to a node with more possible CPUs an AIO context can
> be slightly less reliable: io_submit() can return EAGAIN before the ring
> is full, while free slots sit in the per-CPU caches of other CPUs.
> 
> https://virtuozzo.atlassian.net/browse/VSTOR-154129
> 
> Feature: ve: CRIU support
> Signed-off-by: Pavel Tikhomirov <[email protected]>

Sashiko has reviewed this patch and found no issues.

-- 
Sashiko AI review ยท 
https://sashiko.vzint.dev/#/patchset/20261113-pr-ptikhomirov-vstor-154129-aio-pseudosuper-ring-v1-0-7d35d143f...@virtuozzo.com?part=1


_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to