Menu

#1672 mds : calling tzset() in log_mds() for each log is creating a lot of overhead

4.6.2
fixed
None
defect
mds
lib
minor
2016-02-05
2016-01-29
No

calling tzset() in log_mds() for each log is creating a lot of overhead in MDS logging,
taking locks, reading from file etc. This seems unnecessary just for supporting changed
time zones which should be a very rare and one time event so The tzset() call can be moved
to mds_log_init() from log_mds().

In case of heavy longing enabled ( MDS LOG LEVEL Is 5 )
we are observing immnd core .

============================================================
Thread 1 (Thread 0x7fecacbc5b00 (LWP 17303)):

0 0x00007fecab474c69 in getenv () from /lib64/libc.so.6

1 0x00007fecab4dcdb9 in tzset_internal () from /lib64/libc.so.6

2 0x00007fecab4dd110 in tzset () from /lib64/libc.so.6

3 0x00007fecac7e958d in log_mds (

str=0x7fecacbc4d70 "osafimmnd[17299] NOTIFY |MDTM: svc up event for svc_id = IMMA_OI(27), subscri. by svc_id = IMMND(25) pwe_id=1 Adest = <nodeid<span>[1]:osafimmnd[17299]>") at mds_log.c:226

4 0x00007fecac7e997d in log_mds_notify (fmt=0x7fecac802f90 "MDTM: svc up event for svc_id = %s(%d), subscri. by svc_id = %s(%d) pwe_id=%d Adest = %s")

at mds_log.c:160

5 0x00007fecac7eec63 in mdtm_process_discovery_events (discovery_event=1, event=...) at mds_dt_tipc.c:997

6 0x00007fecac7ef24d in mdtm_process_recv_events () at mds_dt_tipc.c:692

7 0x00007fecabf58806 in start_thread () from /lib64/libpthread.so.0

--Type <return> to continue, or q <return> to quit--

8 0x00007fecab51e65d in clone () from /lib64/libc.so.6

9 0x0000000000000000 in ?? ()

============================================================

It looks like smiler correction is required in ntfs/plms/amf_wdog.

solution and Path will look some thisng like this :

============================================================================
diff --git a/osaf/libs/core/mds/mds_log.c b/osaf/libs/core/mds/mds_log.c
--- a/osaf/libs/core/mds/mds_log.c
+++ b/osaf/libs/core/mds/mds_log.c
@@ -75,6 +75,7 @@ static char mds_log_fname[MAX_MDS_FNAME_
uint32_t mds_log_init(char log_file_name, char line_prefix)
{
FILE *fh;
+ tzset();
memset(process_name, 0, MDS_MAX_PROCESS_NAME_LEN);
get_process_name();

@@ -223,7 +224,6 @@ static void log_mds(const char *str)
int i;

            gettimeofday(&tv, NULL);
  • tzset();
    tstamp_data = localtime_r(&tv.tv_sec, &tm_info);
    osafassert(tstamp_data);

============================================================================

Related

Tickets: #1672
Wiki: ChangeLog-4.6.2

Discussion

  • A V Mahesh (AVM)

    • status: assigned --> review
     
  • A V Mahesh (AVM)

    • status: review --> fixed
     
  • A V Mahesh (AVM)

    changeset: 7276:18c0b9f005fa
    parent: 7273:41f0b968e5c0
    user: A V Mahesh mahesh.valla@oracle.com
    date: Thu Feb 04 15:43:56 2016 +0530
    summary: mds: move tzset call to mds_log_init to reduce overhead [#1672]

    changeset: 7275:3b76dec0ead2
    branch: opensaf-4.7.x
    parent: 7272:c6399c0b6236
    user: A V Mahesh mahesh.valla@oracle.com
    date: Thu Feb 04 15:43:41 2016 +0530
    summary: mds: move tzset call to mds_log_init to reduce overhead [#1672]

    changeset: 7274:a30eeff6048a
    branch: opensaf-4.6.x
    parent: 7271:e94f575c2f4b
    user: A V Mahesh mahesh.valla@oracle.com
    date: Thu Feb 04 15:43:26 2016 +0530
    summary: mds: move tzset call to mds_log_init to reduce overhead [#1672]

     

    Related

    Tickets: #1672


Log in to post a comment.