public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
From: Yevgeny Kliteynik <kliteyn-VPRAkNaXOzVS1MOuV/RT9w@public.gmane.org>
To: Jim Schutt <jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
Cc: "linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org"
	<sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org>,
	"eitan-VPRAkNaXOzVS1MOuV/RT9w@public.gmane.org"
	<eitan-VPRAkNaXOzVS1MOuV/RT9w@public.gmane.org>
Subject: Re: [PATCH 03/11] opensm: Allow the routing engine to participate in path SL calculations.
Date: Mon, 18 Jan 2010 22:19:38 +0200	[thread overview]
Message-ID: <4B54C25A.2050504@mellanox.co.il> (raw)
In-Reply-To: <1263842661.5550.43.camel-mgfCWIlwujvg4c9jKm7R2O1ftBKYq+Ku@public.gmane.org>

Hi Jim,

On 18/Jan/10 21:24, Jim Schutt wrote:
> Hi Yevgeny,
>
> On Thu, 2010-01-14 at 09:24 -0700, Yevgeny Kliteynik wrote:
>    
>> Jim,
>>
>> On 20/Nov/09 21:15, Jim Schutt wrote:
>>      
>>> LASH already does this, in a hard-coded fashion.
>>>
>>> Generalize this by adding a callback to struct osm_routing_engine that
>>> computes a path SL value, and fix up LASH to use it.
>>>
>>> This patchset causes the requested or QoS-computed SL value to be passed
>>> to the routing engine path SL computation as a hint.  In the event the
>>> routing engine's use of SLs allows it to support more than one QoS level,
>>> it may be able to make use of the SL hint to do so.
>>>
>>> For now, LASH just ignores the hint.
>>>
>>> Note that before this change, if LASH was configured and a specific path
>>> SL value was requested that differed from what LASH needed to route the
>>> fabric without credit loops, the path SL lookup would fail.  Now LASH's
>>> SL value is always used.
>>>
>>> Possibly the choice between failing a path SL request when it conflicts
>>> with routing, vs. always providing an SL value that gives a credit-loop-
>>> free routing, should be user-configurable?
>>>        
>> SL can come from the following places:
>>    - user requested specific SL in PathRecord query
>>    - QoS policy configuration
>>    - SL specified in partition parameters
>>    - basic QoS (no policies, only SL2VL table)
>>    - routing engine
>>
>> Except for QoS policy being able to override SL that is specified in
>> the partition parameters (with an error message in the log), IMHO if
>> there's a conflict between SLs coming from different constraints
>> PathRecord should fail to find a satisfiable path, or at least we
>> should see some error message in the log that the selected SL
>> conflicts with other OSM configurations, but will be used anyway.
>>
>> [snip...]
>>
>>      
>>> @@ -725,6 +707,14 @@ static ib_api_status_t pr_rcv_get_path_parms(IN osm_sa_t * sa,
>>>    		goto Exit;
>>>    	}
>>>
>>> +	/*
>>> +	 * If the routing engine wants to have a say in path SL selection,
>>> +	 * send the currently computed SL value as a hint and let the routing
>>> +	 * engine override it.
>>> +	 */
>>> +	if (p_re&&   p_re->path_sl)
>>> +		sl = p_re->path_sl(p_re->context, sl, p_src_port, p_dest_port);
>>>
>>>        
>> In addition to error message if routing engine overrides the provided
>> hint, need to check whether the returned SL is valid - check the
>> corresponding bit in valid_sl_mask. It might be irrelevant for torus-2QoS
>> routing (not sure yet, need to read more patches :-) ), but it's
>> probably needed in general case.
>>
>> Also, perhaps it would be better to provide the bitmask of available
>> SLs as a hint if there are more than one suitable SL?
>>
>> I mean something like this (didn't try it, didn't even compile it,
>> need corresponding change in the p_re->path_sl callback, it's just
>> to illustrate what I mean):
>>      
> Your suggestion below won't accomplish what I was trying to
> accomplish.
>
> Torus-2QoS needs to encode global path information into the
> SL value in order to provide routing free of credit loops.
>
> But it only needs 3 bits of SL to do this, leaving one free.
> So, it uses that bit to provide two "levels" of quality of
> service.
>
> This usage of SL clashes with the QoS policy engine, which
> uses each SL value to provide up to 16 "levels" of quality
> of service.  So to the QoS policy engine, every SL value
> is distinct, but to torus-2QoS, SL values 0-7 are all the
> same wrt. QoS "level", and SL values 8-15 are also all the
> same wrt. a second QoS "level".
>    

Understood. Please ignore my suggestion.

-- Yevgeny

