Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-7533

Throttle writting threads according fsync progress and checkpoint writting speed instead of region fill

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.3
    • Fix Version/s: 2.5
    • Component/s: persistence
    • Labels:
      None

      Description

      Throttling implemented under IGNITE-6334 is based on region fill percentage (ditry pages ratio) and current checkpoint progress.

      But actual progress of writting is based on write operation complete, but not on fsync() complete.

      Suppose following stage of CP is currently running: most of data is being written and fsync is started. Fsync on experiments requires more time than write, but throttling is disabled for that stage. There is enough time to unthrottled grid to fill remaining 16% of clear pages to get sufficient 75% of dirty pages and writes stops.

      Fsync progress is to be included in checkpoint progress, but actual fsync progress reported by OS is irregular both on Linux and Windows. See picture, green line is fsync progress, and yellow is write complete.

      Because fsync progress reported is not regular (the differences are 3-4 orders of magnitude) it is suggested to implement new speed based throttling policy.

        Attachments

        1. imageSpeedBased.png
          61 kB
          Dmitriy Pavlov
        2. imageRatioBased.png
          40 kB
          Dmitriy Pavlov
        3. image (2).png
          89 kB
          Dmitriy Pavlov

          Issue Links

            Activity

              People

              • Assignee:
                dpavlov Dmitriy Pavlov
                Reporter:
                dpavlov Dmitriy Pavlov
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: