Ok,  ACK.

-AVM

On 4/7/2017 1:05 PM, Anders Widell wrote:
> See reply below.
>
> thanks,
>
> Anders Widell
>
>
> On 04/07/2017 05:17 AM, A V Mahesh wrote:
>> Hi Anders Widell,
>>
>> Ack with following comments :
>>
>> On 4/6/2017 4:55 PM, Anders Widell wrote:
>>> The setting OSAF_CKPT_SHM_ALLOC_GUARANTEE=0 results in increased 
>>> memory usage,
>>> whereas the setting OSAF_CKPT_SHM_ALLOC_GUARANTEE=1 results in lower
>>> performance. Thus, there was no way to configure CKPT to avoid a 
>>> characteristics
>>> regression.
>> Change the commit comment to other way  :
>>
>> OSAF_CKPT_SHM_ALLOC_GUARANTEE=1 results in increased memory usage
>> OSAF_CKPT_SHM_ALLOC_GUARANTEE=0 results in lower performance
>>
>> Change the  following in /etc/opensaf/ckptnd.conf :
>>
>> -  Add comment `The Default configuration is 
>> OSAF_CKPT_SHM_ALLOC_GUARANTEE=2 (Neither per-allocated nor check if 
>> memory is available)
>>    and in this configuration  it is responsibility of application to 
>> make sure the required SHM if application is using  high memory usage. `
>>
>> -  Change  #OSAF_CKPT_SHM_ALLOC_GUARANTEE=2  (default) to 
>> #OSAF_CKPT_SHM_ALLOC_GUARANTEE=0
>
>
> Anders W> I would prefer to keep OSAF_CKPT_SHM_ALLOC_GUARANTEE=2 to 
> show the default setting.
>
>>
>> -AVM
>>
>>
>> On 4/6/2017 4:55 PM, Anders Widell wrote:
>>>   src/ckpt/ckptnd/ckptnd.conf |  6 ++++++
>>>   src/ckpt/ckptnd/cpnd_cb.h   |  3 ++-
>>>   src/ckpt/ckptnd/cpnd_init.c |  3 ++-
>>>   src/ckpt/ckptnd/cpnd_proc.c |  9 +++++----
>>>   src/ckpt/ckptnd/cpnd_res.c  |  9 +++++----
>>>   5 files changed, 20 insertions(+), 10 deletions(-)
>>>
>>>
>>> The setting OSAF_CKPT_SHM_ALLOC_GUARANTEE=0 results in increased 
>>> memory usage,
>>> whereas the setting OSAF_CKPT_SHM_ALLOC_GUARANTEE=1 results in lower
>>> performance. Thus, there was no way to configure CKPT to avoid a 
>>> characteristics
>>> regression.
>>>
>>> Fix this by adding a third option: OSAF_CKPT_SHM_ALLOC_GUARANTEE=2. 
>>> This setting
>>> will be the default, and result in no degradation of performance or 
>>> memory
>>> usage.
>>>
>>> diff --git a/src/ckpt/ckptnd/ckptnd.conf b/src/ckpt/ckptnd/ckptnd.conf
>>> --- a/src/ckpt/ckptnd/ckptnd.conf
>>> +++ b/src/ckpt/ckptnd/ckptnd.conf
>>> @@ -7,5 +7,11 @@
>>>   # Healthcheck keys
>>>   export CPSV_ENV_HEALTHCHECK_KEY="Default"
>>>   +# Controls how shared memory is allocated:
>>> +#  0 - No pre-allocation, but check if memory is available before 
>>> writing
>>> +#  1 - Pre allocated
>>> +#  2 - Neither pre-allocated nor check if memory is available
>>> +#export OSAF_CKPT_SHM_ALLOC_GUARANTEE=2
>>> +
>>>   # Uncomment the next line to enable info level logging
>>>   #args="--loglevel=info"
>>> diff --git a/src/ckpt/ckptnd/cpnd_cb.h b/src/ckpt/ckptnd/cpnd_cb.h
>>> --- a/src/ckpt/ckptnd/cpnd_cb.h
>>> +++ b/src/ckpt/ckptnd/cpnd_cb.h
>>> @@ -1,6 +1,7 @@
>>>   /*      -*- OpenSAF  -*-
>>>    *
>>>    * (C) Copyright 2008 The OpenSAF Foundation
>>> + * Copyright Ericsson AB 2017 - All Rights Reserved.
>>>    *
>>>    * This program is distributed in the hope that it will be useful, 
>>> but
>>>    * WITHOUT ANY WARRANTY; without even the implied warranty of 
>>> MERCHANTABILITY
>>> @@ -322,7 +323,7 @@ typedef struct cpnd_cb_tag {
>>>       NCS_QUEUE cpnd_cpd_deferred_reqs_list;    /* Queue for storing 
>>> CPD timeout requests  */
>>>         bool scAbsenceAllowed;
>>> -    bool shm_alloc_guaranteed;
>>> +    int shm_alloc_guaranteed;
>>>         NCS_SEL_OBJ clm_updated_sel_obj; /* The CLM select object 
>>> updated event */
>>>   diff --git a/src/ckpt/ckptnd/cpnd_init.c 
>>> b/src/ckpt/ckptnd/cpnd_init.c
>>> --- a/src/ckpt/ckptnd/cpnd_init.c
>>> +++ b/src/ckpt/ckptnd/cpnd_init.c
>>> @@ -1,6 +1,7 @@
>>>   /*      -*- OpenSAF  -*-
>>>    *
>>>    * (C) Copyright 2008 The OpenSAF Foundation
>>> + * Copyright Ericsson AB 2017 - All Rights Reserved.
>>>    *
>>>    * This program is distributed in the hope that it will be useful, 
>>> but
>>>    * WITHOUT ANY WARRANTY; without even the implied warranty of 
>>> MERCHANTABILITY
>>> @@ -223,7 +224,7 @@ static uint32_t cpnd_lib_init(CPND_CREAT
>>>       if ((ptr = getenv("OSAF_CKPT_SHM_ALLOC_GUARANTEE")) != NULL) {
>>>           cb->shm_alloc_guaranteed = atoi(ptr);
>>>       } else {
>>> -        cb->shm_alloc_guaranteed = false;
>>> +        cb->shm_alloc_guaranteed = 2;
>>>       }
>>>         /* create a mail box */
>>> diff --git a/src/ckpt/ckptnd/cpnd_proc.c b/src/ckpt/ckptnd/cpnd_proc.c
>>> --- a/src/ckpt/ckptnd/cpnd_proc.c
>>> +++ b/src/ckpt/ckptnd/cpnd_proc.c
>>> @@ -1,6 +1,7 @@
>>>   /*      -*- OpenSAF  -*-
>>>    *
>>>    * (C) Copyright 2008 The OpenSAF Foundation
>>> + * Copyright Ericsson AB 2017 - All Rights Reserved.
>>>    *
>>>    * This program is distributed in the hope that it will be useful, 
>>> but
>>>    * WITHOUT ANY WARRANTY; without even the implied warranty of 
>>> MERCHANTABILITY
>>> @@ -478,7 +479,7 @@ uint32_t cpnd_ckpt_replica_create(CPND_C
>>>       cp_node->replica_info.open.info.open.i_size =
>>>           sizeof(CPSV_CKPT_HDR) + cp_node->create_attrib.maxSections 
>>> * (sizeof(CPSV_SECT_HDR) +
>>> cp_node->create_attrib.maxSectionSize);
>>> -    cp_node->replica_info.open.ensures_space = 
>>> cb->shm_alloc_guaranteed;
>>> +    cp_node->replica_info.open.ensures_space = 
>>> cb->shm_alloc_guaranteed == 1;
>>>         cp_node->replica_info.open.info.open.i_offset = 0;
>>>       cp_node->replica_info.open.info.open.i_name = buf;
>>> @@ -671,7 +672,7 @@ uint32_t cpnd_ckpt_sec_write(CPND_CB *cb
>>>       write_req.info.write.i_offset = offset;
>>>         write_req.info.write.i_write_size = size;
>>> -    write_req.ensures_space = cb->shm_alloc_guaranteed;
>>> +    write_req.ensures_space = cb->shm_alloc_guaranteed != 0;
>>>       if (ncs_os_posix_shm(&write_req) == NCSCC_RC_FAILURE) {
>>>           LOG_ER("shm write failed for cpnd_ckpt_sec_write");
>>>           return NCSCC_RC_FAILURE;
>>> @@ -1836,7 +1837,7 @@ uint32_t cpnd_ckpt_hdr_update(CPND_CB *c
>>>       write_req.info.write.i_from_buff = (CPSV_CKPT_HDR *)&ckpt_hdr;
>>>       write_req.info.write.i_offset = 0;
>>>       write_req.info.write.i_write_size = sizeof(CPSV_CKPT_HDR);
>>> -    write_req.ensures_space = cb->shm_alloc_guaranteed;
>>> +    write_req.ensures_space = cb->shm_alloc_guaranteed != 0;
>>>       rc = ncs_os_posix_shm(&write_req);
>>>         return rc;
>>> @@ -1879,7 +1880,7 @@ uint32_t cpnd_sec_hdr_update(CPND_CB *cb
>>>       write_req.info.write.i_offset =
>>>           sec_info->lcl_sec_id * (sizeof(CPSV_SECT_HDR) + 
>>> cp_node->create_attrib.maxSectionSize);
>>>       write_req.info.write.i_write_size = sizeof(CPSV_SECT_HDR);
>>> -    write_req.ensures_space = cb->shm_alloc_guaranteed;
>>> +    write_req.ensures_space = cb->shm_alloc_guaranteed != 0;
>>>       rc = ncs_os_posix_shm(&write_req);
>>>         return rc;
>>> diff --git a/src/ckpt/ckptnd/cpnd_res.c b/src/ckpt/ckptnd/cpnd_res.c
>>> --- a/src/ckpt/ckptnd/cpnd_res.c
>>> +++ b/src/ckpt/ckptnd/cpnd_res.c
>>> @@ -1,6 +1,7 @@
>>>   /*      -*- OpenSAF  -*-
>>>    *
>>>    * (C) Copyright 2008 The OpenSAF Foundation
>>> + * Copyright Ericsson AB 2017 - All Rights Reserved.
>>>    *
>>>    * This program is distributed in the hope that it will be useful, 
>>> but
>>>    * WITHOUT ANY WARRANTY; without even the implied warranty of 
>>> MERCHANTABILITY
>>> @@ -170,7 +171,7 @@ uint32_t cpnd_ckpt_replica_create_res(CP
>>>       open_req->info.open.i_map_flags = MAP_SHARED;
>>>       open_req->info.open.o_addr = NULL;
>>>       open_req->info.open.i_flags = O_RDWR;
>>> -    open_req->ensures_space = cb->shm_alloc_guaranteed;
>>> +    open_req->ensures_space = cb->shm_alloc_guaranteed == 1;
>>>       rc = ncs_os_posix_shm(open_req);
>>>       if (rc != NCSCC_RC_SUCCESS) {
>>>           LOG_ER("cpnd shm open request failed %s",buf);
>>> @@ -359,7 +360,7 @@ void *cpnd_restart_shm_create(NCS_OS_POS
>>>       cpnd_open_req->info.open.i_size = sizeof(CPND_SHM_VERSION) +
>>>           sizeof(CLIENT_HDR) + (MAX_CLIENTS * sizeof(CLIENT_INFO)) + 
>>> sizeof(CKPT_HDR) +
>>>           (MAX_CKPTS * sizeof(CKPT_INFO));
>>> -    cpnd_open_req->ensures_space = cb->shm_alloc_guaranteed;
>>> +    cpnd_open_req->ensures_space = cb->shm_alloc_guaranteed == 1;
>>>       cpnd_open_req->info.open.i_offset = 0;
>>>       cpnd_open_req->info.open.i_name = buffer;
>>>       cpnd_open_req->info.open.i_map_flags = MAP_SHARED;
>>> @@ -1164,7 +1165,7 @@ uint32_t cpnd_restart_client_node_del(CP
>>>       }
>>>       clinfo_write.info.write.i_offset = cl_node->offset * 
>>> sizeof(CLIENT_INFO);
>>>       clinfo_write.info.write.i_write_size = sizeof(CLIENT_INFO);
>>> -    clinfo_write.ensures_space = cb->shm_alloc_guaranteed;
>>> +    clinfo_write.ensures_space = cb->shm_alloc_guaranteed != 0;
>>>       rc = ncs_os_posix_shm(&clinfo_write);
>>>       if (rc != NCSCC_RC_SUCCESS) {
>>>           LOG_ER("cpnd ckpt info write failed");
>>> @@ -1577,7 +1578,7 @@ static uint32_t cpnd_shm_extended_open(C
>>>         cpnd_open_req.type = NCS_OS_POSIX_SHM_REQ_OPEN;
>>>       cpnd_open_req.info.open.i_size = MAX_CKPTS * 
>>> sizeof(CKPT_EXTENDED_INFO);
>>> -    cpnd_open_req.ensures_space = cb->shm_alloc_guaranteed;
>>> +    cpnd_open_req.ensures_space = cb->shm_alloc_guaranteed == 1;
>>>       cpnd_open_req.info.open.i_offset = 0;
>>>       cpnd_open_req.info.open.i_name = buffer;
>>>       cpnd_open_req.info.open.i_map_flags = MAP_SHARED;
>>
>


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to