diff --git a/docs/users_guide/runtime_control.rst b/docs/users_guide/runtime_control.rst
index 1377db771d0aee52727c629bf6719e513f51428e..efd549ba11222d07446de096aa370f10e4bc92a1 100644
--- a/docs/users_guide/runtime_control.rst
+++ b/docs/users_guide/runtime_control.rst
@@ -1555,6 +1555,7 @@ Getting information about the RTS
         ,("Compiler unregisterised", "NO")
         ,("Tables next to code", "YES")
         ,("Flag -with-rtsopts", "")
+        ,("I/O manager default", "select")
         ]
 
     The information is formatted such that it can be read as a of type
@@ -1608,3 +1609,8 @@ Getting information about the RTS
 
     ``Flag -with-rtsopts``
         The value of the GHC flag :ghc-flag:`-with-rtsopts=⟨opts⟩` at compile/link time.
+
+    ``I/O manager default``
+        The name of the I/O manager subsystem that will be used by default
+        for this program. This can be overridden with the
+        :rts-flag:`--io-manager=(name)` RTS flag.
diff --git a/rts/RtsUtils.c b/rts/RtsUtils.c
index 6a1faf7a30797e7afefd57121d583e480a644b10..f842c1cc3c434fee6ce29176abad626feccc8e1f 100644
--- a/rts/RtsUtils.c
+++ b/rts/RtsUtils.c
@@ -14,6 +14,7 @@
 #include "Ticky.h"
 #include "Schedule.h"
 #include "RtsFlags.h"
+#include "IOManager.h"
 
 #include <time.h>
 
@@ -385,6 +386,8 @@ void printRtsInfo(const RtsConfig rts_config) {
     mkRtsInfoPair("Tables next to code",     TablesNextToCode);
     mkRtsInfoPair("Flag -with-rtsopts",      /* See #15261 */
         rts_config.rts_opts != NULL ? rts_config.rts_opts : "");
+    selectIOManager(); /* resolve the io-manager, accounting for flags  */
+    mkRtsInfoPair("I/O manager default",     showIOManager());
     printf(" ]\n");
 }