Skip to content

Commit 19fe161

Browse files
author
Shane Snyder
committed
add logutils fn for finding job runtime
method for calculating this depends on log format version, so a helper routine seems useful for utilities
1 parent 4d103ba commit 19fe161

File tree

5 files changed

+27
-6
lines changed

5 files changed

+27
-6
lines changed

darshan-util/darshan-analyzer.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,7 @@ int process_log(const char *fname, double *io_ratio, int *used_mpio, int *used_p
9797
if (file->mod_map[DARSHAN_PNETCDF_MOD].len > 0)
9898
*used_pnet += 1;
9999

100-
total_job_time = job.end_time_sec + (job.end_time_nsec / 1e9);
101-
total_job_time -= job.start_time_sec + (job.start_time_nsec / 1e9);
100+
darshan_log_get_job_runtime(file, job, &total_job_time);
102101

103102
if (f_count > 0)
104103
{

darshan-util/darshan-dxt-parser.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,7 @@ int main(int argc, char **argv)
115115
tmp_time += job.end_time_sec;
116116
printf("# end_time_asci: %s", ctime(&tmp_time));
117117
printf("# nprocs: %" PRId64 "\n", job.nprocs);
118-
run_time = job.end_time_sec + (job.end_time_nsec / 1e9);
119-
run_time -= job.start_time_sec + (job.start_time_nsec / 1e9);
118+
darshan_log_get_job_runtime(fd, job, &run_time);
120119
printf("# run time: %.4lf\n", run_time);
121120
for (token = strtok_r(job.metadata, "\n", &save);
122121
token != NULL;

darshan-util/darshan-logutils.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -934,6 +934,29 @@ char *darshan_log_get_lib_version(void)
934934
return darshan_util_lib_ver;
935935
}
936936

937+
int darshan_log_get_job_runtime(darshan_fd fd, struct darshan_job job, double *runtime)
938+
{
939+
int log_ver_maj, log_ver_min;
940+
int ret;
941+
*runtime = 0;
942+
943+
/* get major/minor version numbers */
944+
ret = darshan_log_get_format_version(fd->version, &log_ver_maj, &log_ver_min);
945+
if(ret < 0)
946+
{
947+
fprintf(stderr, "Error: unable to parse log file format version.\n");
948+
return(-1);
949+
}
950+
951+
if(((log_ver_maj == 3) && (log_ver_min >= 41)) || (log_ver_maj > 3))
952+
*runtime = (double)((job.end_time_sec + (job.end_time_nsec / 1e9)) -
953+
(job.start_time_sec + (job.start_time_nsec / 1e9)));
954+
else
955+
*runtime = (double)(job.end_time_sec - job.start_time_sec + 1);
956+
957+
return(0);
958+
}
959+
937960
/********************************************************
938961
* internal helper functions *
939962
********************************************************/

darshan-util/darshan-logutils.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ int darshan_log_put_mod(darshan_fd fd, darshan_module_id mod_id,
211211
void darshan_log_close(darshan_fd file);
212212
void darshan_log_print_version_warnings(const char *version_string);
213213
char *darshan_log_get_lib_version(void);
214+
int darshan_log_get_job_runtime(darshan_fd fd, struct darshan_job job, double *runtime);
214215
void darshan_log_get_modules(darshan_fd fd, struct darshan_mod_info **mods,
215216
int* count);
216217
void darshan_log_get_name_records(darshan_fd fd,

darshan-util/darshan-parser.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,7 @@ int main(int argc, char **argv)
214214
tmp_time += job.end_time_sec;
215215
printf("# end_time_asci: %s", ctime(&tmp_time));
216216
printf("# nprocs: %" PRId64 "\n", job.nprocs);
217-
run_time = job.end_time_sec + (job.end_time_nsec / 1e9);
218-
run_time -= job.start_time_sec + (job.start_time_nsec / 1e9);
217+
darshan_log_get_job_runtime(fd, job, &run_time);
219218
printf("# run time: %.4lf\n", run_time);
220219
for(token=strtok_r(job.metadata, "\n", &save);
221220
token != NULL;

0 commit comments

Comments
 (0)