[Darshan-commits] [Git][darshan/darshan][lustre-mod] 3 commits: makefile bug fix
Shane Snyder
xgitlab at cels.anl.gov
Thu Feb 25 12:19:50 CST 2016
Shane Snyder pushed to branch lustre-mod at darshan / darshan
Commits:
b920e005 by Shane Snyder at 2016-02-25T08:28:23-08:00
makefile bug fix
- - - - -
7ba0dfe3 by Shane Snyder at 2016-02-25T08:53:36-08:00
add dummy counter to test lustre module
- - - - -
fdf5af2d by Shane Snyder at 2016-02-25T10:16:37-08:00
integrate lustre module into logutils library
- - - - -
9 changed files:
- darshan-log-format.h
- darshan-lustre-log-format.h
- darshan-runtime/Makefile.in
- darshan-runtime/lib/darshan-lustre.c
- darshan-util/Makefile.in
- darshan-util/darshan-logutils.h
- + darshan-util/darshan-lustre-logutils.c
- + darshan-util/darshan-lustre-logutils.h
- + darshan-util/darshan-lustre-logutils.o
Changes:
=====================================
darshan-log-format.h
=====================================
--- a/darshan-log-format.h
+++ b/darshan-log-format.h
@@ -122,7 +122,7 @@ struct darshan_record
X(DARSHAN_HDF5_MOD, "HDF5", DARSHAN_HDF5_VER, &hdf5_logutils) \
X(DARSHAN_PNETCDF_MOD, "PNETCDF", DARSHAN_PNETCDF_VER, &pnetcdf_logutils) \
X(DARSHAN_BGQ_MOD, "BG/Q", DARSHAN_BGQ_VER, &bgq_logutils) \
- X(DARSHAN_LUSTRE_MOD, "LUSTRE", DARSHAN_LUSTRE_VER, NULL)
+ X(DARSHAN_LUSTRE_MOD, "LUSTRE", DARSHAN_LUSTRE_VER, &lustre_logutils)
/* unique identifiers to distinguish between available darshan modules */
/* NOTES: - valid ids range from [0...DARSHAN_MAX_MODS-1]
=====================================
darshan-lustre-log-format.h
=====================================
--- a/darshan-lustre-log-format.h
+++ b/darshan-lustre-log-format.h
@@ -12,6 +12,8 @@
/* TODO: add integer counters here (e.g., counter for stripe width, stripe size, etc etc) */
#define LUSTRE_COUNTERS \
+ /* dummy counter */\
+ X(LUSTRE_TEST_COUNTER) \
/* end of counters */\
X(LUSTRE_NUM_INDICES)
@@ -37,4 +39,3 @@ struct darshan_lustre_record
};
#endif /* __DARSHAN_LUSTRE_LOG_FORMAT_H */
-
=====================================
darshan-runtime/Makefile.in
=====================================
--- a/darshan-runtime/Makefile.in
+++ b/darshan-runtime/Makefile.in
@@ -113,7 +113,7 @@ lib/darshan-pnetcdf-stubs.o: lib/darshan-pnetcdf-stubs.c darshan.h $(DARSHAN_LOG
lib/darshan-lustre.o: lib/darshan-lustre.c darshan.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-lustre-log-format.h | lib
$(CC) $(CFLAGS) -c $< -o $@
-lib/darshan-lustre.po: lib/darshan-hdf5.c darshan.h darshan-dynamic.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-lustre-log-format.h | lib
+lib/darshan-lustre.po: lib/darshan-lustre.c darshan.h darshan-dynamic.h darshan-common.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-lustre-log-format.h | lib
$(CC) $(CFLAGS_SHARED) -c $< -o $@
lib/lookup3.o: lib/lookup3.c
=====================================
darshan-runtime/lib/darshan-lustre.c
=====================================
--- a/darshan-runtime/lib/darshan-lustre.c
+++ b/darshan-runtime/lib/darshan-lustre.c
@@ -105,6 +105,7 @@ void darshan_instrument_lustre_file(char *filepath)
/* TODO: gather lustre data, store in record hash */
/* counters in lustre_ref->record->counters */
+ lustre_ref->record->counters[LUSTRE_TEST_COUNTER] = 88;
HASH_ADD(hlink, lustre_runtime->record_hash, record->rec_id,
sizeof(darshan_record_id), lustre_ref);
@@ -199,6 +200,9 @@ static void lustre_get_output_data(
* given file should be the same on each process
*/
+ *lustre_buf = (void *)(lustre_runtime->record_array);
+ *lustre_buf_sz = lustre_runtime->record_array_ndx * sizeof(struct darshan_lustre_record);
+
return;
}
@@ -207,7 +211,11 @@ static void lustre_shutdown(void)
assert(lustre_runtime);
/* TODO: free data structures */
+ HASH_CLEAR(hlink, lustre_runtime->record_hash);
+ free(lustre_runtime->ref_array);
+ free(lustre_runtime->record_array);
+ free(lustre_runtime);
lustre_runtime = NULL;
return;
=====================================
darshan-util/Makefile.in
=====================================
--- a/darshan-util/Makefile.in
+++ b/darshan-util/Makefile.in
@@ -13,10 +13,10 @@ libdir = $(DESTDIR)@libdir@
pkgconfigdir = $(DESTDIR)$(libdir)/pkgconfig
DARSHAN_LOG_FORMAT = $(srcdir)/../darshan-log-format.h
-DARSHAN_MOD_LOG_FORMATS = $(srcdir)/../darshan-posix-log-format.h $(srcdir)/../darshan-mpiio-log-format.h $(srcdir)/../darshan-hdf5-log-format.h $(srcdir)/../darshan-pnetcdf-log-format.h
-DARSHAN_MOD_LOGUTIL_HEADERS = darshan-posix-logutils.h darshan-mpiio-logutils.h darshan-hdf5-logutils.h darshan-pnetcdf-logutils.h
-DARSHAN_STATIC_MOD_OBJS = darshan-posix-logutils.o darshan-mpiio-logutils.o darshan-hdf5-logutils.o darshan-pnetcdf-logutils.o darshan-bgq-logutils.o
-DARSHAN_DYNAMIC_MOD_OBJS = darshan-posix-logutils.po darshan-mpiio-logutils.po darshan-hdf5-logutils.po darshan-pnetcdf-logutils.po darshan-bgq-logutils.po
+DARSHAN_MOD_LOG_FORMATS = $(srcdir)/../darshan-posix-log-format.h $(srcdir)/../darshan-mpiio-log-format.h $(srcdir)/../darshan-hdf5-log-format.h $(srcdir)/../darshan-pnetcdf-log-format.h $(srcdir)/../darshan-lustre-log-format.h
+DARSHAN_MOD_LOGUTIL_HEADERS = darshan-posix-logutils.h darshan-mpiio-logutils.h darshan-hdf5-logutils.h darshan-pnetcdf-logutils.h darshan-lustre-logutils.h
+DARSHAN_STATIC_MOD_OBJS = darshan-posix-logutils.o darshan-mpiio-logutils.o darshan-hdf5-logutils.o darshan-pnetcdf-logutils.o darshan-bgq-logutils.o darshan-lustre-logutils.o
+DARSHAN_DYNAMIC_MOD_OBJS = darshan-posix-logutils.po darshan-mpiio-logutils.po darshan-hdf5-logutils.po darshan-pnetcdf-logutils.po darshan-bgq-logutils.po darshan-lustre-logutils.po
DARSHAN_ENABLE_SHARED=@DARSHAN_ENABLE_SHARED@
@@ -81,6 +81,11 @@ darshan-bgq-logutils.o: darshan-bgq-logutils.c darshan-logutils.h darshan-bgq-lo
darshan-bgq-logutils.po: darshan-bgq-logutils.c darshan-logutils.h darshan-bgq-logutils.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-bgq-log-format.h | uthash-1.9.2
$(CC) $(CFLAGS_SHARED) -c $< -o $@
+darshan-lustre-logutils.o: darshan-lustre-logutils.c darshan-logutils.h darshan-lustre-logutils.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-lustre-log-format.h | uthash-1.9.2
+ $(CC) $(CFLAGS) -c $< -o $@
+darshan-lustre-logutils.po: darshan-lustre-logutils.c darshan-logutils.h darshan-lustre-logutils.h $(DARSHAN_LOG_FORMAT) $(srcdir)/../darshan-lustre-log-format.h | uthash-1.9.2
+ $(CC) $(CFLAGS_SHARED) -c $< -o $@
+
libdarshan-util.a: darshan-logutils.o $(DARSHAN_STATIC_MOD_OBJS)
ar rcs libdarshan-util.a $^
=====================================
darshan-util/darshan-logutils.h
=====================================
--- a/darshan-util/darshan-logutils.h
+++ b/darshan-util/darshan-logutils.h
@@ -107,6 +107,7 @@ extern struct darshan_mod_logutil_funcs *mod_logutils[];
#include "darshan-hdf5-logutils.h"
#include "darshan-pnetcdf-logutils.h"
#include "darshan-bgq-logutils.h"
+#include "darshan-lustre-logutils.h"
darshan_fd darshan_log_open(const char *name);
darshan_fd darshan_log_create(const char *name, enum darshan_comp_type comp_type,
=====================================
darshan-util/darshan-lustre-logutils.c
=====================================
--- /dev/null
+++ b/darshan-util/darshan-lustre-logutils.c
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2015 University of Chicago.
+ * See COPYRIGHT notice in top-level directory.
+ *
+ */
+
+#define _GNU_SOURCE
+#include "darshan-util-config.h"
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <inttypes.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include "darshan-logutils.h"
+
+/* counter name strings for the LUSTRE module */
+#define X(a) #a,
+char *lustre_counter_names[] = {
+ LUSTRE_COUNTERS
+};
+#undef X
+
+static int darshan_log_get_lustre_record(darshan_fd fd, void* lustre_buf,
+ darshan_record_id* rec_id);
+static int darshan_log_put_lustre_record(darshan_fd fd, void* lustre_buf, int ver);
+static void darshan_log_print_lustre_record(void *file_rec,
+ char *file_name, char *mnt_pt, char *fs_type, int ver);
+static void darshan_log_print_lustre_description(void);
+static void darshan_log_print_lustre_record_diff(void *rec1, char *file_name1,
+ void *rec2, char *file_name2);
+
+struct darshan_mod_logutil_funcs lustre_logutils =
+{
+ .log_get_record = &darshan_log_get_lustre_record,
+ .log_put_record = &darshan_log_put_lustre_record,
+ .log_print_record = &darshan_log_print_lustre_record,
+ .log_print_description = &darshan_log_print_lustre_description,
+ .log_print_diff = &darshan_log_print_lustre_record_diff
+};
+
+static int darshan_log_get_lustre_record(darshan_fd fd, void* lustre_buf,
+ darshan_record_id* rec_id)
+{
+ struct darshan_lustre_record *rec;
+ int i;
+ int ret;
+
+ ret = darshan_log_getmod(fd, DARSHAN_LUSTRE_MOD, lustre_buf,
+ sizeof(struct darshan_lustre_record));
+ if(ret < 0)
+ return(-1);
+ else if(ret < sizeof(struct darshan_lustre_record))
+ return(0);
+ else
+ {
+ rec = (struct darshan_lustre_record *)lustre_buf;
+ if(fd->swap_flag)
+ {
+ /* swap bytes if necessary */
+ DARSHAN_BSWAP64(&rec->rec_id);
+ DARSHAN_BSWAP64(&rec->rank);
+ for(i=0; i<LUSTRE_NUM_INDICES; i++)
+ DARSHAN_BSWAP64(&rec->counters[i]);
+ }
+
+ *rec_id = rec->rec_id;
+ return(1);
+ }
+}
+
+static int darshan_log_put_lustre_record(darshan_fd fd, void* lustre_buf, int ver)
+{
+ struct darshan_lustre_record *rec = (struct darshan_lustre_record *)lustre_buf;
+ int ret;
+
+ ret = darshan_log_putmod(fd, DARSHAN_LUSTRE_MOD, rec,
+ sizeof(struct darshan_lustre_record), ver);
+ if(ret < 0)
+ return(-1);
+
+ return(0);
+}
+
+static void darshan_log_print_lustre_record(void *rec, char *file_name,
+ char *mnt_pt, char *fs_type, int ver)
+{
+ int i;
+ struct darshan_lustre_record *lustre_rec =
+ (struct darshan_lustre_record *)rec;
+
+ for(i=0; i<LUSTRE_NUM_INDICES; i++)
+ {
+ DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_LUSTRE_MOD],
+ lustre_rec->rank, lustre_rec->rec_id, lustre_counter_names[i],
+ lustre_rec->counters[i], file_name, mnt_pt, fs_type);
+ }
+
+ return;
+}
+
+static void darshan_log_print_lustre_description()
+{
+ /* TODO: add actual counter descriptions here */
+ printf("\n# description of LUSTRE counters:\n");
+ printf("# LUSTRE_TEST_COUNTER: counter for testing Lustre module.\n");
+
+ DARSHAN_PRINT_HEADER();
+
+ return;
+}
+
+static void darshan_log_print_lustre_record_diff(void *rec1, char *file_name1,
+ void *rec2, char *file_name2)
+{
+ struct darshan_lustre_record *lustre_rec1 = (struct darshan_lustre_record *)rec1;
+ struct darshan_lustre_record *lustre_rec2 = (struct darshan_lustre_record *)rec2;
+ int i;
+
+ /* NOTE: we assume that both input records are the same module format version */
+
+ for(i=0; i<LUSTRE_NUM_INDICES; i++)
+ {
+ if(!lustre_rec2)
+ {
+ printf("- ");
+ DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_LUSTRE_MOD],
+ lustre_rec1->rank, lustre_rec1->rec_id, lustre_counter_names[i],
+ lustre_rec1->counters[i], file_name1, "", "");
+
+ }
+ else if(!lustre_rec1)
+ {
+ printf("+ ");
+ DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_LUSTRE_MOD],
+ lustre_rec2->rank, lustre_rec2->rec_id, lustre_counter_names[i],
+ lustre_rec2->counters[i], file_name2, "", "");
+ }
+ else if(lustre_rec1->counters[i] != lustre_rec2->counters[i])
+ {
+ printf("- ");
+ DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_LUSTRE_MOD],
+ lustre_rec1->rank, lustre_rec1->rec_id, lustre_counter_names[i],
+ lustre_rec1->counters[i], file_name1, "", "");
+ printf("+ ");
+ DARSHAN_COUNTER_PRINT(darshan_module_names[DARSHAN_LUSTRE_MOD],
+ lustre_rec2->rank, lustre_rec2->rec_id, lustre_counter_names[i],
+ lustre_rec2->counters[i], file_name2, "", "");
+ }
+ }
+
+ return;
+}
+
+/*
+ * Local variables:
+ * c-indent-level: 4
+ * c-basic-offset: 4
+ * End:
+ *
+ * vim: ts=8 sts=4 sw=4 expandtab
+ */
=====================================
darshan-util/darshan-lustre-logutils.h
=====================================
--- /dev/null
+++ b/darshan-util/darshan-lustre-logutils.h
@@ -0,0 +1,14 @@
+/*
+ * Copyright (C) 2015 University of Chicago.
+ * See COPYRIGHT notice in top-level directory.
+ *
+ */
+
+#ifndef __DARSHAN_LUSTRE_LOG_UTILS_H
+#define __DARSHAN_LUSTRE_LOG_UTILS_H
+
+extern char *lustre_counter_names[];
+
+extern struct darshan_mod_logutil_funcs lustre_logutils;
+
+#endif
=====================================
darshan-util/darshan-lustre-logutils.o
=====================================
Binary files /dev/null and b/darshan-util/darshan-lustre-logutils.o differ
View it on GitLab: https://xgitlab.cels.anl.gov/darshan/darshan/compare/657c5b565dd8c7b847c956a39c61f8711ce21833...fdf5af2d40c80c649998aa0fe2c77f118fd4f751
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/darshan-commits/attachments/20160225/4824732e/attachment-0001.html>
More information about the Darshan-commits
mailing list