Skip to content

Commit 3c3617e

Browse files
Shane Snyderwkliao
authored andcommitted
support for annotating DXT segment with pthread_id
1 parent 65b6dbe commit 3c3617e

File tree

2 files changed

+26
-37
lines changed

2 files changed

+26
-37
lines changed

darshan-runtime/lib/darshan-dxt.c

Lines changed: 22 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ static struct dxt_file_record_ref *dxt_posix_track_new_file_record(
108108
darshan_record_id rec_id);
109109
static struct dxt_file_record_ref *dxt_mpiio_track_new_file_record(
110110
darshan_record_id rec_id);
111+
void annotate_trace_segment(char *extra_info_str);
111112

112113
/* DXT output/cleanup routines for darshan-core */
113114
static void dxt_posix_output(
@@ -227,7 +228,6 @@ void dxt_posix_write(darshan_record_id rec_id, int64_t offset,
227228
{
228229
struct dxt_file_record_ref* rec_ref = NULL;
229230
struct dxt_file_record *file_rec;
230-
char *s;
231231

232232
DXT_LOCK();
233233

@@ -263,13 +263,7 @@ void dxt_posix_write(darshan_record_id rec_id, int64_t offset,
263263
rec_ref->write_traces[file_rec->write_count].length = length;
264264
rec_ref->write_traces[file_rec->write_count].start_time = start_time;
265265
rec_ref->write_traces[file_rec->write_count].end_time = end_time;
266-
s = getenv("DARSHAN_DXT_EXTRA_INFO");
267-
if (s != NULL) {
268-
strncpy(rec_ref->write_traces[file_rec->write_count].extra_info, s,
269-
EXTRA_INFO_LEN-1);
270-
} else {
271-
rec_ref->write_traces[file_rec->write_count].extra_info[0] = '\0';
272-
}
266+
annotate_trace_segment(rec_ref->write_traces[file_rec->write_count].extra_info);
273267
file_rec->write_count += 1;
274268

275269
DXT_UNLOCK();
@@ -280,7 +274,6 @@ void dxt_posix_read(darshan_record_id rec_id, int64_t offset,
280274
{
281275
struct dxt_file_record_ref* rec_ref = NULL;
282276
struct dxt_file_record *file_rec;
283-
char *s;
284277

285278
DXT_LOCK();
286279

@@ -316,14 +309,7 @@ void dxt_posix_read(darshan_record_id rec_id, int64_t offset,
316309
rec_ref->read_traces[file_rec->read_count].length = length;
317310
rec_ref->read_traces[file_rec->read_count].start_time = start_time;
318311
rec_ref->read_traces[file_rec->read_count].end_time = end_time;
319-
s = getenv("DARSHAN_DXT_EXTRA_INFO");
320-
if (s != NULL) {
321-
strncpy(rec_ref->read_traces[file_rec->read_count].extra_info, s,
322-
EXTRA_INFO_LEN-1);
323-
} else {
324-
rec_ref->read_traces[file_rec->read_count].extra_info[0] = '\0';
325-
}
326-
312+
annotate_trace_segment(rec_ref->read_traces[file_rec->read_count].extra_info);
327313
file_rec->read_count += 1;
328314

329315
DXT_UNLOCK();
@@ -334,7 +320,6 @@ void dxt_mpiio_write(darshan_record_id rec_id, int64_t offset,
334320
{
335321
struct dxt_file_record_ref* rec_ref = NULL;
336322
struct dxt_file_record *file_rec;
337-
char *s;
338323

339324
DXT_LOCK();
340325

@@ -370,13 +355,7 @@ void dxt_mpiio_write(darshan_record_id rec_id, int64_t offset,
370355
rec_ref->write_traces[file_rec->write_count].offset = offset;
371356
rec_ref->write_traces[file_rec->write_count].start_time = start_time;
372357
rec_ref->write_traces[file_rec->write_count].end_time = end_time;
373-
s = getenv("DARSHAN_DXT_EXTRA_INFO");
374-
if (s != NULL) {
375-
strncpy(rec_ref->write_traces[file_rec->write_count].extra_info, s,
376-
EXTRA_INFO_LEN-1);
377-
} else {
378-
rec_ref->write_traces[file_rec->write_count].extra_info[0] = '\0';
379-
}
358+
annotate_trace_segment(rec_ref->write_traces[file_rec->write_count].extra_info);
380359
file_rec->write_count += 1;
381360

382361
DXT_UNLOCK();
@@ -387,7 +366,6 @@ void dxt_mpiio_read(darshan_record_id rec_id, int64_t offset,
387366
{
388367
struct dxt_file_record_ref* rec_ref = NULL;
389368
struct dxt_file_record *file_rec;
390-
char *s;
391369

392370
DXT_LOCK();
393371

@@ -423,13 +401,7 @@ void dxt_mpiio_read(darshan_record_id rec_id, int64_t offset,
423401
rec_ref->read_traces[file_rec->read_count].offset = offset;
424402
rec_ref->read_traces[file_rec->read_count].start_time = start_time;
425403
rec_ref->read_traces[file_rec->read_count].end_time = end_time;
426-
s = getenv("DARSHAN_DXT_EXTRA_INFO");
427-
if (s != NULL) {
428-
strncpy(rec_ref->read_traces[file_rec->read_count].extra_info, s,
429-
EXTRA_INFO_LEN-1);
430-
} else {
431-
rec_ref->read_traces[file_rec->read_count].extra_info[0] = '\0';
432-
}
404+
annotate_trace_segment(rec_ref->read_traces[file_rec->read_count].extra_info);
433405
file_rec->read_count += 1;
434406

435407
DXT_UNLOCK();
@@ -793,6 +765,23 @@ static struct dxt_file_record_ref *dxt_mpiio_track_new_file_record(
793765
return(rec_ref);
794766
}
795767

768+
void annotate_trace_segment(char *extra_info_str)
769+
{
770+
char *extra_info_env = getenv("DARSHAN_DXT_EXTRA_INFO");
771+
if (extra_info_env != NULL) {
772+
strncpy(extra_info_str, extra_info_env, EXTRA_INFO_LEN-1);
773+
} else {
774+
extra_info_str[0] = '\0';
775+
}
776+
unsigned long pthread_id = (unsigned long)pthread_self();
777+
if(strlen(extra_info_str))
778+
strcat(extra_info_str, " ");
779+
snprintf(extra_info_str + strlen(extra_info_str), EXTRA_INFO_LEN-1-strlen(extra_info_str),
780+
"pthread_id=%lu", pthread_id);
781+
782+
return;
783+
}
784+
796785
static void dxt_free_record_data(void *rec_ref_p, void *user_ptr)
797786
{
798787
struct dxt_file_record_ref *dxt_rec_ref = (struct dxt_file_record_ref *)rec_ref_p;

darshan-util/darshan-dxt-logutils.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ void dxt_log_print_posix_file(void *posix_file_rec, char *file_name,
365365
end_time = io_trace[i].end_time;
366366
extra_info = io_trace[i].extra_info;
367367

368-
printf("%8s%8" PRId64 "%7s%9d%16" PRId64 "%16" PRId64 "%12.4f%12.4f %s", "X_POSIX", rank, "write", i, offset, length, start_time, end_time, extra_info);
368+
printf("%8s%8" PRId64 "%7s%9d%16" PRId64 "%16" PRId64 "%12.4f%12.4f\t%s", "X_POSIX", rank, "write", i, offset, length, start_time, end_time, extra_info);
369369

370370
if (lustreFS) {
371371
cur_file_offset = offset;
@@ -412,7 +412,7 @@ void dxt_log_print_posix_file(void *posix_file_rec, char *file_name,
412412
end_time = io_trace[i].end_time;
413413
extra_info = io_trace[i].extra_info;
414414

415-
printf("%8s%8" PRId64 "%7s%9d%16" PRId64 "%16" PRId64 "%12.4f%12.4f %s", "X_POSIX", rank, "read", (int)(i - write_count), offset, length, start_time, end_time, extra_info);
415+
printf("%8s%8" PRId64 "%7s%9d%16" PRId64 "%16" PRId64 "%12.4f%12.4f\t%s", "X_POSIX", rank, "read", (int)(i - write_count), offset, length, start_time, end_time, extra_info);
416416

417417
if (lustreFS) {
418418
cur_file_offset = offset;
@@ -496,7 +496,7 @@ void dxt_log_print_mpiio_file(void *mpiio_file_rec, char *file_name,
496496
extra_info = io_trace[i].extra_info;
497497
if (extra_info == NULL) extra_info = "";
498498

499-
printf("%8s%8" PRId64 "%7s%9d%16" PRId64 "%16" PRId64 "%12.4f%12.4f %s\n", "X_MPIIO", rank, "write", i, offset, length, start_time, end_time, extra_info);
499+
printf("%8s%8" PRId64 "%7s%9d%16" PRId64 "%16" PRId64 "%12.4f%12.4f\t%s\n", "X_MPIIO", rank, "write", i, offset, length, start_time, end_time, extra_info);
500500
}
501501

502502
for (i = write_count; i < write_count + read_count; i++) {
@@ -505,7 +505,7 @@ void dxt_log_print_mpiio_file(void *mpiio_file_rec, char *file_name,
505505
start_time = io_trace[i].start_time;
506506
end_time = io_trace[i].end_time;
507507

508-
printf("%8s%8" PRId64 "%7s%9d%16" PRId64 "%16" PRId64 "%12.4f%12.4f %s\n", "X_MPIIO", rank, "read", (int)(i - write_count), offset, length, start_time, end_time, extra_info);
508+
printf("%8s%8" PRId64 "%7s%9d%16" PRId64 "%16" PRId64 "%12.4f%12.4f\t%s\n", "X_MPIIO", rank, "read", (int)(i - write_count), offset, length, start_time, end_time, extra_info);
509509
}
510510

511511
return;

0 commit comments

Comments
 (0)