From c05285e8b49994f32ef085f2b28b0c78e5a03ea3 Mon Sep 17 00:00:00 2001 From: Emoly Liu Date: Fri, 16 Mar 2018 09:12:05 +0800 Subject: [PATCH] LUDOC-328 tbf: add HTC strategy to NRS-TBF section Update NRS-TBF policy section to reflect Hard Token Compensation (HTC) strategy: - meet realtime requirement with a new rule option "realtime=1" - Lustre-commit: d11fa2c279593634cf6c4196b413a6d285b24e10 - Lustre-change: http://review.whamcloud.com/26087 Change-Id: I07ece7bd3022351a7f71d1ba9cfd2193d8261ccd Signed-off-by: Emoly Liu Reviewed-on: https://review.whamcloud.com/31628 Tested-by: Jenkins Reviewed-by: Joseph Gmitter --- LustreTuning.xml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/LustreTuning.xml b/LustreTuning.xml index 055fe93..5b89770 100644 --- a/LustreTuning.xml +++ b/LustreTuning.xml @@ -1866,6 +1866,39 @@ iozone_user1 opcode={ost_read ost_write} 200, ref 0 computes nid={192.168.1.[2-128]@tcp} 500, ref 0 default * 10000, ref 0 + + TBF realtime policies under congestion + + During TBF evaluation, we find that when the sum of I/O + bandwidth requirements for all classes exceeds the system capacity, + the classes with the same rate limits get less bandwidth than if + preconfigured evenly. The reason for this is the heavy load on a + congested server will result in some missed deadlines for some + classes. The number of the calculated tokens may be larger than 1 + during dequeuing. In the original implementation, all classes are + equally handled to simply discard exceeding tokens. + Thus, a Hard Token Compensation (HTC) strategy has been + implemented. A class can be configured with the HTC feature by the + rule it matches. This feature means that requests in this kind of + class queues have high real-time requirements and that the bandwidth + assignment must be satisfied as good as possible. When deadline + misses happen, the class keeps the deadline unchanged and the time + residue(the remainder of elapsed time divided by 1/r) is compensated + to the next round. This ensures that the next idle I/O thread will + always select this class to serve until all accumulated exceeding + tokens are handled or there are no pending requests in the class + queue. + Command: + A new command format is added to enable the realtime feature + for a rule: + lctl set_param x.x.x.nrs_tbf_rule=\ +"start rule_name arguments... realtime=1 + Example: + $ lctl set_param ost.OSS.ost_io.nrs_tbf_rule= +"start realjob jobid={dd.0} rate=100 realtime=1 + This example rule means the RPC requests whose JobID is dd.0 + will be processed at the rate of 100req/sec in realtime. + -- 1.8.3.1