From: Yan Li <yanli@ascar.io>
To: lustre-devel@lists.lustre.org
Subject: [lustre-devel] [PATCH 0/6] Rate-limiting Quality of Service
Date: Tue, 21 Mar 2017 12:43:27 -0700 [thread overview]
Message-ID: <cover.1490122510.git.yanli@ascar.io> (raw)
This patch enables rate-limiting quality of service (RLQOS) support as
talked in the ASCAR paper [1]. The purpose of RLQOS is to provide a
client-side rate limiting mechanism that controls max_rpcs_in_flight
and minimal gap between brw RPC requests (called tau in the code and
paper). It is very different from the existing LOV QOS in Lustre. I
have presented this work at LUG'16 and am sorry for the belated code
release. This is my first code patch to the Lustre mailing list so I'm
sure lot of things can be improved. Please kindly let me know.
The main idea is to provide a rule-based rate limiting mechanism on
Lustre clients that can be used to ease congestion and improve
performance during peak hours. The rules designate how
max_rpcs_in_flight and tau can be changed based on three metrics. The
rules are set through a procfs handle. In the research paper [1], a
machine learning-based heuristics method is used to generate the
traffic control rules that can improve performance. The traffic
control rules can also be hand crafted based on benchmark results.
I probably should write more details here but the email would be
rather long. The paper [1] has detailed introduction of the idea and
implementation. I also believe there should be better documentation on
this feature. I'm not sure if I should create a wiki page for this or
provide a documentation within the code base.
This function is still under development, and the latest code can be
found at https://github.com/mlogic/ascar-lustre-2.9-client .
This research was supported in part by the National Science Foundation
under awards IIP-1266400, CCF-1219163, CNS-1018928, CNS-1528179, by
the Department of Energy under award DE-FC02-10ER26017/DESC0005417, by
a Symantec Graduate Fellowship, by a grant from Intel Corporation, and
by industrial members of the Center for Research in Storage Systems in
UC Santa Cruz.
[1] http://storageconference.us/2015/Papers/14.Li.pdf
Yan Li (6):
Autoconf option for rate-limiting Quality of Service (RLQOS)
Added fields to message for RLQOS support
RLQOS main data structure
lprocfs interfaces for showing, parsing, and controlling rules
Throttle the outgoing requests according to tau
Adjust max_rpcs_in_flight according to metrics
lustre/autoconf/lustre-core.m4 | 17 ++++
lustre/include/Makefile.am | 3 +-
lustre/include/lustre/lustre_idl.h | 4 +
lustre/include/obd.h | 8 ++
lustre/include/rlqos.h | 136 ++++++++++++++++++++++++++++++
lustre/obdclass/genops.c | 25 ++++++
lustre/obdclass/lprocfs_status.c | 32 +++++++
lustre/osc/Makefile.in | 2 +-
lustre/osc/lproc_osc.c | 157 ++++++++++++++++++++++++++++++-----
lustre/osc/osc_cache.c | 3 +
lustre/osc/osc_internal.h | 66 +++++++++++++++
lustre/osc/osc_request.c | 165 +++++++++++++++++++++++++++++++++++++
lustre/osc/qos_rules.c | 125 ++++++++++++++++++++++++++++
lustre/ptlrpc/pack_generic.c | 5 ++
lustre/ptlrpc/wiretest.c | 2 +
lustre/utils/wiretest.c | 2 +
16 files changed, 730 insertions(+), 22 deletions(-)
create mode 100644 lustre/include/rlqos.h
create mode 100644 lustre/osc/qos_rules.c
--
1.8.3.1
next reply other threads:[~2017-03-21 19:43 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-21 19:43 Yan Li [this message]
2017-03-21 19:43 ` [lustre-devel] [PATCH 1/6] Autoconf option for rate-limiting Quality of Service (RLQOS) Yan Li
2017-03-21 20:09 ` Ben Evans
2017-03-22 14:19 ` Yan Li
2017-03-22 14:27 ` Ben Evans
2017-03-24 22:22 ` Dilger, Andreas
[not found] ` <3BE4A898-D944-41F9-84C8-FE8DA80D0D65@datadirectnet.com>
2017-04-14 2:55 ` Yan Li
2017-04-17 12:32 ` Brinkmann, Prof. Dr. André
2017-04-17 16:46 ` Yan Li
2017-04-21 12:50 ` Brinkmann, Prof. Dr. André
2017-03-21 19:43 ` [lustre-devel] [PATCH 2/6] Added fields to message for RLQOS support Yan Li
2017-03-23 14:54 ` Alexey Lyashkov
2017-03-21 19:43 ` [lustre-devel] [PATCH 3/6] RLQOS main data structure Yan Li
2017-03-21 19:43 ` [lustre-devel] [PATCH 4/6] lprocfs interfaces for showing, parsing, and controlling rules Yan Li
2017-03-21 19:43 ` [lustre-devel] [PATCH 5/6] Throttle the outgoing requests according to tau Yan Li
2017-03-23 14:03 ` Alexey Lyashkov
2017-03-21 19:43 ` [lustre-devel] [PATCH 6/6] Adjust max_rpcs_in_flight according to metrics Yan Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1490122510.git.yanli@ascar.io \
--to=yanli@ascar.io \
--cc=lustre-devel@lists.lustre.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.