diff --git a/core/log_io.c b/core/log_io.c
index 3fc16a11d9d852fe4323d550de32a5c477935080..cd1898b2c69f9e898fe84d619bf244e9af4644b2 100644
--- a/core/log_io.c
+++ b/core/log_io.c
@@ -1177,6 +1177,9 @@ write_to_disk(void *_state, struct tbuf *t)
 	u32 result = 0;
 	int suffix = 0;
 
+	/* we're not running inside ev_loop, so update ev_now manually */
+	ev_now_update();
+
 	/* caller requested termination */
 	if (t == NULL) {
 		if (wal != NULL)
diff --git a/core/log_io_remote.c b/core/log_io_remote.c
index 264485fa7ca5e65043db89b81a0144d61a379ecf..df85f1bd0caf27c00b3eb5726f9ca25cc880a2a7 100644
--- a/core/log_io_remote.c
+++ b/core/log_io_remote.c
@@ -129,6 +129,7 @@ pull_from_remote(void *state)
 	for (;;) {
 		row = remote_read_row(h->r->confirmed_lsn + 1);
 		h->r->recovery_lag = ev_now() - row_v11(row)->tm;
+		h->r->recovery_last_update_tstamp = ev_now();
 
 		if (h->handler(h->r, row) < 0)
 			continue;
diff --git a/include/log_io.h b/include/log_io.h
index 53d8d41bb080daad0d0cccbd91ad39a107ffe14a..fe20ccf40f22638281f636ac9e3a1f18fa43bb65 100644
--- a/include/log_io.h
+++ b/include/log_io.h
@@ -84,7 +84,7 @@ struct recovery_state {
 	   log_io_class->reader is responsible of converting data from old format */
 	row_handler *wal_row_handler, *snap_row_handler;
 	ev_timer wal_timer;
-	ev_tstamp recovery_lag;
+	ev_tstamp recovery_lag, recovery_last_update_tstamp;
 
 	int snap_io_rate_limit;
 
diff --git a/mod/silverbox/box.c b/mod/silverbox/box.c
index 6c758d3157c0464f40572b43d0ae9a0222d239fa..cc246d5aaaae6a239f1f058c3251e994396c6528 100644
--- a/mod/silverbox/box.c
+++ b/mod/silverbox/box.c
@@ -1886,6 +1886,8 @@ mod_info(struct tbuf *out)
 	tbuf_printf(out, "  pid: %i\r\n", getpid());
 	tbuf_printf(out, "  wal_writer_pid: %" PRIi64 "\r\n", (i64)recovery_state->wal_writer->pid);
 	tbuf_printf(out, "  lsn: %" PRIi64 "\r\n", recovery_state->confirmed_lsn);
+	tbuf_printf(out, "  recovery_lag: %.3f\r\n", recovery_state->recovery_lag);
+	tbuf_printf(out, "  recovery_last_update: %.3f\r\n", recovery_state->recovery_last_update_tstamp);
 	tbuf_printf(out, "  status: %s\r\n", status);
 }