All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Historical Service Time Path Selector
@ 2020-04-16 21:13 Gabriel Krisman Bertazi
  2020-04-16 21:13 ` [PATCH 1/2] md: Expose struct request to path selector Gabriel Krisman Bertazi
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Gabriel Krisman Bertazi @ 2020-04-16 21:13 UTC (permalink / raw)
  To: agk, snitzer
  Cc: dm-devel, linux-kernel, song, khazhy, Gabriel Krisman Bertazi, kernel

Hello,

This small series implements a new path selector that leverages
historical path IO time in order to estimate future path performance.
Implementation details can be found on Patch 2.

This selector yields better path distribution, considering the mean
deviation from the calculated optimal utilization, for small IO depths
when compared to the Service Time selector with fio benchmarks.  For
instance, on a multipath setup with 4 paths, where one path is 4 times
slower than the rest, issuing 500MB of randwrites, we have the following
path utilization rates:

      |    depth=1    |    depth=64   |       |
      |   ST  |   HST |   ST  |   HST |  Best |
|-----+-------+-------+-------+-------+-------|
| sda | 0.250 | 0.294 | 0.297 | 0.294 | 0.307 |
| sdb | 0.250 | 0.297 | 0.296 | 0.297 | 0.307 |
| sdc | 0.250 | 0.296 | 0.298 | 0.296 | 0.307 |
| sdd | 0.250 | 0.112 | 0.106 | 0.112 | 0.076 |

For small depths, HST is much quicker in detecting slow paths and has a
better selection than ST.  As the iodepth increases, ST gets close to
HST, which still behaves steadily.

The raw performance data for different depths types of IO can be found
at:

  <https://people.collabora.com/~krisman/GOO0012/hst-vs-st-bench.html>

This was tested primarily on a Google cloud SAN with real data and usage
patterns and with artificial benchmarks using fio.

Khazhismel Kumykov (2):
  md: Expose struct request to path selector
  md: Add Historical Service Time Path Selector

 drivers/md/Kconfig                      |  11 +
 drivers/md/Makefile                     |   1 +
 drivers/md/dm-historical-service-time.c | 561 ++++++++++++++++++++++++
 drivers/md/dm-mpath.c                   |  12 +-
 drivers/md/dm-path-selector.h           |   6 +
 5 files changed, 589 insertions(+), 2 deletions(-)
 create mode 100644 drivers/md/dm-historical-service-time.c

-- 
2.26.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-04-26 20:00 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-16 21:13 [PATCH 0/2] Historical Service Time Path Selector Gabriel Krisman Bertazi
2020-04-16 21:13 ` [PATCH 1/2] md: Expose struct request to path selector Gabriel Krisman Bertazi
2020-04-16 21:13 ` [PATCH 2/2] md: Add Historical Service Time Path Selector Gabriel Krisman Bertazi
2020-04-23 20:59 ` [PATCH 0/2] " Mike Snitzer
2020-04-26 20:00   ` Gabriel Krisman Bertazi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.