Very slow SYS_io_destroy()
From: Alex Richman
Date: Fri Jul 20 2018 - 16:09:48 EST
Hi,
I'm seeing some weirdness with AIO, specifically SYS_io_destroy() is
taking upwards of ~100000 microseconds (~100 miliseconds) per call.
How long is that call expected to take? I can see from the source that
it's waiting e.g. for requests to finish but at the time of my call all
requests are already finished (and SYS_io_getevent()'d)...
Here's some logs for example (<annotations for clarity>):
1532115053.520016 > hook_1(1073741824, 94766015790162, 14, 100,
139919450371008, 15) -> 0x7ffe9e505770
<3 IOCBs prepared, CMD_PWRITEV IOVs, 1 IOV per write, 14 bytes per write>
1532115053.520035 = {prep(0 - fd: 4, o: 0, b: 0x7ffe9e504658, n: 1, p:
0, fl: 0)}
1532115053.520037 = {prep(1 - fd: 5, o: 0, b: 0x7ffe9e504658, n: 1, p:
0, fl: 0)}
1532115053.520038 = {prep(2 - fd: 6, o: 0, b: 0x7ffe9e504658, n: 1, p:
0, fl: 0)}
<IOCBs submitted>
1532115053.520415 = {submit(-1978707968, 3) -> 3}
<io_events retreived>
1532115053.520417 = {done(0 - r: 14)}
1532115053.520418 = {done(1 - r: 14)}
1532115053.520419 = {done(2 - r: 14)}
1532115053.520420 = {complete(3) -> 14}
<io_cxt destroyed>
1532115053.639594 = {destroy(-1978707968) -> 0}
1532115053.639601 = (0x7ffe9e505770 = 0)
Between the complete(3) line and destroy(-etc) line only
SYS_io_destroy() is being called. It's the only possible source of that
lost ~100 miliseconds...
Any ideas?
Many thanks,
- Alex.
--
Alex Richman
alex.r@xxxxxxxxxxxx
Engineering
Tel:+44 (0)118 455 5000
www.gblabs.com