diff --git a/systrace/include/common/util.cc b/systrace/include/common/util.cc index a526d0c4f96eb4f333976f2eee53d90e28512918..c57827c927c8586353ae62c0fe5f842b070cc26e 100644 --- a/systrace/include/common/util.cc +++ b/systrace/include/common/util.cc @@ -249,5 +249,36 @@ void InitializeSystemUtilities() config::InitializeGlobalConfiguration(); } +std::string GetPrimaryIP() +{ + struct ifaddrs *ifaddr, *ifa; + std::string primaryIP; + + if (getifaddrs(&ifaddr) == -1) { + perror("getifaddrs"); + return ""; + } + + for (ifa = ifaddr; ifa != nullptr; ifa = ifa->ifa_next) { + if (ifa->ifa_addr == nullptr || ifa->ifa_addr->sa_family != AF_INET) { + continue; + } + + if (strcmp(ifa->ifa_name, "lo") == 0) { + continue; + } + + struct sockaddr_in *addr = (struct sockaddr_in *)ifa->ifa_addr; + char ip[INET_ADDRSTRLEN]; + inet_ntop(AF_INET, &addr->sin_addr, ip, INET_ADDRSTRLEN); + + primaryIP = ip; + break; + } + + freeifaddrs(ifaddr); + return primaryIP; +} + } // namespace util } // namespace systrace \ No newline at end of file diff --git a/systrace/include/common/util.h b/systrace/include/common/util.h index 67c077af263cb8e86b886f0b03f3f303903429f4..50c266c215adba90d502c1d8a319626b886b2dca 100644 --- a/systrace/include/common/util.h +++ b/systrace/include/common/util.h @@ -13,11 +13,16 @@ #include #include #include +#include +#include +#include +#include namespace systrace { namespace util { +std::string GetPrimaryIP(); namespace config { diff --git a/systrace/src/mspti/mspti_tracker.cpp b/systrace/src/mspti/mspti_tracker.cpp index d6f1285f3172f482391ab7479def6392ba6563db..aa8789165152f80bf669185fade69437575a26c0 100644 --- a/systrace/src/mspti/mspti_tracker.cpp +++ b/systrace/src/mspti/mspti_tracker.cpp @@ -2,12 +2,14 @@ #include #include #include +#include "../../include/common/util.h" constexpr size_t KB = 1 * 1024; constexpr size_t MB = 1 * 1024 * KB; constexpr size_t ALIGN_SIZE = 8; std::mutex MSPTITracker::mtx; +using namespace systrace::util; inline uint8_t *align_buffer(uint8_t *buffer, size_t align) { @@ -18,8 +20,9 @@ inline uint8_t *align_buffer(uint8_t *buffer, size_t align) MSPTITracker::MSPTITracker() { std::cout << "Logging initialized from preloaded library." << std::endl; + std::string file_name = "hccl_activity-" + systrace::util::GetPrimaryIP() + "-.json"; hcclFileWriter = - std::make_unique("hccl_activity.json"); + std::make_unique(file_name); msptiSubscribe(&subscriber, nullptr, nullptr); msptiActivityRegisterCallbacks(UserBufferRequest, UserBufferComplete); msptiActivityEnable(MSPTI_ACTIVITY_KIND_MARKER);