Hi, On 2023-07-23 20:06:19 +0200, Oleksandr Natalenko wrote: > On neděle 23. července 2023 19:43:50 CEST Genes Lists wrote: > > On 7/23/23 11:31, Jens Axboe wrote: > > ... > > > Just read the first one, but this is very much expected. It's now just > > > correctly reflecting that one thread is waiting on IO. IO wait being > > > 100% doesn't mean that one core is running 100% of the time, it just > > > means it's WAITING on IO 100% of the time. > > > > > > > Seems reasonable thank you. > > > > Question - do you expect the iowait to stay high for a freshly created > > mariadb doing nothing (as far as I can tell anyway) until process > > exited? Or Would you think it would drop in this case prior to the > > process exiting. > > > > For example I tried the following - is the output what you expect? > > > > Create a fresh mariab with no databases - monitor the core showing the > > iowaits with: > > > > mpstat -P ALL 2 100 > > > > # rm -f /var/lib/mysql/* > > # mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql > > > > # systemctl start mariadb (iowaits -> 100%) > > > > > > # iotop -bo |grep maria (shows no output, iowait stays 100%) > > > > (this persists until mariadb process exits) > > > > > > # systemctl stop mariadb (iowait drops to 0%) > > This is a visible userspace behaviour change with no changes in the > userspace itself, so we cannot just ignore it. If for some reason this is > how it should be now, how do we explain it to MariaDB devs to get this > fixed? Just to confirm I understand: Your concern is how it looks in mpstat, not performance or anything like that? As far as I can tell, mariadb submits a bunch of IOs, which all have completed: ... mariadbd 438034 [000] 67593.094595: io_uring:io_uring_submit_req: ring 0xffff8887878ac800, req 0xffff888929df2400, user_data 0x55d5eaf29488, opcode READV, flags 0x0, sq_thread 0 mariadbd 438034 [000] 67593.094604: io_uring:io_uring_submit_req: ring 0xffff8887878ac800, req 0xffff888929df2500, user_data 0x55d5eaf29520, opcode READV, flags 0x0, sq_thread 0 mariadbd 438034 [000] 67593.094690: io_uring:io_uring_complete: ring 0xffff8887878ac800, req 0xffff888929df2400, user_data 0x55d5eaf29488, result 16384, cflags 0x0 extra1 0 extra2 0 mariadbd 438034 [000] 67593.094699: io_uring:io_uring_complete: ring 0xffff8887878ac800, req 0xffff888929df2500, user_data 0x55d5eaf29520, result 16384, cflags 0x0 extra1 0 extra2 0 Then waits for io_uring events: mariadbd 438032 [003] 67593.095282: io_uring:io_uring_cqring_wait: ring 0xffff8887878ac800, min_events 1 There won't be any completions without further IO being submitted. io_uring could have logic to somehow report a different state in such a case (where there'll not be any completions before new IOs being submitted), but that'd likely not be free. Greetings, Andres Freund