> I wanted to use the QoS policy engine to configure QoS
> "level" in torus-2QoS, so I used this "hint" idea.
> What torus-2QoS' path_sl() does is append the high-order
> bit from the SL hint, as computed by the QoS policy engine,
> onto the 3 low-order bits that it computes are needed
> to avoid deadlock.
>
> Does that help explain what I'm after?
>
> -- Jim
>
>    
>> ---
>>    opensm/opensm/osm_sa_path_record.c |   47
>> ++++++++++++++++++++++-------------
>>    1 files changed, 29 insertions(+), 18 deletions(-)
>>
>> diff --git a/opensm/opensm/osm_sa_path_record.c
>> b/opensm/opensm/osm_sa_path_record.c
>> index 7120d65..6de8979 100644
>> --- a/opensm/opensm/osm_sa_path_record.c
>> +++ b/opensm/opensm/osm_sa_path_record.c
>> @@ -171,7 +171,7 @@ static ib_api_status_t pr_rcv_get_path_parms(IN
>> osm_sa_t * sa,
>>        uint8_t required_mtu;
>>        uint8_t required_rate;
>>        uint8_t required_pkt_life;
>> -    uint8_t sl;
>> +    uint8_t sl = OSM_DEFAULT_SL;
>>        uint8_t in_port_num;
>>        ib_net16_t dest_lid;
>>        uint8_t i;
>> @@ -688,33 +688,44 @@ static ib_api_status_t pr_rcv_get_path_parms(IN
>> osm_sa_t * sa,
>>                    cl_ntoh16(pkey), sl);
>>            } else
>>                sl = p_prtn->sl;
>> -    } else if (sa->p_subn->opt.qos) {
>> +    }
>> +
>> +    /*
>> +     * If the routing engine wants to have a say in path SL selection,
>> +     * send the currently computed SL value as a hint and let the routing
>> +     * engine override it.
>> +     */
>> +    if (p_re&&  p_re->path_sl)
>> +        sl = p_re->path_sl(p_re->context, valid_sl_mask, p_src_port,
>> p_dest_port);
>> +
>> +    if (sa->p_subn->opt.qos&&  !(valid_sl_mask&  (1<<  sl))) {
>> +        OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 1F24: "
>> +            "Selected SL (%u) leads to VL15\n", sl);
>> +        status = IB_NOT_FOUND;
>> +        goto Exit;
>> +    }
>> +
>> +    if (!(p_re&&  p_re->path_sl)&&
>> +        !(comp_mask&  IB_PR_COMPMASK_SL)&&
>> +        !(p_qos_level&&  p_qos_level->sl_set)&&
>> +        !pkey&&
>> +        (sa->p_subn->opt.qos)) {
>>            if (valid_sl_mask&  (1<<  OSM_DEFAULT_SL))
>>                sl = OSM_DEFAULT_SL;
>>            else {
>>                for (i = 0; i<  IB_MAX_NUM_VLS; i++)
>>                    if (valid_sl_mask&  (1<<  i))
>>                        break;
>> +            if (i == IB_MAX_NUM_VLS) {
>> +                OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR ABCD: "
>> +                    "bla bla bla\n");
>> +                status = IB_NOT_FOUND;
>> +                goto Exit;
>> +            }
>>                sl = i;
>>            }
>> -    } else
>> -        sl = OSM_DEFAULT_SL;
>> -
>> -    if (sa->p_subn->opt.qos&&  !(valid_sl_mask&  (1<<  sl))) {
>> -        OSM_LOG(sa->p_log, OSM_LOG_ERROR, "ERR 1F24: "
>> -            "Selected SL (%u) leads to VL15\n", sl);
>> -        status = IB_NOT_FOUND;
>> -        goto Exit;
>>        }
>>
>> -    /*
>> -     * If the routing engine wants to have a say in path SL selection,
>> -     * send the currently computed SL value as a hint and let the routing
>> -     * engine override it.
>> -     */
>> -    if (p_re&&  p_re->path_sl)
>> -        sl = p_re->path_sl(p_re->context, sl, p_src_port, p_dest_port);
>> -
>>        /* reset pkey when raw traffic */
>>        if (comp_mask&  IB_PR_COMPMASK_RAWTRAFFIC&&
>>            cl_ntoh32(p_pr->hop_flow_raw)&  (1<<  31))
>>      
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>    
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2010-01-18 20:19 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-20 19:14 [PATCH 00/11] Add new torus routing engine: torus-2QoS Jim Schutt
     [not found] ` <1258744509-11148-1-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
2009-11-20 19:15   ` [PATCH 01/11] opensm: Prepare for routing engine input to path record SL lookup and SL2VL map setup Jim Schutt
2009-11-20 19:15   ` [PATCH 02/11] opensm: Allow the routing engine to influence SL2VL calculations Jim Schutt
     [not found]     ` <1258744509-11148-3-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
2010-01-14 12:36       ` Yevgeny Kliteynik
     [not found]         ` <4B4F0FBD.3040308-VPRAkNaXOzVS1MOuV/RT9w@public.gmane.org>
2010-01-14 16:01           ` Jim Schutt
2010-02-10 16:15       ` Yevgeny Kliteynik
     [not found]         ` <4B72DBBD.9020709-VPRAkNaXOzVS1MOuV/RT9w@public.gmane.org>
2010-02-15 21:45           ` Jim Schutt
2009-11-20 19:15   ` [PATCH 03/11] opensm: Allow the routing engine to participate in path SL calculations Jim Schutt
     [not found]     ` <1258744509-11148-4-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
2010-01-14 16:24       ` Yevgeny Kliteynik
     [not found]         ` <4B4F452B.7040007-VPRAkNaXOzVS1MOuV/RT9w@public.gmane.org>
2010-01-18 19:24           ` Jim Schutt
     [not found]             ` <1263842661.5550.43.camel-mgfCWIlwujvg4c9jKm7R2O1ftBKYq+Ku@public.gmane.org>
2010-01-18 20:19               ` Yevgeny Kliteynik [this message]
2009-11-20 19:15   ` [PATCH 04/11] opensm: Track the minimum value in the fabric of data VLs supported Jim Schutt
2009-11-20 19:15   ` [PATCH 06/11] opensm: Enable torus-2QoS routing engine Jim Schutt
2009-11-20 19:15   ` [PATCH 07/11] opensm: Add opensm option to specify file name for extra torus-2QoS configuration information Jim Schutt
2009-11-20 19:15   ` [PATCH 08/11] opensm: Do not require -Q option for torus-2QoS routing engine Jim Schutt
2009-11-20 19:15   ` [PATCH 09/11] opensm: Make it possible to configure no fallback " Jim Schutt
     [not found]     ` <1258744509-11148-9-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
2010-03-04 14:35       ` Yevgeny Kliteynik
     [not found]         ` <4B8FC53C.9060605-VPRAkNaXOzVS1MOuV/RT9w@public.gmane.org>
2010-03-04 21:38           ` Jim Schutt
2009-11-20 19:15   ` [PATCH 10/11] opensm: Avoid havoc in minhop caused by torus-2QoS persistent use of osm_port_t:priv Jim Schutt
2009-11-20 19:15   ` [PATCH 11/11] opensm: Update documentation to describe torus-2QoS Jim Schutt
2009-11-20 19:24   ` [PATCH 05/11] opensm: Add torus-2QoS routing engine Jim Schutt
2009-11-20 19:27   ` torus-2QoS example input files (was Re: [PATCH 00/11] Add new torus routing engine: torus-2QoS) Jim Schutt
2009-12-18 20:50   ` [PATCH 00/12] Add specialized multicast support to new torus routing engine: torus-2QoS Jim Schutt
     [not found]     ` <1261169461-2516-1-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
2009-12-18 20:54       ` [PATCH 05/12] opensm: Enforce torus-2QoS link ordering convention Jim Schutt
2010-02-16 16:16       ` [PATCH 0/3] opensm: Bug fixes for torus-2QoS patchset Jim Schutt
2010-02-16 16:16       ` [PATCH 1/3] opensm: Use local variables when searching for torus-2QoS master spanning tree root Jim Schutt
2010-02-16 16:16       ` [PATCH 2/3] opensm: Fix handling of torus-2QoS topology discovery for radix 4 torus dimensions Jim Schutt
2010-02-16 16:16       ` [PATCH 3/3] opensm: Avoid havoc in dump_ucast_routes() caused by torus-2QoS persistent use of osm_port_t:priv Jim Schutt
2009-12-18 20:50   ` [PATCH 01/12] opensm: Make error message for torus-2QoS dateline specification match code check Jim Schutt
2009-12-18 20:50   ` [PATCH 02/12] opensm: torus-2QoS should fail to route if message deadlock is possible Jim Schutt
2009-12-18 20:50   ` [PATCH 03/12] opensm: Remove unused port specification from torus-2QoS config file parsing Jim Schutt
     [not found]     ` <1261169461-2516-4-git-send-email-jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org>
2009-12-18 20:56       ` Jim Schutt
2009-12-18 20:50   ` [PATCH 04/12] opensm: Fix up some torus-2QoS comments to match code Jim Schutt
2009-12-18 20:50   ` [PATCH 06/12] opensm: Remove redundant function names in torus-2QoS logging Jim Schutt
2009-12-18 20:50   ` [PATCH 07/12] opensm: Make torus-2QoS always use OSM_LOG_INFO, never LOG_INFO Jim Schutt
2009-12-18 20:50   ` [PATCH 08/12] opensm: Add struct osm_routing_engine callback to build spanning trees for multicast Jim Schutt
2009-12-18 20:50   ` [PATCH 09/12] opensm: Make mcast_mgr_purge_tree() available outside osm_mcast_mgr.c Jim Schutt
2009-12-18 20:50   ` [PATCH 10/12] opensm: Implement master spanning tree for torus-2QoS multicast support Jim Schutt
2009-12-18 20:51   ` [PATCH 11/12] opensm: Implement multicast support for torus-2QoS Jim Schutt
2009-12-18 20:51   ` [PATCH 12/12] opensm: Update documentation to describe torus-2QoS multicast support Jim Schutt

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=4B54C25A.2050504@mellanox.co.il \
    --to=kliteyn-vpraknaxozvs1mouv/rt9w@public.gmane.org \
    --cc=eitan-VPRAkNaXOzVS1MOuV/RT9w@public.gmane.org \
    --cc=jaschut-4OHPYypu0djtX7QSmKvirg@public.gmane.org \
    --cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=sashak-smomgflXvOZWk0Htik3J/w@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox