Closed Akaame closed 2 years ago
interesting. I've never run it via podman. I wonder why io_uring is disabled there. @axboe do you know maybe?
@Akaame did you try running dragonfly natively on that host? Does it work then?
I have no idea, sorry, never used it.
Confirmed that it fails on Ubuntu as well. @Akaame you can still run it with --privileged
flag. I do not know why podman in rootless mode can not call io_uring APIs.
I had the same problem with WSL2. uname -a Linux XSJ-20210114XOJ 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
./dragonfly --alsologtostderr I20220623 17:28:24.142984 30367 init.cc:56] ./dragonfly running in opt mode. I20220623 17:28:24.143221 30367 dfly_main.cc:179] maxmemory has not been specified. Deciding myself.... I20220623 17:28:24.143266 30367 dfly_main.cc:184] Found 11.17GiB available memory. Setting maxmemory to 8.93GiB F20220623 17:28:24.143419 30368 proactor.cc:432] Error initializing io_uring: (38) Function not implemented Check failure stack trace: ...
Newer WSL2 kernels have it enabled.
same issue
I20220630 01:42:54.135711 1 init.cc:56] dragonfly running in opt mode.
I20220630 01:42:54.135757 1 dfly_main.cc:179] maxmemory has not been specified. Deciding myself....
I20220630 01:42:54.135784 1 dfly_main.cc:184] Found 3.12GiB available memory. Setting maxmemory to 2.49GiB
F20220630 01:42:54.136021 4 proactor.cc:432] Error initializing io_uring: (38) Function not implemented
*** Check failure stack trace: ***
@ 0xaaaaaf88e394 google::LogMessage::SendToLog()
@ 0xaaaaaf887478 google::LogMessage::Flush()
@ 0xaaaaaf888db4 google::LogMessageFatal::~LogMessageFatal()
F20220630 01:42:54.137372 5 proactor.cc:432] Error initializing io_uring: (38) Function not implemented
@ 0xaaaaaf5c2c48 util::uring::Proactor::Init()
*** Check failure stack trace: ***
Describe the bug
podman run --network=host docker.dragonflydb.io/dragonflydb/dragonfly
fails withproactor.cc:432] Error initializing io_uring: (38) Function not implemented
which, I think, indicates that io_uring is not supported. In this case, can we have a user friendly error here instead of the stack trace:To Reproduce Steps to reproduce the behavior:
podman machine init
podman machine start
podman run --network=host docker.dragonflydb.io/dragonflydb/dragonfly
Expected behavior A more readable/helpful error message that indicated io_uring is not supported/enabled and exits the program. Similar to the one when not enough memory is available
io_uring does not have enough memory. That can happen when your max locked memory is too limited. If you run me via docker, try adding '--ulimit memlock=-1' to docker run command
Desktop (please complete the following information):
podman-machine
Version 0.3.0
Additional Context
grep io_uring_setup /proc/kallsyms
Follow up Questions How can I concretely check if
io_uring
is supported / if it is compiled out or not?Cheers.