Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-8382

Processlist returns random numbers in Time column

    XMLWordPrintable

    Details

      Description

      MariaDB [test]> show status like 'uptime';
      +---------------+-------+
      | Variable_name | Value |
      +---------------+-------+
      | Uptime        | 119   |
      +---------------+-------+
      1 row in set (0.00 sec)
       
      MariaDB [test]> show processlist ;
      +----+------+-----------------+------+---------+----------+-------+------------------+----------+
      | Id | User | Host            | db   | Command | Time     | State | Info             | Progress |
      +----+------+-----------------+------+---------+----------+-------+------------------+----------+
      |  3 | root | localhost:47560 | test | Sleep   | 36680651 |       | NULL             |    0.000 |
      |  4 | root | localhost:47561 | test | Query   |       94 | init  | show processlist |    0.000 |
      +----+------+-----------------+------+---------+----------+-------+------------------+----------+
      2 rows in set (0.00 sec)
       
      MariaDB [test]> show processlist ;
      +----+------+-----------------+------+---------+----------+-------+------------------+----------+
      | Id | User | Host            | db   | Command | Time     | State | Info             | Progress |
      +----+------+-----------------+------+---------+----------+-------+------------------+----------+
      |  3 | root | localhost:47560 | test | Sleep   | 44551816 |       | NULL             |    0.000 |
      |  4 | root | localhost:47561 | test | Query   |       78 | init  | show processlist |    0.000 |
      +----+------+-----------------+------+---------+----------+-------+------------------+----------+
      2 rows in set (0.00 sec)

      No need to do anything special, just start the server, open a couple of connections and run show processlist a few times.

      The regression was introduced by the following commit:

      commit 8f603bcbcac4a9091b6adbca3fd3655a947e759a 2bc6e29afeea374aa0ef4bc36c7a7b649c20d959
      Author: Sergey Vojtovich <svoj@mariadb.org>
      Date:   Wed Jun 17 18:55:38 2015 +0400
       
          MDEV-7952 - clock_gettime() takes 0.24% in OLTP RO
          
          Initialize abs_timeout when it is about to be used. This saves one my_hrtime()
          call on hot path (when we acquire MDL lock without waiting).
          
          When filling I_S.PROCESSLIST use THD::start_utime/THD::utime_after_query instead
          of THD::start_time. This allows us to save 2 clock_gettime() calls.
          
          Overhead change:
          __clock_gettime   0.13% -> 0.11% (122 -> 76 calls per OLTP RO transaction)
          my_interval_timer 0.07% -> 0.06%
          my_hrtime         0.04% -> 0.01%

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              svoj Sergey Vojtovich
              Reporter:
              elenst Elena Stepanova
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: