Summary: mds: use TIPC multicast for MDS broadcast [#851] 
Review request for Trac Ticket(s): #851
Peer Reviewer(s): Hans/Anders.widell/Anders.bj
Pull request to: <<LIST THE PERSON WITH PUSH ACCESS HERE>>
Affected branch(es): default
Development branch: default

--------------------------------
Impacted area       Impact y/n
--------------------------------
 Docs                    n
 Build system            n
 RPM/packaging           n
 Configuration files     n
 Startup scripts         n
 SAF services            n
 OpenSAF services        n
 Core libraries          y
 Samples                 n
 Tests                   n
 Other                   n


Comments (indicate scope for each "y" above):
---------------------------------------------

changeset c6de7935bc53f5b96ee0cf604e29d2784c6e4fca
Author: A V Mahesh <mahesh.va...@oracle.com>
Date:   Thu, 07 Aug 2014 12:13:04 +0530

        mds: use TIPC multicast for MDS broadcast [#851] Brief note on Multicast
        Enhancement Ticket:
        
-----------------------------------------------------------------------------
        Currently Opensaf Broadcast message was implemented as multiple
        unicasts (that means Broadcast message was reaching N nodes in T-1 to 
T-N
        time based on the number of nodes) ,after the ticket #851 changes , the
        Opensaf Broadcast message will be utilizing TIPC Multicast , that means
        message may reach T-1 time irrelevant of number of nodes in the cluster.

        This Enhancement of TIPC multicast make sure or receives broadcast 
message
        at same instant of Time . So this enhancement provides an improvement of
        node cluster or node cluster should take same bring up time ,and it also
        eliminate timing issue that were facing because multiple unicasts.

        But it also improves load time and sync time because of reduced 
unnecessary
        load to the sending process.

        Code changes :
        
-----------------------------------------------------------------------------
        
        - The Code changes are only effects to MDS TIPC transport , NO Changes 
in
        MDS TCP transport .This change are with in-service upgrade support.

        - Now the MDS TIPC transport sendto() for SENDTYPE BCAST & RBCAST 
addrtype
        is TIPC_ADDR_MCAST.

        - A single multicast message can accommodate max of 
MDS_DIRECT_BUF_MAXSIZE
        (2^16).

        - MDS_SVC_INFO structure has a new variable , which maintains count of
        previous Opensaf version subscribers count for this service.

         a subscribe/unsubscribe of previous Opensaf version service for this
        service.

        - If the count is ZERO means all are nodes in the cluster has new 
version
        Opensaf

        - If the count is grater than ZERO means nodes in the cluster has both
        old and new version Opensaf.

        - If the count is ZERO the SENDTYPE BCAST & RBCAST messages will be sent
        as TIPC Multicast and this is at service level.

        - If the count is grater than ZERO SENDTYPE BCAST & RBCAST messages will
        be sent as previous multiple unicasts and this is at service level.

        Opensaf Services Code Tuning :
        
-----------------------------------------------------------------------------
        While adopting new Multicast messaging I came across following
        Opensaf integration issue in very complex test cases ,in n normal
        conditions/use case these issue may not occur.

        But I have created ticket for all of the so these tickets required to be
        fixed to Multicast to work with out any issues even in complex 
conditions.

         1. https://sourceforge.net/p/opensaf/tickets/952/ 2.
        https://sourceforge.net/p/opensaf/tickets/953/ 3.
        https://sourceforge.net/p/opensaf/tickets/954/ 4.
        https://sourceforge.net/p/opensaf/tickets/955/ 5.
        https://sourceforge.net/p/opensaf/tickets/946/

changeset 5f86111a818ccff18f6a9cd93d12ac7b15b3a7d3
Author: A V Mahesh <mahesh.va...@oracle.com>
Date:   Thu, 07 Aug 2014 12:14:11 +0530

        imm: tune imm macros according to mds mcast size [#851]

         - No functional changes.

         - The IMM IMMSV_DEFAULT_MAX_SYNC_BATCH_SIZE is limited to 90%
           MDS_DIRECT_BUF_MAXSIZE (2^16) to accommodate IMM header data.

changeset e446a201760b8e1e2674fa022b622af0aa5ce34f
Author: A V Mahesh <mahesh.va...@oracle.com>
Date:   Thu, 07 Aug 2014 13:56:07 +0530

        mds: support multicast for n_way configuration [#851]

        - The existing Opensaf Broadcast message was implemented such that the 
Bcast
        messes will be send to only the active subscribers as multiple unicast,
        assuming that the subscription list may have n_way_active & n_way.

        - But currently we don't have any n_way configuration in the current 
Opensaf
        middle ware , and so far we didn't come across such n_way configuration
        application.

        - In case of Multicast Messaging TIPC to send a copy of the message to 
every
        port in the sender's cluster irrelevant of role of the subscriber (
        assuming application will filter it based on active/standby)

        - So to match existing Opensaf Broadcast message , i am providing this
        Option patch as well.

        - If community thinks this is required we will push this optional patch 
,
        otherwise we will attach this to ticket for future use when we will 
suppor
        n_way .

        Code changes :

        Before sending the Multicast Messaging , query the subscribers for any
        standby exist (n_way subscribers list) , if (if standby exist) send old
        type Broadcast message as multiple unicast only to actives , else in the
        case of n_way_active configuration sends Multicast Message.


Complete diffstat:
------------------
 osaf/libs/common/immsv/include/immsv_api.h     |    6 ++--
 osaf/libs/core/mds/include/mds_core.h          |    5 ++++
 osaf/libs/core/mds/mds_c_api.c                 |   19 ++++++++++++--
 osaf/libs/core/mds/mds_c_db.c                  |   29 +++++++++++++++++++++++
 osaf/libs/core/mds/mds_c_sndrcv.c              |  126 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
 osaf/libs/core/mds/mds_dt_tipc.c               |   69 
++++++++++++++++++++++++++++++++++++++++++++++++++----
 osaf/libs/core/mds/mds_main.c                  |    2 +-
 osaf/services/saf/immsv/immloadd/imm_loader.cc |    8 +++++-
 8 files changed, 208 insertions(+), 56 deletions(-)


Testing Commands:
-----------------
s Patch has improved ~50% of performance 
 
I have considered IMM concurrently syncing multiple Payload for
measuring Benchmarks of the Multicast Messaging ( this is one of the case where
Multicast/Broadcast being used with high frequency ).
 

With Multicast changes ,all restarted Node now joining cluster with in
~42 seconds , which used to take ~74 seconds when One million IMM objects 
are involved in sync process.


Following are the benchmarking figure:


OpenSAF 4.5 release ( Default staging) WITH #851 Multicast patch:-
-----------------------------------------------------------------------
Jul 15 15:40:59 SLES-SLOT2 opensafd: Starting OpenSAF Services
Jul 15 15:41:43 SLES-SLOT2 opensafd: OpenSAF(4.5.M0 - ) services
successfully started <=== 42 Seconds
 
Jul 15 15:40:58 SLES-SLOT3 opensafd: Starting OpenSAF Services
Jul 15 15:41:42 SLES-SLOT3 opensafd: OpenSAF(4.5.M0 - ) services
successfully started <=== 44 Seconds

Jul 15 15:41:30 SLES-SLOT4 opensafd: Starting OpenSAF Services
Jul 15 15:42:12 SLES-SLOT4 opensafd: OpenSAF(4.5.M0 - ) services
successfully started <=== 42 Seconds
-----------------------------------------------------------------------


OpenSAF 4.5 release ( Default staging) WITH-OUT #851 Multicast patch:-
----------------------------------------------------------------------
Jul 15 15:21:21 SLES-SLOT2 opensafd: Starting OpenSAF Services
Jul 15 15:22:36 SLES-SLOT2 opensafd: OpenSAF(4.5.M0 - ) services
successfully started <=== 74 Seconds
 
Jul 15 15:21:20 SLES-SLOT3 opensafd: Starting OpenSAF Services
Jul 15 15:22:34 SLES-SLOT3 opensafd: OpenSAF(4.5.M0 - ) services
successfully started <=== 74 Seconds
 
Jul 15 15:21:51 SLES-SLOT4 opensafd: Starting OpenSAF Services
Jul 15 15:23:05 SLES-SLOT4 opensafd: OpenSAF(4.5.M0 - ) services
successfully started <=== 74 Seconds
------------------------------------------------------------------------
 

Note : need to make sure IMMND(s) of each restated node SERVER STATE
should be in `IMM_SERVER_SYNC_CLIENT` at same point of time.
 

You can achieve this programmatically by hacking/commenting code
`cb->mLostNodes--;` line : 580 of `immnd_proc.c` file.

 

Testing, Expected Results:
--------------------------
 <<PASTE COMMAND OUTPUTS / TEST RESULTS>>


Conditions of Submission:
-------------------------
Ack from Reviewer

Arch      Built     Started    Linux distro
-------------------------------------------
mips        n          n
mips64      n          n
x86         n          n
x86_64      y          y
powerpc     n          n
powerpc64   n          n


Reviewer Checklist:
-------------------
[Submitters: make sure that your review doesn't trigger any checkmarks!]


Your checkin has not passed review because (see checked entries):

___ Your RR template is generally incomplete; it has too many blank entries
    that need proper data filled in.

___ You have failed to nominate the proper persons for review and push.

___ Your patches do not have proper short+long header

___ You have grammar/spelling in your header that is unacceptable.

___ You have exceeded a sensible line length in your headers/comments/text.

___ You have failed to put in a proper Trac Ticket # into your commits.

___ You have incorrectly put/left internal data in your comments/files
    (i.e. internal bug tracking tool IDs, product names etc)

___ You have not given any evidence of testing beyond basic build tests.
    Demonstrate some level of runtime or other sanity testing.

___ You have ^M present in some of your files. These have to be removed.

___ You have needlessly changed whitespace or added whitespace crimes
    like trailing spaces, or spaces before tabs.

___ You have mixed real technical changes with whitespace and other
    cosmetic code cleanup changes. These have to be separate commits.

___ You need to refactor your submission into logical chunks; there is
    too much content into a single commit.

___ You have extraneous garbage in your review (merge commits etc)

___ You have giant attachments which should never have been sent;
    Instead you should place your content in a public tree to be pulled.

___ You have too many commits attached to an e-mail; resend as threaded
    commits, or place in a public tree for a pull.

___ You have resent this content multiple times without a clear indication
    of what has changed between each re-send.

___ You have failed to adequately and individually address all of the
    comments and change requests that were proposed in the initial review.

___ You have a misconfigured ~/.hgrc file (i.e. username, email etc)

___ Your computer have a badly configured date and time; confusing the
    the threaded patch review.

___ Your changes affect IPC mechanism, and you don't present any results
    for in-service upgradability test.

___ Your changes affect user manual and documentation, your patch series
    do not contain the patch that updates the Doxygen manual.


------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to