]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - fs/jbd2/journal.c
jbd2: track request delay statistics
[karo-tx-linux.git] / fs / jbd2 / journal.c
index 1a80e3146a59f0cba8435783b207a7aa16b96bae..4ba2e81e35ac8da784f7172612519a01bb6cb8af 100644 (file)
@@ -533,6 +533,7 @@ int __jbd2_log_start_commit(journal_t *journal, tid_t target)
                jbd_debug(1, "JBD2: requesting commit %d/%d\n",
                          journal->j_commit_request,
                          journal->j_commit_sequence);
+               journal->j_running_transaction->t_requested = jiffies;
                wake_up(&journal->j_wait_commit);
                return 1;
        } else if (!tid_geq(journal->j_commit_request, target))
@@ -898,13 +899,18 @@ static int jbd2_seq_info_show(struct seq_file *seq, void *v)
 
        if (v != SEQ_START_TOKEN)
                return 0;
-       seq_printf(seq, "%lu transaction, each up to %u blocks\n",
-                       s->stats->ts_tid,
-                       s->journal->j_max_transaction_buffers);
+       seq_printf(seq, "%lu transactions (%lu requested), "
+                  "each up to %u blocks\n",
+                  s->stats->ts_tid, s->stats->ts_requested,
+                  s->journal->j_max_transaction_buffers);
        if (s->stats->ts_tid == 0)
                return 0;
        seq_printf(seq, "average: \n  %ums waiting for transaction\n",
            jiffies_to_msecs(s->stats->run.rs_wait / s->stats->ts_tid));
+       seq_printf(seq, "  %ums request delay\n",
+           (s->stats->ts_requested == 0) ? 0 :
+           jiffies_to_msecs(s->stats->run.rs_request_delay /
+                            s->stats->ts_requested));
        seq_printf(seq, "  %ums running transaction\n",
            jiffies_to_msecs(s->stats->run.rs_running / s->stats->ts_tid));
        seq_printf(seq, "  %ums transaction was being locked\n",