Dear Mahesh,

I would like to send my ideal about this.
Please consider it.

- I'm agree this modification will enhance writing performance.
- I checked opensaf-4.7.x both newest changeset (7886) and tested changeset
(7640) and found the same source code. So I think that this fixing will not
solve the problem of performance degradation from 4.7.x to 5.0.x.

Thank you and best regards,
Hoang

-----Original Message-----
From: mahesh.va...@oracle.com [mailto:mahesh.va...@oracle.com] 
Sent: Thursday, August 18, 2016 4:10 PM
To: nhat.p...@dektech.com.au; hoang.m...@dektech.com.au
Cc: opensaf-devel@lists.sourceforge.net
Subject: [PATCH 1 of 1] cpa: remove multiple sync_send() calls in case of
multiple vector write [#1849]

 osaf/libs/agents/saf/cpa/cpa_api.c |  17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)


Issue :
In current saCkptCheckpointWrite() , in case of multiple ioVector  write
case  ( > 1 ) multiple calls made for cpa_mds_msg_sync_send() , which is
cause  performance issue .

Fix :
It is not required to call cpa_mds_msg_sync_send() multiple time , so fixed
to call only once.

diff --git a/osaf/libs/agents/saf/cpa/cpa_api.c
b/osaf/libs/agents/saf/cpa/cpa_api.c
--- a/osaf/libs/agents/saf/cpa/cpa_api.c
+++ b/osaf/libs/agents/saf/cpa/cpa_api.c
@@ -3523,17 +3523,16 @@ SaAisErrorT saCkptCheckpointWrite(SaCkpt
        /* Unlock cpa_lock before calling mds api */
        m_NCS_UNLOCK(&cb->cb_lock, NCS_LOCK_WRITE);
 
-       for (iter = 0; iter < numberOfElements; iter++) {
+       for (iter = 0; iter < numberOfElements; iter++)
                all_ioVector_size += ioVector[iter].dataSize;
-               time_out = CPA_WAIT_TIME(all_ioVector_size);
- 
-               if (time_out < CPSV_WAIT_TIME) {
-                       time_out = CPSV_WAIT_TIME;
-               }
-               proc_rc = cpa_mds_msg_sync_send(cb->cpa_mds_hdl,
&(gc_node->active_mds_dest),
+               
+       time_out = CPA_WAIT_TIME(all_ioVector_size);
+       if (time_out < CPSV_WAIT_TIME) {
+               time_out = CPSV_WAIT_TIME;
+       }
+       
+       proc_rc = cpa_mds_msg_sync_send(cb->cpa_mds_hdl, 
+&(gc_node->active_mds_dest),
                                &evt, &out_evt, time_out);
-
-       }
        /* Generate rc from proc_rc */
        switch (proc_rc)
        {


------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to