Skip to content

Commit

Permalink
separating preload library with main so. To avoid double loading.
Browse files Browse the repository at this point in the history
  • Loading branch information
hariharan-devarajan committed Oct 6, 2023
1 parent df73b25 commit 60da41c
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 14 deletions.
1 change: 0 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@ set(DLIO_PROFILER_PY_PUBLIC_INCLUDE
${CMAKE_CURRENT_SOURCE_DIR}/src/dlio_profiler/brahma/stdio.h
${CMAKE_CURRENT_SOURCE_DIR}/include/dlio_profiler/dlio_profiler.h)
set(DLIO_PROFILER_PY_PRIVATE_INCLUDE

${CMAKE_CURRENT_SOURCE_DIR}/src/dlio_profiler/core/dlio_profiler_main.h
${CMAKE_CURRENT_SOURCE_DIR}/src/dlio_profiler/core/constants.h
${CMAKE_CURRENT_SOURCE_DIR}/src/dlio_profiler/utils/posix_internal.h
Expand Down
12 changes: 3 additions & 9 deletions src/dlio_profiler/dlio_profiler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,19 @@ namespace dlio_profiler {
bool is_init() {return dlio_profiler::init;}
void set_init(bool _init) { dlio_profiler::init = _init;}
void dlio_profiler_init(void) {
char *init_type_count = getenv(DLIO_PROFILER_INIT_COUNT);
char *init_type = getenv(DLIO_PROFILER_INIT);
if (init_type_count == nullptr && init_type != nullptr && strcmp(init_type, "PRELOAD") == 0) {
if (!is_init() && init_type != nullptr && strcmp(init_type, "PRELOAD") == 0) {
int pid = getpid();
dlio_profiler::Singleton<dlio_profiler::DLIOProfiler>::get_instance(true, true, nullptr, nullptr, &pid);
DLIO_PROFILER_LOGINFO("Running initialize within constructor %d", getpid());
set_init(true);
int val = setenv(DLIO_PROFILER_INIT_COUNT, "1", 1);
(void) val;
}

}
void dlio_profiler_fini(void) {
char *init_type = getenv(DLIO_PROFILER_INIT);
char *init_type_count = getenv(DLIO_PROFILER_INIT_COUNT);
if (init_type_count != nullptr && init_type != nullptr && strcmp(init_type, "PRELOAD")) {
dlio_profiler::Singleton<dlio_profiler::DLIOProfiler>::get_instance(false, false)->finalize();
if (is_init() && init_type != nullptr && strcmp(init_type, "PRELOAD")) {
dlio_profiler::Singleton<dlio_profiler::DLIOProfiler>::get_instance(false, true)->finalize();
set_init(false);
int val = unsetenv(DLIO_PROFILER_INIT_COUNT);
(void) val;
}
}
5 changes: 4 additions & 1 deletion src/dlio_profiler/dlio_profiler_py.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ namespace dlio_profiler {
if (init_type == nullptr || strcmp(init_type, "FUNCTION") == 0) {
dlio_profiler::Singleton<dlio_profiler::DLIOProfiler>::get_instance(true, true, log_file.c_str(), data_dirs.c_str(), &process_id);
} else {
dlio_profiler::Singleton<dlio_profiler::DLIOProfiler>::get_instance(true, false, log_file.c_str(), data_dirs.c_str(), &process_id);
int * pid = nullptr;
if (process_id != -1)
*pid = process_id;
dlio_profiler::Singleton<dlio_profiler::DLIOProfiler>::get_instance(true, false, log_file.c_str(), data_dirs.c_str(), pid);
}
}
TimeResolution get_time() {
Expand Down
16 changes: 14 additions & 2 deletions test/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ add_executable(test_basic test.cpp)
add_dependencies(test_basic ${PROJECT_NAME})
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data)
add_test(test ${CMAKE_BINARY_DIR}/bin/test_basic)
set_property(TEST test APPEND PROPERTY ENVIRONMENT LD_PRELOAD=${CMAKE_BINARY_DIR}/lib/libdlio_profiler.so)
set_property(TEST test APPEND PROPERTY ENVIRONMENT LD_PRELOAD=${CMAKE_BINARY_DIR}/lib/libdlio_profiler_preload.so)
set_property(TEST test APPEND PROPERTY ENVIRONMENT LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib)
set_property(TEST test APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_ENABLE=1)
set_property(TEST test APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_INIT=PRELOAD)
set_property(TEST test APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_DATA_DIR=${CMAKE_CURRENT_BINARY_DIR}/data)
set_property(TEST test APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_LOG_FILE=${CMAKE_BINARY_DIR}/log_cpp.pwf)
set_property(TEST test APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_LOG_FILE=${CMAKE_BINARY_DIR}/log_cpp_io_only)
set_property(TEST test APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_LOG_LEVEL=INFO)

find_program(PYTHON_EXE python)
Expand All @@ -17,3 +17,15 @@ set_property(TEST test_py APPEND PROPERTY ENVIRONMENT PYTHONPATH=$ENV{PYTHONPATH
set_property(TEST test_py APPEND PROPERTY ENVIRONMENT LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib:${CMAKE_SOURCE_DIR}/dependency/.spack-env/view/lib64)
set_property(TEST test APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_ENABLE=1)
set_property(TEST test_py APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_LOG_LEVEL=INFO)

find_program(PYTHON_EXE python)
message("-- Found python at location " ${PYTHON_EXE})
add_test(test_py_both ${PYTHON_EXE} ${CMAKE_CURRENT_SOURCE_DIR}/test.py)
set_property(TEST test_py_both APPEND PROPERTY ENVIRONMENT PYTHONPATH=$ENV{PYTHONPATH}:${CMAKE_SOURCE_DIR}/venv/lib)
set_property(TEST test_py_both APPEND PROPERTY ENVIRONMENT LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/lib:${CMAKE_SOURCE_DIR}/dependency/.spack-env/view/lib64)
set_property(TEST test_py_both APPEND PROPERTY ENVIRONMENT LD_PRELOAD=${CMAKE_BINARY_DIR}/lib/libdlio_profiler_preload.so)
set_property(TEST test_py_both APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_DATA_DIR=${CMAKE_CURRENT_BINARY_DIR}/data)
set_property(TEST test_py_both APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_LOG_FILE=${CMAKE_BINARY_DIR}/log_cpp_io_both)
set_property(TEST test_py_both APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_INIT=PRELOAD)
set_property(TEST test_py_both APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_ENABLE=1)
set_property(TEST test_py_both APPEND PROPERTY ENVIRONMENT DLIO_PROFILER_LOG_LEVEL=INFO)
2 changes: 1 addition & 1 deletion test/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def write_read_jpeg(index):

import threading

logger.initialize(f"{cwd}/log.pwf", f"{cwd}/data")
logger.initialize(f"{cwd}/log-app.pwf", f"{cwd}/data")
t1 = threading.Thread(target=posix_calls1, args=(10,))
custom_events()
t2 = threading.Thread(target=posix_calls2, args=(1,))
Expand Down

0 comments on commit 60da41c

Please sign in to comment.