[lustre-devel] [PATCH 1/6] Autoconf option for rate-limiting Quality of Service (RLQOS)

Ben Evans bevans at cray.com
Tue Mar 21 13:09:26 PDT 2017


I would remove the #ifdef ENABLE_RLQOS blocks, especially in lustre_idl.h
since you're proposing to add new fields and consume some of the padding
bits.  It will cause a lot of headache for the next feature that comes
along and consumes some of those bits.

-Ben Evans

On 3/21/17, 3:43 PM, "lustre-devel on behalf of Yan Li"
<lustre-devel-bounces at lists.lustre.org on behalf of yanli at ascar.io> wrote:

>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).
>
>RLQOS can be enabled by passing --enable-rlqos to configure. It then
>can be controlled by tunables in procfs of each osc.
>
>[1] http://storageconference.us/2015/Papers/14.Li.pdf
>
>Signed-off-by: Yan Li <yanli at ascar.io>
>---
> lustre/autoconf/lustre-core.m4 | 17 +++++++++++++++++
> lustre/include/Makefile.am     |  3 ++-
> 2 files changed, 19 insertions(+), 1 deletion(-)
>
>diff --git a/lustre/autoconf/lustre-core.m4
>b/lustre/autoconf/lustre-core.m4
>index 0578325..7f1828e 100644
>--- a/lustre/autoconf/lustre-core.m4
>+++ b/lustre/autoconf/lustre-core.m4
>@@ -369,6 +369,22 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
> AC_MSG_RESULT([$enable_ssk])
> ]) # LC_OPENSSL_SSK
> 
>+#
>+# LC_CONFIG_RLQOS
>+#
>+# Rate-limiting Quality of Service support
>+#
>+AC_DEFUN([LC_CONFIG_RLQOS], [
>+AC_MSG_CHECKING([whether to enable rate-limiting quality of service
>support])
>+AC_ARG_ENABLE([rlqos],
>+	AC_HELP_STRING([--enable-rlqos],
>+		[enable rate-limiting quality of service support]),
>+	[], [enable_rlqos="no"])
>+AC_MSG_RESULT([$enable_rlqos])
>+AS_IF([test "x$enable_rlqos" != xno],
>+	[AC_DEFINE(ENABLE_RLQOS, 1, [enable rate-limiting quality of service
>support])])
>+]) # LC_CONFIG_RLQOS
>+
> # LC_INODE_PERMISION_2ARGS
> #
> # up to v2.6.27 had a 3 arg version (inode, mask, nameidata)
>@@ -2241,6 +2257,7 @@ AC_DEFUN([LC_PROG_LINUX], [
> 	LC_GLIBC_SUPPORT_FHANDLES
> 	LC_CONFIG_GSS
> 	LC_OPENSSL_SSK
>+	LC_CONFIG_RLQOS
> 
> 	# 2.6.32
> 	LC_BLK_QUEUE_MAX_SEGMENTS
>diff --git a/lustre/include/Makefile.am b/lustre/include/Makefile.am
>index 9074ca4..6d72b6e 100644
>--- a/lustre/include/Makefile.am
>+++ b/lustre/include/Makefile.am
>@@ -98,4 +98,5 @@ EXTRA_DIST = \
> 	upcall_cache.h \
> 	lustre_kernelcomm.h \
> 	seq_range.h \
>-	uapi_kernelcomm.h
>+	uapi_kernelcomm.h \
>+	rlqos.h
>-- 
>1.8.3.1
>
>_______________________________________________
>lustre-devel mailing list
>lustre-devel at lists.lustre.org
>http://lists.lustre.org/listinfo.cgi/lustre-devel-lustre.org



More information about the lustre-devel mailing list