> 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
