From b8836281bd7ddefd032ec7c932c656f82b6751b2 Mon Sep 17 00:00:00 2001 From: gomathishankar37 Date: Thu, 13 Nov 2025 15:28:33 +0530 Subject: [PATCH 01/11] RDK-59952: Add ExitHandler for ProcessMonitor Signed-off-by: gomathishankar37 --- CMakeLists.txt | 14 +++- exitHandler.c | 209 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 222 insertions(+), 1 deletion(-) create mode 100644 exitHandler.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 6701b6a..4144ec0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,18 @@ target_link_libraries(${PROJECT_NAME} Threads::Threads ) +add_library(exitHandler SHARED exitHandler.c) + +target_link_libraries(exitHandler Threads::Threads) + +set_target_properties(exitHandler PROPERTIES + OUTPUT_NAME exithandler + VERSION 1.0.0 + SOVERSION 1) + +install(TARGETS exitHandler + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin - ) \ No newline at end of file + ) diff --git a/exitHandler.c b/exitHandler.c new file mode 100644 index 0000000..9732559 --- /dev/null +++ b/exitHandler.c @@ -0,0 +1,209 @@ +#include +#include +#include +#include +#include + +#include +#include + +// MAY NOT WORK FOR BUSYBOX utilities, as stdio might've been reopened +#if 0 +#define PRINT printf +#define PRINT_INFO printf +#define PRINT_NOISE printf +#define TEST_ME +#else +#define PRINT(...) +#define PRINT_INFO(...) +#define PRINT_NOISE(...) +#undef TEST_ME +#endif + +#undef INSTALL_EXIT_HANDLER +#ifdef TEST_ME +unsigned long testpsstotal, testswappsstotal; +#endif + +int getPSSandSwapPSS(unsigned pid, unsigned long *psstotal, unsigned long *swappsstotal) +{ + char mmapTmpArray[1024]; /* Used to read entries from /proc/pid/smaps...big enough to hold large entries */ + static unsigned skipToPss = 0, skipToSwapPss = 0, skipToRollover = 0; + unsigned skippedToLearn = 0; + + sprintf(mmapTmpArray, "/proc/%u/smaps", pid); + FILE *smap = fopen(mmapTmpArray, "r"); + if (smap) { + unsigned lines_To_skip = skipToPss; + unsigned skipped = 1; // Tracks current skips + unsigned expect_pss = 1, expect_swappss = 0; + //unsigned expect_pss, expect_swappss; + + unsigned pss, swappss; + while (fgets(mmapTmpArray, 1024, smap)) { +#ifdef TEST_ME + if (sscanf(mmapTmpArray, "Pss: %u kB", &pss)) { + testpsstotal += pss; + } + else if (sscanf(mmapTmpArray, "SwapPss: %u kB", &swappss)) { + testswappsstotal += swappss; + } +#endif + if (skipToRollover) { // Learnt the format + if (++skipped > lines_To_skip) { + if (expect_pss) { + if (sscanf(mmapTmpArray, "Pss: %u kB", &pss)) { + PRINT_NOISE("Read Entry %s %u", mmapTmpArray, pss); + lines_To_skip = skipToSwapPss; + skipped = 1; + expect_swappss = 1; + expect_pss = 0; + *psstotal += pss; + } + else { + PRINT("Shouldn't get here..Error Reading Size from %s", mmapTmpArray); + } + } + else if (expect_swappss) { + if (sscanf(mmapTmpArray, "SwapPss: %u kB", &swappss)) { + PRINT_NOISE("Read Entry %s %u", mmapTmpArray, swappss); + skipped = 1; + expect_pss = 1; + expect_swappss = 0; + *swappsstotal += swappss; + lines_To_skip = skipToRollover; + } + else { + PRINT("Shouldn't get here..Error Reading Rss from %s", mmapTmpArray); + } + } + } // if (++skipped > lines_To_skip) + else { + PRINT_INFO("Skipping, skipped vs lines_To_skip %u:%u, line %s", skipped, lines_To_skip, mmapTmpArray); + } + } // if (skipToRollover) + else { // Learn here + if (!skipToPss) { + if (sscanf(mmapTmpArray, "Pss: %u kB", &pss)) { + skipToPss = skippedToLearn + 1; + skippedToLearn = 0; + *psstotal += pss; + PRINT_INFO("Read Pss %u after skipping %u lines - %s", pss, skipToPss, mmapTmpArray); + } + else { + skippedToLearn++; + PRINT_NOISE("skippedForPss: %u, %s\n", skippedToLearn, mmapTmpArray); + } + } + else if (!skipToSwapPss) { + if (sscanf(mmapTmpArray, "SwapPss: %u kB", &swappss)) { + skipToSwapPss = skippedToLearn + 1; + skippedToLearn = 0; + *swappsstotal += swappss; + PRINT_INFO("Read SwapPss %u after skipping %u lines - %s", swappss, skipToSwapPss, mmapTmpArray); + } + else { + skippedToLearn++; + PRINT_NOISE("skippedForSwapPss: %u, %s\n", skippedToLearn, mmapTmpArray); + } + } + else if (!skipToRollover) { + if (sscanf(mmapTmpArray, "Pss: %u kB", &pss)) { + skipToRollover = skippedToLearn + 1; + skippedToLearn = 0; + *psstotal += pss; + expect_swappss = 1; + expect_pss = 0; + skipped = 1; + lines_To_skip = skipToSwapPss; + PRINT_INFO("Read Pss %u by rollover after skipping %u lines - %s", pss, skipToRollover, mmapTmpArray); + } + else { + skippedToLearn++; + PRINT_NOISE("skippedForRollover: %u, %s\n", skippedToLearn, mmapTmpArray); + } + } + else { + PRINT("%s:%d: Shouldn't get here..read line %s\n", __FUNCTION__, __LINE__, mmapTmpArray); + } + } + } + fclose(smap); + } + else { + PRINT("%s: Open failed, errno %d [%s]\n", mmapTmpArray, errno, strerror(errno)); + return 1; + } + return 0; +} + +void printMyStatFromLib() +{ + /* Use /proc/pid/stat to read name, flags, stime, utime */ + char pathTmp[PATH_MAX]; + unsigned long utime, stime; + unsigned long vsize=0, rss; + int pid = getpid(); + + sprintf(pathTmp, "/proc/%d/stat", pid); + FILE *fp = fopen(pathTmp, "r"); + if (fp) { + if (5 <= fscanf(fp, "%*d %*c%s %*c %*d %*d %*d %*d %*d %*u %*u %*u %*u %*u %lu %lu %*d %*d %*d %*d %*d %*d %*u %lu %lu", + pathTmp, &utime, &stime, &vsize, &rss)) { + pathTmp[strlen(pathTmp)-1] = '\0'; + } + fclose(fp); + if (vsize) { + unsigned long pss=0, swappss=0; + getPSSandSwapPSS(pid, &pss, &swappss); + fp = fopen("/tmp/exitHandler.txt", "a"); + if (fp) { + char tbuff[32]; + char buff[PATH_MAX*4]; + time_t timenow = time(NULL); + struct tm *tmNow = localtime(&timenow); + if (0 == strftime(tbuff, sizeof(tbuff), "%Y_%m_%d %H_%M_%S", tmNow)) { + // Shouldn't fail unless mmapTmpArray is not big enough to hold + sprintf(tbuff, "%lu", timenow); // see if this is warned in 32 bit systems.. + } +#ifdef TEST_ME + fwrite(buff, sprintf(buff, "%s: %d %s %lu %lu %lu, %lu[%lu], %lu[%lu]\n", tbuff, pid, pathTmp, utime, stime, rss*4, pss, testpsstotal, swappss, testswappsstotal), 1, fp); +#else + fwrite(buff, sprintf(buff, "%s: %d %s %lu %lu %lu, %lu, %lu\n", tbuff, pid, pathTmp, utime, stime, rss*4, pss, swappss), 1, fp); +#endif + PRINT("%d[%s]:\nutime %lu\nstime %lu\nvsize %lu\nrss %lu\npss %lu[%lu]\nswappss %lu[%lu]\n", pid, pathTmp, utime, stime, vsize/1024, rss*4, pss, testpsstotal, swappss, testswappsstotal); + fclose(fp); + } + } + } + else { + char buff[32]; + fp = fopen("/tmp/exitHandler.txt", "a"); + if (fp) { + fwrite(buff, sprintf(buff, "%d %d\n", pid, errno), 1, fp); + fclose(fp); + } + } +} + +#if defined(INSTALL_EXIT_HANDLER) +__attribute__((constructor)) void registerAtExitFromLib(void) +#else +void registerAtExitFromLib(void) +#endif +{ + //PRINT("ATEXIT_MAX = %ld\n", sysconf(_SC_ATEXIT_MAX)); + if (atexit(printMyStatFromLib)) { + PRINT("%s: Error atexit()\n", __FUNCTION__); + } + else + PRINT("%s: Registered atexit()\n", __FUNCTION__); + return; +} + +__attribute__((destructor)) void AtExitFromLib(void) +{ + //fwrite("\ndest\n", strlen("\ndest\n"), 1, stderr); + //fwrite("dest2\n", strlen("dest2\n"), 1, stdout); + printMyStatFromLib(); +} \ No newline at end of file From c229921ca615d38548c10808fbe900b10f0334e8 Mon Sep 17 00:00:00 2001 From: gomathishankar37 Date: Thu, 13 Nov 2025 18:45:05 +0530 Subject: [PATCH 02/11] Add Global Preload logic Signed-off-by: gomathishankar37 --- ProcessMonitor.cpp | 130 ++++++++++++++++++++++++++++++++++++++++++++- ProcessMonitor.h | 6 +++ main.cpp | 19 ++++++- 3 files changed, 152 insertions(+), 3 deletions(-) diff --git a/ProcessMonitor.cpp b/ProcessMonitor.cpp index 1f4ac2b..ff36f55 100644 --- a/ProcessMonitor.cpp +++ b/ProcessMonitor.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #define OP_LDH (BPF_LD | BPF_H | BPF_ABS) #define OP_LDB (BPF_LD | BPF_B | BPF_ABS) @@ -27,6 +28,9 @@ #define BPF_ALLOW 0xffffffff #define BPF_DENY 0 +extern bool gCaptureMemData; +extern std::string gMemPreloadLib; + /** * References: * * https://nick-black.com/dankwiki/index.php/The_Proc_Connector_and_Socket_Filters @@ -84,6 +88,15 @@ ProcessMonitor::~ProcessMonitor() */ bool ProcessMonitor::Start() { + bool overlayJustActivated = false; + if (gCaptureMemData && !mMemPreloadActive) { + if (!setupMemPreload()) { + Log("Failed to set up memory preload"); + return false; + } + overlayJustActivated = true; + } + if (mValid) { mStart = std::chrono::system_clock::now(); @@ -93,9 +106,23 @@ bool ProcessMonitor::Start() { mMessageReceiver = std::thread(&ProcessMonitor::receiveMessages, this); - return mMessageReceiver.joinable(); + if (mMessageReceiver.joinable()) + { + return true; + } + + Log("Message receiver thread failed to start"); + mListen = false; + } + else + { + Log("Failed to enable listen mode"); } - return false; + } + + if (overlayJustActivated) + { + teardownMemPreload(); } return false; @@ -116,6 +143,7 @@ bool ProcessMonitor::Stop() } setListenMode(false); + teardownMemPreload(); return true; } @@ -540,3 +568,101 @@ std::string ProcessMonitor::getSystemdService(pid_t pid) return "None"; } + +bool ProcessMonitor::setupMemPreload() +{ + if (!gCaptureMemData) { + return true; + } + if (gMemPreloadLib.empty()) { + Log("Memory preload requested but no library path provided"); + return false; + } + + Log("Preparing bind-mounted /etc for memory preload"); + + if (!runShellCommand("/bin/rm -rf /media/apps/etc")) + { + Log("Failed to clear /media/apps/etc"); + return false; + } + + if (!runShellCommand("/bin/mkdir -p /media/apps/etc")) + { + Log("Failed to create /media/apps/etc"); + return false; + } + + if (!runShellCommand("/bin/cp -a /etc /media/apps/etc")) { + Log("Failed to copy /etc into /media/apps/etc"); + return false; + } + + if (!runShellCommand("/sbin/mount-copybind /media/apps/etc /etc")) { + Log("Failed to bind-mount /media/apps/etc onto /etc"); + runShellCommand("/bin/rm -rf /media/apps/etc"); + return false; + } + + std::string cmd = "/bin/sh -c '/bin/echo " + gMemPreloadLib + " > /etc/ld.so.preload'"; + if (!runShellCommand(cmd)) { + Log("Failed to write preload library to /etc/ld.so.preload"); + runShellCommand("/bin/umount /etc"); + runShellCommand("/bin/rm -rf /media/apps/etc"); + return false; + } + + mMemPreloadActive = true; + Log("Memory preload enabled via %s", gMemPreloadLib.c_str()); + return true; +} + +void ProcessMonitor::teardownMemPreload() +{ + if (!mMemPreloadActive) + { + return; + } + + Log("Tearing down bind-mounted /etc for memory preload"); + + if (!runShellCommand("/bin/umount /etc")) + { + Log("Failed to unmount /etc; manual cleanup required"); + return; + } + + if (!runShellCommand("/bin/rm -rf /media/apps/etc")) + { + Log("Failed to remove /media/apps/etc; manual cleanup required"); + } + + if (!runShellCommand("/bin/sh -c '> /etc/ld.so.preload'")) + { + Log("Warning: failed to clear /etc/ld.so.preload"); + } + + mMemPreloadActive = false; +} + +bool ProcessMonitor::runShellCommand(const std::string &command) const +{ + Log("Running command: %s", command.c_str()); + + int rc = std::system(command.c_str()); + if (rc == 0) + { + Log("Command succeeded: %s", command.c_str()); + return true; + } + + if (rc == -1) + { + Log("Command failed to start: %s (errno=%d, %s)", command.c_str(), errno, strerror(errno)); + } + else + { + Log("Command returned non-zero: %s (status=%d)", command.c_str(), rc); + } + return false; +} diff --git a/ProcessMonitor.h b/ProcessMonitor.h index 2a588fb..6c83496 100644 --- a/ProcessMonitor.h +++ b/ProcessMonitor.h @@ -39,6 +39,10 @@ class ProcessMonitor std::string getSystemdService(pid_t pid); + bool runShellCommand(const std::string &command) const; + bool setupMemPreload(); + void teardownMemPreload(); + private: int mSocket; bool mListen; @@ -55,4 +59,6 @@ class ProcessMonitor std::chrono::time_point mStart; std::chrono::time_point mEnd; + + bool mMemPreloadActive = false; }; diff --git a/main.cpp b/main.cpp index 909fd59..34e9b20 100644 --- a/main.cpp +++ b/main.cpp @@ -16,6 +16,8 @@ std::mutex gMutex; std::condition_variable gShutdown; static std::string gOutputFile; +bool gCaptureMemData = false; +std::string gMemPreloadLib; // Default to 30 seconds static int gDurationSeconds = 30; @@ -30,6 +32,7 @@ static void displayUsage() printf(" -h, --help Print this help and exit\n"); printf(" -d, --duration How long to capture data for (seconds)\n"); printf(" -o --output File to save results to\n"); + printf(" -m, --mem Capture memory data\n"); } /** @@ -40,6 +43,7 @@ static void parseArgs(const int argc, char **argv) struct option longopts[] = {{"help", no_argument, nullptr, (int)'h'}, {"duration", required_argument, nullptr, (int)'d'}, {"output", required_argument, nullptr, (int)'o'}, + {"mem", required_argument, nullptr, (int)'m'}, {nullptr, 0, nullptr, 0}}; opterr = 0; @@ -47,7 +51,7 @@ static void parseArgs(const int argc, char **argv) int option; int longindex; - while ((option = getopt_long(argc, argv, "hd:o:", longopts, &longindex)) != -1) + while ((option = getopt_long(argc, argv, "hd:o:m:", longopts, &longindex)) != -1) { switch (option) { @@ -66,6 +70,19 @@ static void parseArgs(const int argc, char **argv) case 'o': gOutputFile = std::string(optarg); break; + case 'm': + { + std::string libPath = optarg ? std::string(optarg) : std::string{}; + if (libPath.empty()) + { + Log("ERROR: --mem requires a library path"); + exit(EXIT_FAILURE); + } + gCaptureMemData = true; + gMemPreloadLib = libPath; + Log("Memory preload enabled with %s", gMemPreloadLib.c_str()); + break; + } case '?': if (optopt == 'c') fprintf(stderr, "Warning: Option -%c requires an argument.\n", optopt); From 92313d59c3db87bc5c1e683d281c343e4cc9265b Mon Sep 17 00:00:00 2001 From: gomathishankar37 Date: Mon, 17 Nov 2025 08:43:41 +0530 Subject: [PATCH 03/11] RDK-59952: Add exitHandler data parsing & injection to ProcessInfo Signed-off-by: gomathishankar37 --- Process.h | 8 ++ ProcessMonitor.cpp | 212 ++++++++++++++++++++++++++++++ ProcessMonitor.h | 3 + results_gui/index.html | 285 ++++++++++++++++++++++++++++++++++++++--- results_parser.py | 56 ++++++++ 5 files changed, 546 insertions(+), 18 deletions(-) diff --git a/Process.h b/Process.h index 2095c33..e3fbea0 100644 --- a/Process.h +++ b/Process.h @@ -7,6 +7,7 @@ #include #include #include +#include /** * Often commands will be prefixed with the interpreter to use (e.g. /bin/sh -c echo "hello world"). Strip @@ -35,6 +36,13 @@ struct processInfo std::string systemdServiceName; + // Memory statistics (optional, populated when --mem is used) + std::optional pss; // Proportional Set Size (KB) + std::optional swapPss; // Swap PSS (KB) + std::optional rss; // Resident Set Size (KB) + std::optional utime; // User CPU time (jiffies) + std::optional stime; // System CPU time (jiffies) + /** * Use some heuristics to try and get a suitable name for the timeline group * diff --git a/ProcessMonitor.cpp b/ProcessMonitor.cpp index ff36f55..c4b1534 100644 --- a/ProcessMonitor.cpp +++ b/ProcessMonitor.cpp @@ -19,6 +19,8 @@ #include #include #include +#include +#include #define OP_LDH (BPF_LD | BPF_H | BPF_ABS) #define OP_LDB (BPF_LD | BPF_B | BPF_ABS) @@ -28,6 +30,8 @@ #define BPF_ALLOW 0xffffffff #define BPF_DENY 0 +#define _XOPEN_SOURCE 700 + extern bool gCaptureMemData; extern std::string gMemPreloadLib; @@ -456,6 +460,9 @@ pid_t ProcessMonitor::getParentPid(pid_t pid) */ std::string ProcessMonitor::GetJson() { + if (gCaptureMemData) { + mergeExitHandlerData(); + } Log("Generating process JSON"); // Convert this into a form that vis.js timeline can understand @@ -492,6 +499,28 @@ std::string ProcessMonitor::GetJson() process["exitCode"] = p.exitCode; process["systemdService"] = p.systemdServiceName; + // Add memory statistics if available + if (p.pss.has_value()) + { + process["pss"] = *p.pss; + } + if (p.swapPss.has_value()) + { + process["swapPss"] = *p.swapPss; + } + if (p.rss.has_value()) + { + process["rss"] = *p.rss; + } + if (p.utime.has_value()) + { + process["utime"] = *p.utime; + } + if (p.stime.has_value()) + { + process["stime"] = *p.stime; + } + results["processes"].emplace_back(process); groups.insert(process["group"]); @@ -666,3 +695,186 @@ bool ProcessMonitor::runShellCommand(const std::string &command) const } return false; } + +void ProcessMonitor::mergeExitHandlerData() +{ + if (mExitHandlerDataMerged) + { + return; + } + + std::ifstream file("/tmp/exitHandler.txt"); + if (!file.is_open()) + { + Log("Could not open /tmp/exitHandler.txt for reading (may not exist yet)"); + mExitHandlerDataMerged = true; + return; + } + + Log("Parsing exit handler data from /tmp/exitHandler.txt"); + + // Map to store exit handler entries by PID + // Key: PID, Value: struct with timestamp and memory stats + struct ExitHandlerEntry + { + std::chrono::time_point timestamp; + std::string processName; + unsigned long utime, stime, rss, pss, swapPss; + }; + + // Map: PID -> vector of entries (handle PID reuse) + std::map> exitHandlerMap; + + std::string line; + int parsedCount = 0; + int errorCount = 0; + + while (std::getline(file, line)) + { + if (line.empty()) + { + continue; + } + + // Parse format: "timestamp: pid processName utime stime rss, pss, swappss" + // Example: "2024_01_15 10_30_45: 1234 /bin/ls 100 50 4096, 2048, 512" + + // Skip error format lines: "pid errno" + if (line.find(':') == std::string::npos) + { + // Try error format: "pid errno" + pid_t pid; + int err; + if (sscanf(line.c_str(), "%d %d", &pid, &err) == 2) + { + Log("Exit handler error entry: pid %d, errno %d", pid, err); + errorCount++; + } + continue; + } + + // Parse format: "timestamp: pid processName utime stime rss, pss, swappss" + size_t colonPos = line.find(':'); + std::string timestampStr = line.substr(0, colonPos); + std::string dataStr = line.substr(colonPos + 1); + + // Parse timestamp (format: "YYYY_MM_DD HH_MM_SS") + struct tm tm = {}; + if (strptime(timestampStr.c_str(), "%Y_%m_%d %H_%M_%S", &tm) == nullptr) + { + Log("Failed to parse timestamp: %s", timestampStr.c_str()); + continue; + } + + auto timestamp = std::chrono::system_clock::from_time_t(std::mktime(&tm)); + + // Parse data: " pid processName utime stime rss, pss, swappss" + pid_t pid; + char processName[256]; + unsigned long utime, stime, rss, pss, swapPss; + + if (sscanf(dataStr.c_str(), " %d %255s %lu %lu %lu, %lu, %lu", &pid, processName, &utime, &stime, &rss, &pss, &swapPss) == 7) + { + ExitHandlerEntry entry; + entry.timestamp = timestamp; + entry.processName = processName; + entry.utime = utime; + entry.stime = stime; + entry.rss = rss; + entry.pss = pss; + entry.swapPss = swapPss; + + exitHandlerMap[pid].push_back(entry); + parsedCount++; + } + else + { + Log("Failed to parse exit handler data line: %s", line.c_str()); + } + } + file.close(); + if (file.bad()) + { + Log("Error occurred while reading /tmp/exitHandler.txt"); + } + Log("Parsed %d exit handler entries (%d errors)", parsedCount, errorCount); + + // Merge into mExitedProcesses + int matchedCount = 0; + + for (auto& process : mExitedProcesses) + { + auto it = exitHandlerMap.find(process.pid); + if (it == exitHandlerMap.end() || it->second.empty()) + { + continue; + } + const auto& entries = it->second; + + // Find entry with nearest timestamp to process.endTime + ExitHandlerEntry* bestMatch = nullptr; + auto minTimeDiff = std::chrono::hours(24); // Start with large value + + for (auto& entry : entries) + { + auto timeDiff = std::chrono::duration_cast( + process.endTime > entry.timestamp ? + process.endTime - entry.timestamp : + entry.timestamp - process.endTime); + + if (timeDiff < minTimeDiff) + { + minTimeDiff = timeDiff; + bestMatch = &entry; + } + } + + if (bestMatch == nullptr) + { + continue; + } + + // Optional name validation for large timestamp differences (fallback check) + if (minTimeDiff > std::chrono::seconds(10)) + { + std::string processBasename = process.GetStrippedName(); + std::string entryBasename = bestMatch->processName; + + // Extract basename from entry + size_t slashPos = entryBasename.find_last_of('/'); + if (slashPos != std::string::npos) + { + entryBasename = entryBasename.substr(slashPos + 1); + } + + // Extract basename from process name + slashPos = processBasename.find_last_of('/'); + if (slashPos != std::string::npos) + { + processBasename = processBasename.substr(slashPos + 1); + } + + // Fuzzy name match + bool nameMatches = (processBasename.find(entryBasename) != std::string::npos) || + (entryBasename.find(processBasename) != std::string::npos); + + if (!nameMatches) + { + Log("PID %d: large timestamp diff %lds, name mismatch ('%s' vs '%s'), skipping", + process.pid, minTimeDiff.count(), processBasename.c_str(), entryBasename.c_str()); + continue; + } + } + + // Copy memory stats + process.pss = bestMatch->pss; + process.swapPss = bestMatch->swapPss; + process.rss = bestMatch->rss; + process.utime = bestMatch->utime; + process.stime = bestMatch->stime; + matchedCount++; + } + + Log("Merged memory stats for %d processes", matchedCount); + mExitHandlerDataMerged = true; +} diff --git a/ProcessMonitor.h b/ProcessMonitor.h index 6c83496..ef2696b 100644 --- a/ProcessMonitor.h +++ b/ProcessMonitor.h @@ -39,6 +39,8 @@ class ProcessMonitor std::string getSystemdService(pid_t pid); + void mergeExitHandlerData(); + bool runShellCommand(const std::string &command) const; bool setupMemPreload(); void teardownMemPreload(); @@ -61,4 +63,5 @@ class ProcessMonitor std::chrono::time_point mEnd; bool mMemPreloadActive = false; + bool mExitHandlerDataMerged = false; }; diff --git a/results_gui/index.html b/results_gui/index.html index 7e5206c..4944fbb 100644 --- a/results_gui/index.html +++ b/results_gui/index.html @@ -11,7 +11,7 @@ - + @@ -31,6 +31,31 @@

Timeline: -

Hold Ctrl and scroll to zoom in/out

+ + +

Top 10 Systemd Services

@@ -92,6 +117,27 @@

Selected Process

Systemd Service - + + + PSS (KB) + - + + + SwapPSS (KB) + - + + + RSS (KB) + - + + + User CPU Time (ms) + - + + + System CPU Time (ms) + - +
@@ -100,6 +146,19 @@

Selected Process

+ + \ No newline at end of file diff --git a/results_parser.py b/results_parser.py index eeaaadf..7ad34c7 100644 --- a/results_parser.py +++ b/results_parser.py @@ -55,6 +55,62 @@ def parse(filename): print("-----------------------") for process in sorted(stats['processes'], key=lambda k: k['frequency'], reverse=True): print(f"{process['process']}: {process['frequency']}") + + # Check if any process has memory/CPU data + processes_with_mem_data = [p for p in results_json['processes'] + if 'pss' in p or 'rss' in p or 'utime' in p or 'stime' in p] + + if processes_with_mem_data: + print("") + print("Process Memory & CPU Statistics") + print("-----------------------") + + # Group by process name + process_mem_stats = {} + for proc in processes_with_mem_data: + proc_name = proc.get('content', 'Unknown') + if proc_name not in process_mem_stats: + process_mem_stats[proc_name] = [] + + # Convert jiffies to milliseconds (assuming 100 Hz clock, 1 jiffy = 10 ms) + # Most Linux systems use 100 Hz, but can be 1000 Hz on some systems + # Using 100 Hz as default: 1 jiffy = 10 ms + CLOCK_TICKS_PER_SEC = 100 + utime_ms = (proc.get('utime', 0) * 1000) // CLOCK_TICKS_PER_SEC if 'utime' in proc else None + stime_ms = (proc.get('stime', 0) * 1000) // CLOCK_TICKS_PER_SEC if 'stime' in proc else None + + stat_entry = { + 'pid': proc.get('pid', 'N/A'), + 'pss': proc.get('pss'), + 'swapPss': proc.get('swapPss'), + 'rss': proc.get('rss'), + 'utime_ms': utime_ms, + 'stime_ms': stime_ms + } + process_mem_stats[proc_name].append(stat_entry) + + # Sort by process name, then by PID + for proc_name in sorted(process_mem_stats.keys()): + entries = sorted(process_mem_stats[proc_name], key=lambda x: x['pid']) + print(f"Process Name: {proc_name}") + + for entry in entries: + stats_parts = [] + stats_parts.append(f"PID: {entry['pid']}") + + if entry['pss'] is not None: + stats_parts.append(f"PSS: {entry['pss']} KB") + if entry['swapPss'] is not None: + stats_parts.append(f"SwapPSS: {entry['swapPss']} KB") + if entry['rss'] is not None: + stats_parts.append(f"RSS: {entry['rss']} KB") + if entry['utime_ms'] is not None: + stats_parts.append(f"User CPU: {entry['utime_ms']} ms") + if entry['stime_ms'] is not None: + stats_parts.append(f"System CPU: {entry['stime_ms']} ms") + + print(f" - {' | '.join(stats_parts)}") + print("") def main(): From 310006e12bcdd8ced63f4eaba9cb16d575d8519e Mon Sep 17 00:00:00 2001 From: gomathishankar37 Date: Mon, 17 Nov 2025 11:46:11 +0530 Subject: [PATCH 04/11] Fix build error Signed-off-by: gomathishankar37 --- ProcessMonitor.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/ProcessMonitor.cpp b/ProcessMonitor.cpp index c4b1534..79c07bb 100644 --- a/ProcessMonitor.cpp +++ b/ProcessMonitor.cpp @@ -809,11 +809,11 @@ void ProcessMonitor::mergeExitHandlerData() { continue; } - const auto& entries = it->second; + auto& entries = it->second; // Find entry with nearest timestamp to process.endTime ExitHandlerEntry* bestMatch = nullptr; - auto minTimeDiff = std::chrono::hours(24); // Start with large value + auto minTimeDiff = std::chrono::seconds::max(); // Start with large value for (auto& entry : entries) { @@ -860,8 +860,7 @@ void ProcessMonitor::mergeExitHandlerData() if (!nameMatches) { - Log("PID %d: large timestamp diff %lds, name mismatch ('%s' vs '%s'), skipping", - process.pid, minTimeDiff.count(), processBasename.c_str(), entryBasename.c_str()); + Log("PID %d: large timestamp diff %llds, name mismatch ('%s' vs '%s'), skipping", process.pid, minTimeDiff.count(), processBasename.c_str(), entryBasename.c_str()); continue; } } From b46f273acf922b1ec9d6c2e3a622b3225699c8d1 Mon Sep 17 00:00:00 2001 From: gomathishankar37 Date: Mon, 17 Nov 2025 11:53:37 +0530 Subject: [PATCH 05/11] Update log line Signed-off-by: gomathishankar37 --- ProcessMonitor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProcessMonitor.cpp b/ProcessMonitor.cpp index 79c07bb..5f1f75a 100644 --- a/ProcessMonitor.cpp +++ b/ProcessMonitor.cpp @@ -860,7 +860,7 @@ void ProcessMonitor::mergeExitHandlerData() if (!nameMatches) { - Log("PID %d: large timestamp diff %llds, name mismatch ('%s' vs '%s'), skipping", process.pid, minTimeDiff.count(), processBasename.c_str(), entryBasename.c_str()); + Log("PID %d: large timestamp diff %lds, name mismatch ('%s' vs '%s'), skipping", process.pid, minTimeDiff.count(), processBasename.c_str(), entryBasename.c_str()); continue; } } From 3c55bbdf0edac49685ce7f41846d63f07dff3c3b Mon Sep 17 00:00:00 2001 From: gomathishankar37 Date: Thu, 20 Nov 2025 12:19:05 +0530 Subject: [PATCH 06/11] RDK-59952: Add analysis scripts and results Signed-off-by: gomathishankar37 --- pss_comparison.png | Bin 0 -> 203211 bytes results_gui/index.html | 871 +++++++++++++++++++--------------- scripts/analyze_pss.py | 389 +++++++++++++++ scripts/analyze_pss_offset.py | 431 +++++++++++++++++ 4 files changed, 1305 insertions(+), 386 deletions(-) create mode 100644 pss_comparison.png create mode 100644 scripts/analyze_pss.py create mode 100644 scripts/analyze_pss_offset.py diff --git a/pss_comparison.png b/pss_comparison.png new file mode 100644 index 0000000000000000000000000000000000000000..b8c6ec949ba4629d167b21de53a9bd242e7d7c54 GIT binary patch literal 203211 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 z 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 E0LE#{y#N3J literal 0 HcmV?d00001 diff --git a/results_gui/index.html b/results_gui/index.html index 4944fbb..5cf082e 100644 --- a/results_gui/index.html +++ b/results_gui/index.html @@ -3,25 +3,94 @@ Process Timeline + + + + + + + + +
-
-

Timeline: - +
+

+ Timeline: - +

@@ -31,33 +100,37 @@

Timeline: -

Hold Ctrl and scroll to zoom in/out

- - + +
+ +
+
-
+ +

Top 10 Systemd Services

@@ -66,9 +139,9 @@

Top 10 Systemd Services

- - +
# Spawned Processes
+

Top 10 Processes

@@ -77,456 +150,482 @@

Top 10 Processes

- - - - + +
# Executions
+

Selected Process

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + +
PID-
Name-
Command Line-
Parent Command Line-
Grandparent Command Line-
Duration (ms)-
Exit Code-
Systemd Service-
PID-
Name-
Command Line-
Parent Command Line-
Grandparent Command Line-
Duration (ms)-
Exit Code-
Systemd Service-
-

- - - \ No newline at end of file diff --git a/scripts/analyze_pss.py b/scripts/analyze_pss.py new file mode 100644 index 0000000..a66004c --- /dev/null +++ b/scripts/analyze_pss.py @@ -0,0 +1,389 @@ +import json +import re +import pandas as pd +import matplotlib.pyplot as plt +from datetime import datetime +from pathlib import Path +import glob +import sys +import argparse + +def extract_results_from_js(js_file_path): + """Extract the results object from results.js""" + try: + with open(js_file_path, 'r') as f: + content = f.read() + + # Extract JSON from "let results = {...};" or "const results = {...};" or "var results = {...};" + match = re.search(r'(?:let|const|var)\s+results\s*=\s*({.*?});', content, re.DOTALL) + if match: + return json.loads(match.group(1)) + + # Try without semicolon + match = re.search(r'(?:let|const|var)\s+results\s*=\s*({.*?})\s*$', content, re.DOTALL | re.MULTILINE) + if match: + return json.loads(match.group(1)) + + return None + except Exception as e: + print(f"✗ Error parsing results.js: {e}") + return None + +def process_results_js(results): + """Extract PSS data from Process Monitor results""" + pss_data = [] + + for process in results.get('processes', []): + if 'pss' in process and 'start' in process: + pss_data.append({ + 'timestamp': datetime.fromtimestamp(process['start'] / 1000), + 'pss_kb': process['pss'], + 'pid': process['pid'], + 'name': process.get('content', 'Unknown') + }) + + return pd.DataFrame(pss_data) + +def parse_meminsight_filename(filename): + """Parse meminsight filename to extract timestamp""" + # Format: f0463b5c0008_20251117062026_iter1_meminsight.csv + match = re.search(r'_(\d{14})_iter(\d+)_', filename) + if match: + timestamp_str = match.group(1) + iter_num = int(match.group(2)) + timestamp = datetime.strptime(timestamp_str, '%Y%m%d%H%M%S') + return timestamp, iter_num + return None, None + +def parse_meminsight_csv(csv_file): + """Parse a single meminsight CSV file and extract PSS values""" + try: + with open(csv_file, 'r') as f: + lines = f.readlines() + + # Find the line that starts with "PID,EXE,RSS,PSS" + header_index = None + for i, line in enumerate(lines): + if line.strip().startswith('PID,EXE,RSS,PSS'): + header_index = i + break + + if header_index is None: + return None, "No process header found" + + # Parse process data + pss_values = [] + for i in range(header_index + 1, len(lines)): + line = lines[i].strip() + if not line or line.startswith('#'): + continue + + parts = line.split(',') + if len(parts) < 4: + continue + + # Get the 4th column (index 3) which is PSS + try: + pid = parts[0].strip() + pss = float(parts[3].strip()) + + # Skip the Total line (PID = 0) and lines with PID = 0 + if pid == '0' or pid.lower() == 'total': + continue + + pss_values.append(pss) + except (ValueError, IndexError): + continue + + if not pss_values: + return None, "No valid PSS data found" + + # Calculate total PSS (sum of all processes) + total_pss = sum(pss_values) + return total_pss, None + + except Exception as e: + return None, str(e) + +def process_meminsight_files(meminsight_dir): + """Process all meminsight CSV files and aggregate PSS data""" + csv_files = sorted(glob.glob(str(Path(meminsight_dir) / '*_meminsight.csv'))) + + if not csv_files: + print(f" ⚠ Warning: No CSV files found in {meminsight_dir}") + return pd.DataFrame() + + print(f" Found {len(csv_files)} CSV files") + + all_data = [] + errors = [] + + for csv_file in csv_files: + filename = Path(csv_file).name + timestamp, iter_num = parse_meminsight_filename(filename) + + if timestamp is None: + print(f" ⚠ Warning: Could not parse timestamp from {filename}") + continue + + total_pss, error = parse_meminsight_csv(csv_file) + + if error: + errors.append(f"{filename}: {error}") + continue + + if total_pss is not None: + all_data.append({ + 'timestamp': timestamp, + 'pss_kb': total_pss, + 'iter': iter_num, + 'file': filename + }) + + if errors: + print(f" ⚠ Encountered {len(errors)} error(s):") + for error in errors[:5]: # Show first 5 errors + print(f" - {error}") + if len(errors) > 5: + print(f" ... and {len(errors) - 5} more") + + if all_data: + result_df = pd.DataFrame(all_data) + result_df = result_df.sort_values('timestamp') # Sort by timestamp + print(f" ✓ Successfully processed {len(result_df)} files") + print(f" Iteration range: {result_df['iter'].min()} to {result_df['iter'].max()}") + + # Show sample of data + print(f"\n Sample data:") + for _, row in result_df.head(3).iterrows(): + print(f" Iter {row['iter']:2d}: {row['timestamp']} - PSS: {row['pss_kb']:>10,.0f} KB") + if len(result_df) > 3: + print(f" ...") + for _, row in result_df.tail(2).iterrows(): + print(f" Iter {row['iter']:2d}: {row['timestamp']} - PSS: {row['pss_kb']:>10,.0f} KB") + + return result_df + else: + print(" ✗ Error: No data could be extracted from CSV files") + return pd.DataFrame() + +def plot_pss_comparison(process_monitor_df, meminsight_df, output_path=None): + """Plot PSS data from both sources""" + fig, ax = plt.subplots(figsize=(16, 8)) + + has_pm_data = False + has_mi_data = False + + # Plot Process Monitor data (aggregated by second) + if not process_monitor_df.empty: + # Aggregate PSS by second + pm_grouped = process_monitor_df.groupby( + process_monitor_df['timestamp'].dt.floor('S') + )['pss_kb'].sum().reset_index() + + ax.plot(pm_grouped['timestamp'], pm_grouped['pss_kb'], + color='red', linewidth=2, label='Process Monitor (Total PSS)', + marker='o', markersize=4, alpha=0.8) + print(f" ✓ Plotted {len(pm_grouped)} Process Monitor data points") + has_pm_data = True + + # Plot meminsight data + if not meminsight_df.empty: + ax.plot(meminsight_df['timestamp'], meminsight_df['pss_kb'], + color='green', linewidth=2, label='Meminsight (Total PSS)', + marker='s', markersize=5, alpha=0.8) + print(f" ✓ Plotted {len(meminsight_df)} Meminsight data points") + has_mi_data = True + + if not has_pm_data and not has_mi_data: + print(" ✗ No data to plot") + plt.close(fig) + return + + ax.set_xlabel('Timestamp', fontsize=12, fontweight='bold') + ax.set_ylabel('Total PSS (KB)', fontsize=12, fontweight='bold') + ax.set_title('PSS Comparison: Process Monitor vs Meminsight', + fontsize=14, fontweight='bold') + ax.legend(loc='best', fontsize=11) + ax.grid(True, alpha=0.3, linestyle='--') + + # Format y-axis with commas + ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, p: f'{int(x):,}')) + + # Format x-axis to show time nicely + plt.xticks(rotation=45, ha='right') + fig.tight_layout() + + # Save plot + if output_path is None: + output_path = Path.cwd() / 'pss_comparison.png' + else: + output_path = Path(output_path) + + plt.savefig(output_path, dpi=300, bbox_inches='tight') + print(f"\n✓ Plot saved to: {output_path}") + + plt.show() + +def print_statistics(pm_df, mi_df): + """Print statistics summary""" + print("\n" + "=" * 70) + print("STATISTICS SUMMARY") + print("=" * 70) + + if not pm_df.empty: + pm_grouped = pm_df.groupby(pm_df['timestamp'].dt.floor('S'))['pss_kb'].sum() + print(f"\n📊 Process Monitor:") + print(f" Data points: {len(pm_grouped)}") + print(f" Min PSS: {pm_grouped.min():>15,.0f} KB") + print(f" Max PSS: {pm_grouped.max():>15,.0f} KB") + print(f" Mean PSS: {pm_grouped.mean():>15,.0f} KB") + print(f" Median PSS: {pm_grouped.median():>15,.0f} KB") + print(f" Std Dev: {pm_grouped.std():>15,.0f} KB") + else: + print(f"\n📊 Process Monitor: No data") + + if not mi_df.empty: + print(f"\n📊 Meminsight:") + print(f" Data points: {len(mi_df)}") + print(f" Iterations: {mi_df['iter'].min()} to {mi_df['iter'].max()}") + print(f" Min PSS: {mi_df['pss_kb'].min():>15,.0f} KB") + print(f" Max PSS: {mi_df['pss_kb'].max():>15,.0f} KB") + print(f" Mean PSS: {mi_df['pss_kb'].mean():>15,.0f} KB") + print(f" Median PSS: {mi_df['pss_kb'].median():>15,.0f} KB") + print(f" Std Dev: {mi_df['pss_kb'].std():>15,.0f} KB") + + # Calculate PSS change over time + if len(mi_df) > 1: + pss_change = mi_df['pss_kb'].iloc[-1] - mi_df['pss_kb'].iloc[0] + pss_change_pct = (pss_change / mi_df['pss_kb'].iloc[0]) * 100 if mi_df['pss_kb'].iloc[0] > 0 else 0 + print(f" PSS Change: {pss_change:>15,.0f} KB ({pss_change_pct:+.2f}%)") + else: + print(f"\n📊 Meminsight: No data") + + # Comparison + if not pm_df.empty and not mi_df.empty: + pm_mean = pm_df.groupby(pm_df['timestamp'].dt.floor('S'))['pss_kb'].sum().mean() + mi_mean = mi_df['pss_kb'].mean() + diff = abs(pm_mean - mi_mean) + diff_pct = (diff / max(pm_mean, mi_mean)) * 100 if max(pm_mean, mi_mean) > 0 else 0 + + print(f"\n📈 Comparison:") + print(f" Process Monitor Mean: {pm_mean:>15,.0f} KB") + print(f" Meminsight Mean: {mi_mean:>15,.0f} KB") + print(f" Difference: {diff:>15,.0f} KB ({diff_pct:.2f}%)") + + if pm_mean > mi_mean: + print(f" Process Monitor captures {((pm_mean/mi_mean - 1) * 100):.2f}% more PSS on average") + else: + print(f" Meminsight captures {((mi_mean/pm_mean - 1) * 100):.2f}% more PSS on average") + + print("\n" + "=" * 70) + +def main(): + parser = argparse.ArgumentParser( + description='Analyze and compare PSS data from Process Monitor and Meminsight', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + # Basic usage with paths + python analyze_pss.py --js results.js --csv meminsight/ + + # With full paths + python analyze_pss.py \\ + --js /path/to/results.js \\ + --csv /path/to/meminsight/ + + # With custom output + python analyze_pss.py \\ + --js results.js \\ + --csv meminsight/ \\ + --output my_plot.png + """ + ) + + parser.add_argument( + '--js', + type=str, + required=True, + help='Path to results.js file from Process Monitor' + ) + + parser.add_argument( + '--csv', + type=str, + required=True, + help='Path to directory containing meminsight CSV files' + ) + + parser.add_argument( + '--output', '-o', + type=str, + default=None, + help='Output path for the plot (default: pss_comparison.png)' + ) + + args = parser.parse_args() + + # Validate paths + js_path = Path(args.js) + csv_dir = Path(args.csv) + + print("=" * 70) + print("PSS ANALYSIS: Process Monitor vs Meminsight") + print("=" * 70) + + # Check results.js + print("\n1. Validating results.js path...") + if not js_path.exists(): + print(f" ✗ Error: File not found: {js_path}") + sys.exit(1) + if not js_path.is_file(): + print(f" ✗ Error: Not a file: {js_path}") + sys.exit(1) + print(f" ✓ Found: {js_path.absolute()}") + + # Check meminsight directory + print("\n2. Validating meminsight directory...") + if not csv_dir.exists(): + print(f" ✗ Error: Directory not found: {csv_dir}") + sys.exit(1) + if not csv_dir.is_dir(): + print(f" ✗ Error: Not a directory: {csv_dir}") + sys.exit(1) + print(f" ✓ Found: {csv_dir.absolute()}") + + # Process results.js + print("\n3. Processing Process Monitor data...") + results = extract_results_from_js(js_path) + if results: + pm_df = process_results_js(results) + if not pm_df.empty: + print(f" ✓ Extracted {len(pm_df)} process records with PSS data") + print(f" Time range: {pm_df['timestamp'].min()} to {pm_df['timestamp'].max()}") + total_pss = pm_df.groupby(pm_df['timestamp'].dt.floor('S'))['pss_kb'].sum().sum() + print(f" Total PSS (aggregated): {total_pss:,.0f} KB") + else: + print(" ⚠ Warning: No PSS data found in results.js") + else: + print(" ✗ Error: Could not parse results.js") + pm_df = pd.DataFrame() + + # Process meminsight files + print("\n4. Processing Meminsight CSV files...") + mi_df = process_meminsight_files(csv_dir) + if not mi_df.empty: + print(f" Time range: {mi_df['timestamp'].min()} to {mi_df['timestamp'].max()}") + + # Generate plot + print("\n5. Generating comparison plot...") + if not pm_df.empty or not mi_df.empty: + output_path = args.output if args.output else 'pss_comparison.png' + plot_pss_comparison(pm_df, mi_df, output_path) + print_statistics(pm_df, mi_df) + else: + print(" ✗ Error: No data available to plot") + sys.exit(1) + +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/scripts/analyze_pss_offset.py b/scripts/analyze_pss_offset.py new file mode 100644 index 0000000..92896d7 --- /dev/null +++ b/scripts/analyze_pss_offset.py @@ -0,0 +1,431 @@ +import json +import re +import pandas as pd +import matplotlib.pyplot as plt +from datetime import datetime, timezone, timedelta +from pathlib import Path +import glob +import sys +import argparse + +def extract_results_from_js(js_file_path): + """Extract the results object from results.js""" + try: + with open(js_file_path, 'r') as f: + content = f.read() + + match = re.search(r'(?:let|const|var)\s+results\s*=\s*({.*?});', content, re.DOTALL) + if match: + return json.loads(match.group(1)) + + match = re.search(r'(?:let|const|var)\s+results\s*=\s*({.*?})\s*$', content, re.DOTALL | re.MULTILINE) + if match: + return json.loads(match.group(1)) + + return None + except Exception as e: + print(f"✗ Error parsing results.js: {e}") + return None + +def process_results_js(results): + """Extract PSS data from Process Monitor results""" + pss_data = [] + + for process in results.get('processes', []): + if 'pss' in process and 'start' in process: + pss_data.append({ + 'timestamp': datetime.fromtimestamp(process['start'] / 1000, tz=timezone.utc), + 'pss_mb': process['pss'] / 1024, # Convert KB to MB + 'pid': process['pid'], + 'name': process.get('content', 'Unknown') + }) + + return pd.DataFrame(pss_data) + +def parse_meminsight_filename(filename): + """Parse meminsight filename to extract timestamp""" + match = re.search(r'_(\d{14})_iter(\d+)_', filename) + if match: + timestamp_str = match.group(1) + iter_num = int(match.group(2)) + timestamp = datetime.strptime(timestamp_str, '%Y%m%d%H%M%S').replace(tzinfo=timezone.utc) + return timestamp, iter_num + return None, None + +def parse_meminsight_csv(csv_file): + """Parse a single meminsight CSV file and extract PSS values""" + try: + with open(csv_file, 'r') as f: + lines = f.readlines() + + # Find the line that starts with "PID,EXE,RSS,PSS" + header_index = None + for i, line in enumerate(lines): + if line.strip().startswith('PID,EXE,RSS,PSS'): + header_index = i + break + + if header_index is None: + return None, None, "No process header found" + + # Parse process data + pss_values = [] + for i in range(header_index + 1, len(lines)): + line = lines[i].strip() + if not line or line.startswith('#'): + continue + + parts = line.split(',') + if len(parts) < 4: + continue + + try: + pid = parts[0].strip() + pss = float(parts[3].strip()) + + # Skip the Total line (PID = 0) + if pid == '0' or pid.lower() == 'total': + continue + + pss_values.append(pss) + except (ValueError, IndexError): + continue + + if not pss_values: + return None, None, "No valid PSS data found" + + # Calculate total PSS and average PSS per process + total_pss = sum(pss_values) + average_pss = total_pss / len(pss_values) if pss_values else 0 + return total_pss, average_pss, None + + except Exception as e: + return None, None, str(e) + +def process_meminsight_files(meminsight_dir, pm_start=None, pm_end=None, time_offset_hours=0, auto_detect=True): + """Process all meminsight CSV files with smart time alignment""" + csv_files = sorted(glob.glob(str(Path(meminsight_dir) / '*_meminsight.csv'))) + + if not csv_files: + print(f" ⚠ Warning: No CSV files found in {meminsight_dir}") + return pd.DataFrame() + + print(f" Found {len(csv_files)} CSV files") + + all_data = [] + skipped = [] + + # First pass: collect all timestamps to detect grouping + file_info = [] + for csv_file in csv_files: + filename = Path(csv_file).name + timestamp, iter_num = parse_meminsight_filename(filename) + if timestamp: + file_info.append((csv_file, filename, timestamp, iter_num)) + + # Auto-detect timezone offset if enabled and PM range is available + if auto_detect and pm_start and pm_end and file_info: + print(f"\n 🔍 Auto-detecting time alignment...") + + # Group files by hour to detect different capture sessions + hour_groups = {} + for _, fname, ts, iter_num in file_info: + hour_key = ts.replace(minute=0, second=0, microsecond=0) + if hour_key not in hour_groups: + hour_groups[hour_key] = [] + hour_groups[hour_key].append((fname, ts, iter_num)) + + print(f" Found {len(hour_groups)} time group(s):") + for hour_key, files in sorted(hour_groups.items()): + iter_range = f"iter {min(f[2] for f in files)}-{max(f[2] for f in files)}" + print(f" {hour_key}: {len(files)} files ({iter_range})") + + # Process each file + for csv_file, filename, timestamp, iter_num in file_info: + original_timestamp = timestamp + + # Try with and without offset to see which fits better + best_timestamp = timestamp + best_offset = 0 + + if auto_detect and pm_start and pm_end: + # Try different offsets + for offset in [0, 5, -5]: + test_ts = timestamp + timedelta(hours=offset) + if pm_start <= test_ts <= pm_end: + best_timestamp = test_ts + best_offset = offset + break + else: + # Apply manual offset + if time_offset_hours != 0: + best_timestamp = timestamp + timedelta(hours=time_offset_hours) + best_offset = time_offset_hours + + # Check if within range + if pm_start and pm_end: + if best_timestamp < pm_start or best_timestamp > pm_end: + skipped.append((filename, original_timestamp, best_timestamp, best_offset, "Outside PM time range")) + continue + + total_pss, average_pss, error = parse_meminsight_csv(csv_file) + + if error: + skipped.append((filename, original_timestamp, best_timestamp, best_offset, error)) + continue + + if total_pss is not None and average_pss is not None: + all_data.append({ + 'timestamp': best_timestamp, + 'pss_mb': total_pss / 1024, # Convert KB to MB + 'average_pss_mb': average_pss / 1024, # Convert KB to MB + 'num_processes': int(total_pss / average_pss) if average_pss > 0 else 0, + 'iter': iter_num, + 'file': filename, + 'offset_applied': best_offset + }) + + if skipped: + print(f"\n ⚠ Skipped {len(skipped)} file(s):") + for fname, orig_ts, adj_ts, offset, reason in skipped[:5]: + if offset != 0: + print(f" - {fname}") + print(f" Original: {orig_ts}, Adjusted (+{offset}h): {adj_ts}") + print(f" Reason: {reason}") + else: + print(f" - {fname} ({orig_ts}): {reason}") + if len(skipped) > 5: + print(f" ... and {len(skipped) - 5} more") + + if all_data: + result_df = pd.DataFrame(all_data) + result_df = result_df.sort_values('timestamp') + print(f"\n ✓ Successfully processed {len(result_df)} files") + print(f" Iteration range: {result_df['iter'].min()} to {result_df['iter'].max()}") + + # Show which offsets were applied + offset_counts = result_df['offset_applied'].value_counts().sort_index() + print(f"\n Offset adjustments applied:") + for offset, count in offset_counts.items(): + print(f" {offset:+d} hours: {count} files") + + print(f"\n Sample data:") + for _, row in result_df.head(3).iterrows(): + offset_str = f" (offset: {row['offset_applied']:+d}h)" if row['offset_applied'] != 0 else "" + print(f" Iter {row['iter']:2d}: {row['timestamp']} - Total PSS: {row['pss_mb']:>10,.1f} MB ({row['num_processes']} procs){offset_str}") + if len(result_df) > 3: + print(f" ...") + for _, row in result_df.tail(2).iterrows(): + offset_str = f" (offset: {row['offset_applied']:+d}h)" if row['offset_applied'] != 0 else "" + print(f" Iter {row['iter']:2d}: {row['timestamp']} - Total PSS: {row['pss_mb']:>10,.1f} MB ({row['num_processes']} procs){offset_str}") + + return result_df + else: + print(" ✗ Error: No data could be extracted from CSV files") + return pd.DataFrame() + +def plot_pss_comparison(process_monitor_df, meminsight_df, output_path=None): + """Plot PSS data from both sources""" + fig, ax = plt.subplots(figsize=(16, 8)) + + has_pm_data = False + has_mi_data = False + + # Plot Process Monitor data (aggregated by second) + if not process_monitor_df.empty: + pm_grouped = process_monitor_df.groupby( + process_monitor_df['timestamp'].dt.floor('S') + )['pss_mb'].sum().reset_index() + + ax.plot(pm_grouped['timestamp'], pm_grouped['pss_mb'], + color='red', linewidth=2, label='Process Monitor (Total PSS)', + marker='o', markersize=4, alpha=0.8) + print(f" ✓ Plotted {len(pm_grouped)} Process Monitor data points") + has_pm_data = True + + # Plot meminsight data + if not meminsight_df.empty: + ax.plot(meminsight_df['timestamp'], meminsight_df['pss_mb'], + color='green', linewidth=2, label='Meminsight (Total PSS)', + marker='s', markersize=5, alpha=0.8) + print(f" ✓ Plotted {len(meminsight_df)} Meminsight data points") + has_mi_data = True + + if not has_pm_data and not has_mi_data: + print(" ✗ No data to plot") + plt.close(fig) + return + + ax.set_xlabel('Timestamp (UTC)', fontsize=12, fontweight='bold') + ax.set_ylabel('Total PSS (MB)', fontsize=12, fontweight='bold') + ax.set_title('PSS Comparison: Process Monitor vs Meminsight', + fontsize=14, fontweight='bold') + ax.legend(loc='best', fontsize=11) + ax.grid(True, alpha=0.3, linestyle='--') + + # Format y-axis with commas + ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, p: f'{int(x):,}')) + + # Format x-axis to show time nicely + plt.xticks(rotation=45, ha='right') + fig.tight_layout() + + if output_path is None: + output_path = Path.cwd() / 'pss_comparison.png' + else: + output_path = Path(output_path) + + plt.savefig(output_path, dpi=300, bbox_inches='tight') + print(f"\n✓ Plot saved to: {output_path}") + + plt.show() + +def print_statistics(pm_df, mi_df): + """Print statistics summary""" + print("\n" + "=" * 70) + print("STATISTICS SUMMARY") + print("=" * 70) + + if not pm_df.empty: + pm_grouped = pm_df.groupby(pm_df['timestamp'].dt.floor('S'))['pss_mb'].sum() + print(f"\n📊 Process Monitor:") + print(f" Time Range: {pm_df['timestamp'].min()} to {pm_df['timestamp'].max()}") + print(f" Data points: {len(pm_grouped)}") + print(f" Min PSS: {pm_grouped.min():>15,.1f} MB") + print(f" Max PSS: {pm_grouped.max():>15,.1f} MB") + print(f" Mean PSS: {pm_grouped.mean():>15,.1f} MB") + print(f" Median PSS: {pm_grouped.median():>15,.1f} MB") + print(f" Std Dev: {pm_grouped.std():>15,.1f} MB") + else: + print(f"\n📊 Process Monitor: No data") + + if not mi_df.empty: + print(f"\n📊 Meminsight:") + print(f" Time Range: {mi_df['timestamp'].min()} to {mi_df['timestamp'].max()}") + print(f" Data points: {len(mi_df)}") + print(f" Iterations: {mi_df['iter'].min()} to {mi_df['iter'].max()}") + print(f" Avg # Processes: {mi_df['num_processes'].mean():.0f}") + print(f" Min Total PSS: {mi_df['pss_mb'].min():>15,.1f} MB") + print(f" Max Total PSS: {mi_df['pss_mb'].max():>15,.1f} MB") + print(f" Mean Total PSS: {mi_df['pss_mb'].mean():>15,.1f} MB") + print(f" Median Total PSS:{mi_df['pss_mb'].median():>15,.1f} MB") + print(f" Std Dev: {mi_df['pss_mb'].std():>15,.1f} MB") + + if len(mi_df) > 1: + pss_change = mi_df['pss_mb'].iloc[-1] - mi_df['pss_mb'].iloc[0] + pss_change_pct = (pss_change / mi_df['pss_mb'].iloc[0]) * 100 if mi_df['pss_mb'].iloc[0] > 0 else 0 + print(f" Total PSS Change:{pss_change:>15,.1f} MB ({pss_change_pct:+.2f}%)") + + # Show average PSS per process + print(f"\n Average PSS per Process (for reference):") + print(f" Min Avg PSS: {mi_df['average_pss_mb'].min():>15,.1f} MB") + print(f" Max Avg PSS: {mi_df['average_pss_mb'].max():>15,.1f} MB") + print(f" Mean Avg PSS: {mi_df['average_pss_mb'].mean():>15,.1f} MB") + else: + print(f"\n📊 Meminsight: No data") + + # Comparison + if not pm_df.empty and not mi_df.empty: + pm_mean = pm_df.groupby(pm_df['timestamp'].dt.floor('S'))['pss_mb'].sum().mean() + mi_mean_total = mi_df['pss_mb'].mean() + mi_mean_avg = mi_df['average_pss_mb'].mean() + + print(f"\n📈 Comparison:") + print(f" Process Monitor Mean (Total): {pm_mean:>15,.1f} MB") + print(f" Meminsight Mean (Total): {mi_mean_total:>15,.1f} MB") + print(f" Meminsight Mean (Avg per Process): {mi_mean_avg:>15,.1f} MB") + + diff = abs(pm_mean - mi_mean_total) + diff_pct = (diff / max(pm_mean, mi_mean_total)) * 100 if max(pm_mean, mi_mean_total) > 0 else 0 + print(f" Difference (Total PSS): {diff:>15,.1f} MB ({diff_pct:.2f}%)") + + if pm_mean > mi_mean_total: + print(f" Process Monitor captures {((pm_mean/mi_mean_total - 1) * 100):.2f}% more PSS on average") + else: + print(f" Meminsight captures {((mi_mean_total/pm_mean - 1) * 100):.2f}% more PSS on average") + + print("\n" + "=" * 70) + +def main(): + parser = argparse.ArgumentParser( + description='Analyze and compare PSS data from Process Monitor and Meminsight', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + # Auto-detect time alignment (recommended) + python analyze_pss_offset.py --js results.js --csv meminsight/ + + # Disable auto-detection and use manual offset + python analyze_pss_offset.py --js results.js --csv meminsight/ --offset 5 --no-auto + + # With custom output + python analyze_pss_offset.py --js results.js --csv meminsight/ -o plot.png + """ + ) + + parser.add_argument('--js', type=str, required=True, help='Path to results.js file') + parser.add_argument('--csv', type=str, required=True, help='Path to meminsight CSV directory') + parser.add_argument('--output', '-o', type=str, default=None, help='Output plot path') + parser.add_argument('--offset', type=int, default=0, + help='Manual time offset in hours (use with --no-auto)') + parser.add_argument('--no-auto', action='store_true', + help='Disable auto-detection of time alignment') + + args = parser.parse_args() + + js_path = Path(args.js) + csv_dir = Path(args.csv) + + print("=" * 70) + print("PSS ANALYSIS: Process Monitor vs Meminsight") + print("=" * 70) + + # Validate paths + print("\n1. Validating paths...") + if not js_path.exists() or not js_path.is_file(): + print(f" ✗ Error: results.js not found: {js_path}") + sys.exit(1) + print(f" ✓ Found results.js: {js_path.absolute()}") + + if not csv_dir.exists() or not csv_dir.is_dir(): + print(f" ✗ Error: CSV directory not found: {csv_dir}") + sys.exit(1) + print(f" ✓ Found CSV directory: {csv_dir.absolute()}") + + # Process results.js + print("\n2. Processing Process Monitor data...") + results = extract_results_from_js(js_path) + if results: + pm_df = process_results_js(results) + if not pm_df.empty: + pm_start = pm_df['timestamp'].min() + pm_end = pm_df['timestamp'].max() + print(f" ✓ Extracted {len(pm_df)} process records") + print(f" Time range: {pm_start} to {pm_end}") + total_pss = pm_df.groupby(pm_df['timestamp'].dt.floor('S'))['pss_mb'].sum().sum() + print(f" Total PSS: {total_pss:,.1f} MB") + else: + print(" ⚠ Warning: No PSS data in results.js") + pm_start = pm_end = None + else: + print(" ✗ Error: Could not parse results.js") + pm_df = pd.DataFrame() + pm_start = pm_end = None + + # Process meminsight files + auto_mode = "disabled" if args.no_auto else "enabled" + print(f"\n3. Processing Meminsight CSV files (auto-align: {auto_mode})...") + mi_df = process_meminsight_files(csv_dir, pm_start, pm_end, args.offset, not args.no_auto) + + # Generate plot + print("\n4. Generating comparison plot...") + if not pm_df.empty or not mi_df.empty: + output_path = args.output if args.output else 'pss_comparison.png' + plot_pss_comparison(pm_df, mi_df, output_path) + print_statistics(pm_df, mi_df) + else: + print(" ✗ Error: No data available") + sys.exit(1) + +if __name__ == '__main__': + main() \ No newline at end of file From 3f9dc5e52e7636a65fe983ecc04be2f2ab73ad5a Mon Sep 17 00:00:00 2001 From: gomathishankar37 Date: Thu, 20 Nov 2025 12:25:07 +0530 Subject: [PATCH 07/11] RDK-59952: Host Pages Signed-off-by: gomathishankar37 --- docs/index.html | 631 ++++++++++++++++++++++++++++++++++++++++++++++ docs/results.js | 1 + docs/timeline.png | Bin 63440 -> 0 bytes 3 files changed, 632 insertions(+) create mode 100644 docs/index.html create mode 100644 docs/results.js delete mode 100644 docs/timeline.png diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..5cf082e --- /dev/null +++ b/docs/index.html @@ -0,0 +1,631 @@ + + + + Process Timeline + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

+ Timeline: - + + +

+
+ +
+ +
+
+
+

Hold Ctrl and scroll to zoom in/out

+ +
+ +
+ + +
+ +
+

Top 10 Systemd Services

+ + + + + + + + +
Service Name# Spawned Processes
+ +

Top 10 Processes

+ + + + + + + + + +
Process Name# Executions
+ +

Selected Process

+ + + + + + + + + + + + + + + +
PID-
Name-
Command Line-
Parent Command Line-
Grandparent Command Line-
Duration (ms)-
Exit Code-
Systemd Service-
+
+
+
+ + + + \ No newline at end of file diff --git a/docs/results.js b/docs/results.js new file mode 100644 index 0000000..e15206c --- /dev/null +++ b/docs/results.js @@ -0,0 +1 @@ +let results = {"end":1763378733586,"groups":[{"content":"-sh","id":"-sh"},{"content":"/etc/apparmor/aar_telemetry.sh","id":"/etc/apparmor/aar_telemetry.sh"},{"content":"/init","id":"/init"},{"content":"/lib/rdk/startStunnel.sh","id":"/lib/rdk/startStunnel.sh"},{"content":"/usr/bin/thunderHangRecovery","id":"/usr/bin/thunderHangRecovery"},{"content":"/usr/bin/tr69hostif","id":"/usr/bin/tr69hostif"},{"content":"WPEProcess","id":"WPEProcess"},{"content":"ping","id":"ping"}],"processes":[{"content":"/usr/sbin/logrotate","end":1763378436489,"exitCode":0,"fullCommandLine":"/usr/sbin/logrotate -s /tmp/logrotatedata.status /etc/logrotatedata.conf -l /opt/logs/logrotate.log --skip-state-lock","grandparentCommandLine":"Unknown","group":"/init","id":"8112_1763378436486","parentCommandLine":"/init","pid":8112,"pss":120,"rss":252,"start":1763378436486,"stime":0,"swapPss":0,"systemdService":"logrotate.service","title":"/usr/sbin/logrotate -s /tmp/logrotatedata.status /etc/logrotatedata.conf -l /opt/logs/logrotate.log --skip-state-lock","utime":0},{"content":"/lib/rdk/networkConnectionRecovery.sh","end":1763378436504,"exitCode":256,"fullCommandLine":"/bin/sh /lib/rdk/networkConnectionRecovery.sh","grandparentCommandLine":"Unknown","group":"/init","id":"8113_1763378436500","parentCommandLine":"/init","pid":8113,"pss":224,"rss":328,"start":1763378436500,"stime":0,"swapPss":0,"systemdService":"network-connection-stats.service","title":"/lib/rdk/networkConnectionRecovery.sh","utime":0},{"content":"ping","end":1763378438363,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8126_1763378437946","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8126,"pss":150,"rss":280,"start":1763378437946,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378438364,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8125_1763378437942","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8125,"start":1763378437942,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378440471,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8108_1763378435468","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8108,"pss":251,"rss":312,"start":1763378435468,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378445476,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8134_1763378440475","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8134,"pss":251,"rss":312,"start":1763378440475,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"date","end":1763378449037,"exitCode":0,"fullCommandLine":"date -u +%FT%H:%M","grandparentCommandLine":"/init","group":"/etc/apparmor/aar_telemetry.sh","id":"8164_1763378449033","parentCommandLine":"/bin/sh /etc/apparmor/aar_telemetry.sh","pid":8164,"pss":245,"rss":308,"start":1763378449033,"stime":0,"swapPss":0,"systemdService":"apparmor.service","title":"date -u +%FT%H:%M","utime":0},{"content":"grep","end":1763378449073,"exitCode":0,"fullCommandLine":"grep -i 2025-11-17T11:20 /opt/logs/syslog_fallback.log","grandparentCommandLine":"/init","group":"/etc/apparmor/aar_telemetry.sh","id":"8165_1763378449043","parentCommandLine":"/bin/sh /etc/apparmor/aar_telemetry.sh","pid":8165,"pss":297,"rss":308,"start":1763378449043,"stime":0,"swapPss":0,"systemdService":"apparmor.service","title":"grep -i 2025-11-17T11:20 /opt/logs/syslog_fallback.log","utime":1},{"content":"date","end":1763378449082,"exitCode":0,"fullCommandLine":"date -u +%Y-%m-%dT%T.%3NZ","grandparentCommandLine":"/init","group":"/etc/apparmor/aar_telemetry.sh","id":"8166_1763378449080","parentCommandLine":"/bin/sh /etc/apparmor/aar_telemetry.sh","pid":8166,"pss":245,"rss":308,"start":1763378449080,"stime":0,"swapPss":0,"systemdService":"apparmor.service","title":"date -u +%Y-%m-%dT%T.%3NZ","utime":0},{"content":"cat","end":1763378449088,"exitCode":256,"fullCommandLine":"cat /tmp/aar_marker.txt","grandparentCommandLine":"/init","group":"/etc/apparmor/aar_telemetry.sh","id":"8167_1763378449085","parentCommandLine":"/bin/sh /etc/apparmor/aar_telemetry.sh","pid":8167,"pss":245,"rss":308,"start":1763378449085,"stime":0,"swapPss":0,"systemdService":"apparmor.service","title":"cat /tmp/aar_marker.txt","utime":0},{"content":"rm","end":1763378449097,"exitCode":0,"fullCommandLine":"rm -f /tmp/aar_msg.txt","grandparentCommandLine":"/init","group":"/etc/apparmor/aar_telemetry.sh","id":"8168_1763378449094","parentCommandLine":"/bin/sh /etc/apparmor/aar_telemetry.sh","pid":8168,"pss":245,"rss":308,"start":1763378449094,"stime":0,"swapPss":0,"systemdService":"apparmor.service","title":"rm -f /tmp/aar_msg.txt","utime":0},{"content":"rm","end":1763378449101,"exitCode":0,"fullCommandLine":"rm -f /tmp/aar_marker.txt","grandparentCommandLine":"/init","group":"/etc/apparmor/aar_telemetry.sh","id":"8169_1763378449099","parentCommandLine":"/bin/sh /etc/apparmor/aar_telemetry.sh","pid":8169,"pss":245,"rss":308,"start":1763378449099,"stime":0,"swapPss":0,"systemdService":"apparmor.service","title":"rm -f /tmp/aar_marker.txt","utime":0},{"content":"sleep","end":1763378450486,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8151_1763378445478","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8151,"pss":249,"rss":312,"start":1763378445478,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378453342,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8187_1763378452938","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8187,"pss":154,"rss":288,"start":1763378452938,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378453344,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8186_1763378452933","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8186,"start":1763378452933,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"ls","end":1763378455100,"exitCode":0,"fullCommandLine":"ls /sys/class/net","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8195_1763378455097","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8195,"pss":204,"rss":312,"start":1763378455097,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net","utime":0},{"content":"cat","end":1763378455107,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8197_1763378455104","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8197,"pss":200,"rss":312,"start":1763378455104,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby0/ifindex","utime":0},{"content":"cat","end":1763378455118,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby_tap0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8199_1763378455114","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8199,"pss":200,"rss":312,"start":1763378455114,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby_tap0/ifindex","utime":0},{"content":"cat","end":1763378455129,"exitCode":0,"fullCommandLine":"cat /sys/class/net/eth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8201_1763378455124","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8201,"pss":200,"rss":312,"start":1763378455124,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/eth0/ifindex","utime":0},{"content":"cat","end":1763378455141,"exitCode":0,"fullCommandLine":"cat /sys/class/net/lo/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8203_1763378455136","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8203,"pss":196,"rss":308,"start":1763378455136,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/lo/ifindex","utime":0},{"content":"cat","end":1763378455155,"exitCode":0,"fullCommandLine":"cat /sys/class/net/p2p0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8205_1763378455150","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8205,"pss":200,"rss":312,"start":1763378455150,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/p2p0/ifindex","utime":0},{"content":"cat","end":1763378455167,"exitCode":0,"fullCommandLine":"cat /sys/class/net/sit0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8207_1763378455164","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8207,"pss":200,"rss":312,"start":1763378455164,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/sit0/ifindex","utime":0},{"content":"cat","end":1763378455180,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8209_1763378455175","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8209,"pss":200,"rss":312,"start":1763378455175,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth0/ifindex","utime":0},{"content":"cat","end":1763378455189,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth1/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8211_1763378455186","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8211,"pss":200,"rss":312,"start":1763378455186,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth1/ifindex","utime":0},{"content":"cat","end":1763378455200,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth2/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8213_1763378455197","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8213,"pss":200,"rss":312,"start":1763378455197,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth2/ifindex","utime":0},{"content":"cat","end":1763378455213,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth3/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8215_1763378455207","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8215,"pss":200,"rss":312,"start":1763378455207,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth3/ifindex","utime":0},{"content":"cat","end":1763378455224,"exitCode":0,"fullCommandLine":"cat /sys/class/net/wlan0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8217_1763378455221","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8217,"pss":200,"rss":312,"start":1763378455221,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/wlan0/ifindex","utime":0},{"content":"ls","end":1763378455286,"exitCode":0,"fullCommandLine":"ls /sys/class/net/dobby0/brif","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8219_1763378455277","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8219,"pss":185,"rss":312,"start":1763378455277,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net/dobby0/brif","utime":0},{"content":"awk","end":1763378455288,"exitCode":0,"fullCommandLine":"awk BEGIN{ORS=\",\";}{print $1}","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8220_1763378455279","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8220,"pss":212,"rss":312,"start":1763378455279,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"awk BEGIN{ORS=\",\";}{print $1}","utime":0},{"content":"ls","end":1763378455299,"exitCode":0,"fullCommandLine":"ls /sys/class/net","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8222_1763378455296","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8222,"pss":208,"rss":308,"start":1763378455296,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net","utime":0},{"content":"cat","end":1763378455307,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8224_1763378455303","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8224,"pss":196,"rss":312,"start":1763378455303,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby0/ifindex","utime":0},{"content":"cat","end":1763378455318,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby_tap0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8226_1763378455314","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8226,"pss":196,"rss":312,"start":1763378455314,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby_tap0/ifindex","utime":0},{"content":"cat","end":1763378455334,"exitCode":0,"fullCommandLine":"cat /sys/class/net/eth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8228_1763378455331","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8228,"pss":196,"rss":308,"start":1763378455331,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/eth0/ifindex","utime":0},{"content":"cat","end":1763378455345,"exitCode":0,"fullCommandLine":"cat /sys/class/net/lo/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8230_1763378455343","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8230,"pss":200,"rss":312,"start":1763378455343,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/lo/ifindex","utime":0},{"content":"cat","end":1763378455355,"exitCode":0,"fullCommandLine":"cat /sys/class/net/p2p0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8232_1763378455352","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8232,"pss":200,"rss":312,"start":1763378455352,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/p2p0/ifindex","utime":0},{"content":"cat","end":1763378455369,"exitCode":0,"fullCommandLine":"cat /sys/class/net/sit0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8234_1763378455363","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8234,"pss":200,"rss":312,"start":1763378455363,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/sit0/ifindex","utime":0},{"content":"cat","end":1763378455382,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8236_1763378455376","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8236,"pss":200,"rss":312,"start":1763378455376,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth0/ifindex","utime":0},{"content":"cat","end":1763378455393,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth1/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8238_1763378455389","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8238,"pss":196,"rss":308,"start":1763378455389,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth1/ifindex","utime":0},{"content":"cat","end":1763378455419,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth2/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8240_1763378455409","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8240,"pss":204,"rss":312,"start":1763378455409,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth2/ifindex","utime":0},{"content":"cat","end":1763378455435,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth3/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8242_1763378455428","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8242,"pss":204,"rss":312,"start":1763378455428,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth3/ifindex","utime":0},{"content":"cat","end":1763378455454,"exitCode":0,"fullCommandLine":"cat /sys/class/net/wlan0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8244_1763378455447","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8244,"pss":200,"rss":312,"start":1763378455447,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/wlan0/ifindex","utime":0},{"content":"sleep","end":1763378455487,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8174_1763378450486","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8174,"pss":249,"rss":312,"start":1763378450486,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"/lib/rdk/disk_threshold_check.sh","end":1763378460177,"exitCode":256,"fullCommandLine":"/bin/sh /lib/rdk/disk_threshold_check.sh 1","grandparentCommandLine":"Unknown","group":"/init","id":"8264_1763378460172","parentCommandLine":"/init","pid":8264,"pss":227,"rss":328,"start":1763378460172,"stime":0,"swapPss":0,"systemdService":"disk-threshold-check.service","title":"/lib/rdk/disk_threshold_check.sh 1","utime":0},{"content":"sleep","end":1763378460497,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8245_1763378455491","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8245,"pss":245,"rss":312,"start":1763378455491,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378465501,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8266_1763378460498","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8266,"pss":249,"rss":308,"start":1763378460498,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378468344,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8293_1763378467939","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8293,"pss":150,"rss":284,"start":1763378467939,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378468345,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8292_1763378467935","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8292,"start":1763378467935,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378470507,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8283_1763378465502","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8283,"pss":249,"rss":312,"start":1763378465502,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378475512,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8303_1763378470510","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8303,"pss":249,"rss":312,"start":1763378470510,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378480516,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8322_1763378475515","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8322,"pss":249,"rss":312,"start":1763378475515,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378483341,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8348_1763378482937","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8348,"pss":150,"rss":284,"start":1763378482937,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378483342,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8347_1763378482932","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8347,"start":1763378482932,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378485521,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8335_1763378480518","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8335,"pss":249,"rss":312,"start":1763378480518,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378490530,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8355_1763378485523","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8355,"pss":249,"rss":308,"start":1763378485523,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378495530,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8371_1763378490530","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8371,"pss":245,"rss":312,"start":1763378490530,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"/usr/sbin/logrotate","end":1763378496525,"exitCode":0,"fullCommandLine":"/usr/sbin/logrotate -s /tmp/logrotatedata.status /etc/logrotatedata.conf -l /opt/logs/logrotate.log --skip-state-lock","grandparentCommandLine":"Unknown","group":"/init","id":"8395_1763378496514","parentCommandLine":"/init","pid":8395,"pss":123,"rss":256,"start":1763378496514,"stime":0,"swapPss":0,"systemdService":"logrotate.service","title":"/usr/sbin/logrotate -s /tmp/logrotatedata.status /etc/logrotatedata.conf -l /opt/logs/logrotate.log --skip-state-lock","utime":0},{"content":"/lib/rdk/networkConnectionRecovery.sh","end":1763378496529,"exitCode":256,"fullCommandLine":"/bin/sh /lib/rdk/networkConnectionRecovery.sh","grandparentCommandLine":"Unknown","group":"/init","id":"8394_1763378496515","parentCommandLine":"/init","pid":8394,"pss":227,"rss":328,"start":1763378496515,"stime":0,"swapPss":0,"systemdService":"network-connection-stats.service","title":"/lib/rdk/networkConnectionRecovery.sh","utime":0},{"content":"ping","end":1763378498343,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8405_1763378497938","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8405,"pss":150,"rss":280,"start":1763378497938,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378498344,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8404_1763378497932","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8404,"start":1763378497932,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378500536,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8387_1763378495533","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8387,"pss":249,"rss":312,"start":1763378495533,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378505542,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8416_1763378500540","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8416,"pss":249,"rss":312,"start":1763378500540,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378510547,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8432_1763378505545","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8432,"pss":245,"rss":312,"start":1763378505545,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378513341,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8459_1763378512937","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8459,"pss":150,"rss":284,"start":1763378512937,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378513342,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8458_1763378512932","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8458,"start":1763378512932,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"ls","end":1763378515512,"exitCode":0,"fullCommandLine":"ls /sys/class/net","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8470_1763378515508","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8470,"pss":208,"rss":312,"start":1763378515508,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net","utime":0},{"content":"cat","end":1763378515520,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8472_1763378515516","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8472,"pss":200,"rss":312,"start":1763378515516,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby0/ifindex","utime":0},{"content":"cat","end":1763378515532,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby_tap0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8474_1763378515528","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8474,"pss":204,"rss":308,"start":1763378515528,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby_tap0/ifindex","utime":0},{"content":"cat","end":1763378515542,"exitCode":0,"fullCommandLine":"cat /sys/class/net/eth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8476_1763378515538","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8476,"pss":196,"rss":308,"start":1763378515538,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/eth0/ifindex","utime":0},{"content":"sleep","end":1763378515552,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8449_1763378510550","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8449,"pss":233,"rss":312,"start":1763378510550,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"cat","end":1763378515553,"exitCode":0,"fullCommandLine":"cat /sys/class/net/lo/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8478_1763378515549","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8478,"pss":245,"rss":312,"start":1763378515549,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/lo/ifindex","utime":0},{"content":"cat","end":1763378515565,"exitCode":0,"fullCommandLine":"cat /sys/class/net/p2p0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8481_1763378515563","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8481,"pss":200,"rss":312,"start":1763378515563,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/p2p0/ifindex","utime":0},{"content":"cat","end":1763378515575,"exitCode":0,"fullCommandLine":"cat /sys/class/net/sit0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8483_1763378515572","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8483,"pss":200,"rss":312,"start":1763378515572,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/sit0/ifindex","utime":0},{"content":"cat","end":1763378515758,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8485_1763378515582","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8485,"pss":200,"rss":312,"start":1763378515582,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth0/ifindex","utime":0},{"content":"cat","end":1763378515769,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth1/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8487_1763378515765","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8487,"pss":200,"rss":312,"start":1763378515765,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth1/ifindex","utime":0},{"content":"cat","end":1763378515780,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth2/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8489_1763378515776","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8489,"pss":200,"rss":312,"start":1763378515776,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth2/ifindex","utime":0},{"content":"cat","end":1763378515789,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth3/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8491_1763378515786","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8491,"pss":200,"rss":312,"start":1763378515786,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth3/ifindex","utime":0},{"content":"cat","end":1763378515798,"exitCode":0,"fullCommandLine":"cat /sys/class/net/wlan0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8493_1763378515796","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8493,"pss":200,"rss":312,"start":1763378515796,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/wlan0/ifindex","utime":0},{"content":"ls","end":1763378515836,"exitCode":0,"fullCommandLine":"ls /sys/class/net/dobby0/brif","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8495_1763378515829","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8495,"pss":181,"rss":312,"start":1763378515829,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net/dobby0/brif","utime":0},{"content":"awk","end":1763378515837,"exitCode":0,"fullCommandLine":"awk BEGIN{ORS=\",\";}{print $1}","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8496_1763378515831","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8496,"pss":216,"rss":312,"start":1763378515831,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"awk BEGIN{ORS=\",\";}{print $1}","utime":0},{"content":"ls","end":1763378515852,"exitCode":0,"fullCommandLine":"ls /sys/class/net","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8499_1763378515848","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8499,"pss":208,"rss":312,"start":1763378515848,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net","utime":0},{"content":"cat","end":1763378515859,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8501_1763378515858","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8501,"pss":196,"rss":308,"start":1763378515858,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby0/ifindex","utime":0},{"content":"cat","end":1763378515871,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby_tap0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8504_1763378515867","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8504,"pss":196,"rss":308,"start":1763378515867,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby_tap0/ifindex","utime":0},{"content":"cat","end":1763378515881,"exitCode":0,"fullCommandLine":"cat /sys/class/net/eth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8506_1763378515879","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8506,"pss":200,"rss":312,"start":1763378515879,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/eth0/ifindex","utime":0},{"content":"cat","end":1763378515893,"exitCode":0,"fullCommandLine":"cat /sys/class/net/lo/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8508_1763378515889","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8508,"pss":200,"rss":312,"start":1763378515889,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/lo/ifindex","utime":0},{"content":"cat","end":1763378515904,"exitCode":0,"fullCommandLine":"cat /sys/class/net/p2p0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8510_1763378515901","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8510,"pss":200,"rss":312,"start":1763378515901,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/p2p0/ifindex","utime":0},{"content":"cat","end":1763378515915,"exitCode":0,"fullCommandLine":"cat /sys/class/net/sit0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8512_1763378515912","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8512,"pss":204,"rss":312,"start":1763378515912,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/sit0/ifindex","utime":0},{"content":"cat","end":1763378515925,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8514_1763378515922","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8514,"pss":200,"rss":312,"start":1763378515922,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth0/ifindex","utime":0},{"content":"cat","end":1763378515935,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth1/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8516_1763378515932","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8516,"pss":200,"rss":312,"start":1763378515932,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth1/ifindex","utime":0},{"content":"cat","end":1763378515945,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth2/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8518_1763378515942","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8518,"pss":200,"rss":312,"start":1763378515942,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth2/ifindex","utime":0},{"content":"cat","end":1763378515954,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth3/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8520_1763378515952","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8520,"pss":200,"rss":312,"start":1763378515952,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth3/ifindex","utime":0},{"content":"cat","end":1763378515963,"exitCode":0,"fullCommandLine":"cat /sys/class/net/wlan0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8522_1763378515962","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8522,"pss":196,"rss":308,"start":1763378515962,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/wlan0/ifindex","utime":0},{"content":"sleep","end":1763378520556,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8479_1763378515553","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8479,"pss":245,"rss":312,"start":1763378515553,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378525561,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8540_1763378520558","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8540,"pss":249,"rss":308,"start":1763378520558,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378528344,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8566_1763378527939","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8566,"pss":150,"rss":284,"start":1763378527939,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378528346,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8565_1763378527935","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8565,"start":1763378527935,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378530565,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8553_1763378525562","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8553,"pss":249,"rss":312,"start":1763378525562,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378535569,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8573_1763378530566","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8573,"pss":249,"rss":312,"start":1763378530566,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378540578,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8589_1763378535572","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8589,"pss":245,"rss":312,"start":1763378535572,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378543352,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8620_1763378542946","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8620,"pss":150,"rss":284,"start":1763378542946,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378543353,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8619_1763378542939","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8619,"start":1763378542939,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378545578,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8609_1763378540578","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8609,"pss":249,"rss":312,"start":1763378540578,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378550582,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8630_1763378545579","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8630,"pss":249,"rss":312,"start":1763378545579,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378555587,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8646_1763378550584","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8646,"pss":249,"rss":312,"start":1763378550584,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"/usr/sbin/logrotate","end":1763378556536,"exitCode":0,"fullCommandLine":"/usr/sbin/logrotate -s /tmp/logrotatedata.status /etc/logrotatedata.conf -l /opt/logs/logrotate.log --skip-state-lock","grandparentCommandLine":"Unknown","group":"/init","id":"8667_1763378556529","parentCommandLine":"/init","pid":8667,"pss":152,"rss":252,"start":1763378556529,"stime":0,"swapPss":0,"systemdService":"logrotate.service","title":"/usr/sbin/logrotate -s /tmp/logrotatedata.status /etc/logrotatedata.conf -l /opt/logs/logrotate.log --skip-state-lock","utime":0},{"content":"/lib/rdk/system_info_collector.sh","end":1763378556542,"exitCode":256,"fullCommandLine":"/bin/sh /lib/rdk/system_info_collector.sh","grandparentCommandLine":"Unknown","group":"/init","id":"8668_1763378556535","parentCommandLine":"/init","pid":8668,"pss":223,"rss":328,"start":1763378556535,"stime":0,"swapPss":0,"systemdService":"vitalprocess-info.service","title":"/lib/rdk/system_info_collector.sh","utime":0},{"content":"ping","end":1763378558348,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8681_1763378557942","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8681,"pss":150,"rss":284,"start":1763378557942,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378558349,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8680_1763378557938","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8680,"start":1763378557938,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378560591,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8662_1763378555588","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8662,"pss":249,"rss":312,"start":1763378555588,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ls","end":1763378560760,"exitCode":0,"fullCommandLine":"ls -lh /etc/ld.so.preload","grandparentCommandLine":"/usr/sbin/dropbear -b /etc/sshbanner.txt -r /tmp/.dropbear/dropcfg1 -r /tmp/.dropbear/dropcfg2 -B -p 2601:a40:202:cb00:c170:850a:62f5:c858:22 -p 10.0.0.197:22","group":"-sh","id":"8692_1763378560755","parentCommandLine":"-sh","pid":8692,"pss":205,"rss":308,"start":1763378560755,"stime":0,"swapPss":0,"systemdService":"dropbear.service","title":"ls -lh /etc/ld.so.preload","utime":0},{"content":"sleep","end":1763378565600,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8691_1763378560592","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8691,"pss":249,"rss":312,"start":1763378560592,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"cat","end":1763378566046,"exitCode":0,"fullCommandLine":"cat /etc/ld.so.preload","grandparentCommandLine":"/usr/sbin/dropbear -b /etc/sshbanner.txt -r /tmp/.dropbear/dropcfg1 -r /tmp/.dropbear/dropcfg2 -B -p 2601:a40:202:cb00:c170:850a:62f5:c858:22 -p 10.0.0.197:22","group":"-sh","id":"8711_1763378566044","parentCommandLine":"-sh","pid":8711,"pss":196,"rss":308,"start":1763378566044,"stime":0,"swapPss":0,"systemdService":"dropbear.service","title":"cat /etc/ld.so.preload","utime":0},{"content":"sleep","end":1763378570606,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8710_1763378565600","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8710,"pss":249,"rss":312,"start":1763378565600,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378573348,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8741_1763378572944","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8741,"pss":150,"rss":284,"start":1763378572944,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378573349,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8740_1763378572938","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8740,"start":1763378572938,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378575611,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8728_1763378570608","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8728,"pss":249,"rss":312,"start":1763378570608,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ls","end":1763378576006,"exitCode":0,"fullCommandLine":"ls /sys/class/net","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8753_1763378576002","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8753,"pss":204,"rss":312,"start":1763378576002,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net","utime":0},{"content":"cat","end":1763378576013,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8755_1763378576009","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8755,"pss":200,"rss":312,"start":1763378576009,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby0/ifindex","utime":0},{"content":"cat","end":1763378576022,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby_tap0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8757_1763378576020","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8757,"pss":204,"rss":312,"start":1763378576020,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby_tap0/ifindex","utime":0},{"content":"cat","end":1763378576034,"exitCode":0,"fullCommandLine":"cat /sys/class/net/eth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8759_1763378576030","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8759,"pss":200,"rss":312,"start":1763378576030,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/eth0/ifindex","utime":0},{"content":"cat","end":1763378576043,"exitCode":0,"fullCommandLine":"cat /sys/class/net/lo/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8761_1763378576040","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8761,"pss":196,"rss":312,"start":1763378576040,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/lo/ifindex","utime":0},{"content":"cat","end":1763378576052,"exitCode":0,"fullCommandLine":"cat /sys/class/net/p2p0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8763_1763378576049","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8763,"pss":200,"rss":312,"start":1763378576049,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/p2p0/ifindex","utime":0},{"content":"cat","end":1763378576061,"exitCode":0,"fullCommandLine":"cat /sys/class/net/sit0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8765_1763378576058","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8765,"pss":196,"rss":312,"start":1763378576058,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/sit0/ifindex","utime":0},{"content":"cat","end":1763378576072,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8767_1763378576068","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8767,"pss":200,"rss":312,"start":1763378576068,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth0/ifindex","utime":0},{"content":"cat","end":1763378576083,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth1/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8769_1763378576078","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8769,"pss":200,"rss":308,"start":1763378576078,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth1/ifindex","utime":0},{"content":"cat","end":1763378576094,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth2/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8771_1763378576089","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8771,"pss":200,"rss":312,"start":1763378576089,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth2/ifindex","utime":0},{"content":"cat","end":1763378576104,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth3/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8773_1763378576101","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8773,"pss":200,"rss":308,"start":1763378576101,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth3/ifindex","utime":0},{"content":"cat","end":1763378576114,"exitCode":0,"fullCommandLine":"cat /sys/class/net/wlan0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8775_1763378576110","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8775,"pss":200,"rss":312,"start":1763378576110,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/wlan0/ifindex","utime":0},{"content":"ls","end":1763378576154,"exitCode":0,"fullCommandLine":"ls /sys/class/net/dobby0/brif","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8777_1763378576144","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8777,"pss":185,"rss":312,"start":1763378576144,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net/dobby0/brif","utime":0},{"content":"awk","end":1763378576154,"exitCode":0,"fullCommandLine":"awk BEGIN{ORS=\",\";}{print $1}","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8778_1763378576145","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8778,"pss":216,"rss":312,"start":1763378576145,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"awk BEGIN{ORS=\",\";}{print $1}","utime":0},{"content":"ls","end":1763378576167,"exitCode":0,"fullCommandLine":"ls /sys/class/net","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8780_1763378576162","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8780,"pss":208,"rss":312,"start":1763378576162,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net","utime":0},{"content":"cat","end":1763378576174,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8782_1763378576172","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8782,"pss":200,"rss":308,"start":1763378576172,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby0/ifindex","utime":0},{"content":"cat","end":1763378576184,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby_tap0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8784_1763378576181","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8784,"pss":200,"rss":312,"start":1763378576181,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby_tap0/ifindex","utime":0},{"content":"cat","end":1763378576194,"exitCode":0,"fullCommandLine":"cat /sys/class/net/eth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8786_1763378576191","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8786,"pss":196,"rss":312,"start":1763378576191,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/eth0/ifindex","utime":0},{"content":"cat","end":1763378576204,"exitCode":0,"fullCommandLine":"cat /sys/class/net/lo/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8788_1763378576201","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8788,"pss":200,"rss":312,"start":1763378576201,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/lo/ifindex","utime":0},{"content":"cat","end":1763378576213,"exitCode":0,"fullCommandLine":"cat /sys/class/net/p2p0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8790_1763378576211","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8790,"pss":196,"rss":308,"start":1763378576211,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/p2p0/ifindex","utime":0},{"content":"cat","end":1763378576227,"exitCode":0,"fullCommandLine":"cat /sys/class/net/sit0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8792_1763378576223","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8792,"pss":204,"rss":312,"start":1763378576223,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/sit0/ifindex","utime":0},{"content":"cat","end":1763378576239,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8794_1763378576234","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8794,"pss":204,"rss":312,"start":1763378576234,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth0/ifindex","utime":0},{"content":"cat","end":1763378576251,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth1/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8796_1763378576246","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8796,"pss":196,"rss":308,"start":1763378576246,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth1/ifindex","utime":0},{"content":"cat","end":1763378576264,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth2/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8798_1763378576260","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8798,"pss":200,"rss":312,"start":1763378576260,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth2/ifindex","utime":0},{"content":"cat","end":1763378576277,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth3/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8800_1763378576273","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8800,"pss":200,"rss":312,"start":1763378576273,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth3/ifindex","utime":0},{"content":"cat","end":1763378576289,"exitCode":0,"fullCommandLine":"cat /sys/class/net/wlan0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"8802_1763378576284","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":8802,"pss":200,"rss":312,"start":1763378576284,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/wlan0/ifindex","utime":0},{"content":"sleep","end":1763378580619,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8748_1763378575612","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8748,"pss":249,"rss":312,"start":1763378575612,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"pidof","end":1763378585228,"exitCode":0,"fullCommandLine":"sh -c pidof WPEFramework","grandparentCommandLine":"/init","group":"/usr/bin/thunderHangRecovery","id":"8833_1763378585199","parentCommandLine":"/usr/bin/thunderHangRecovery","pid":8833,"pss":219,"rss":568,"start":1763378585199,"stime":1,"swapPss":0,"systemdService":"thunderHangRecovery.service","title":"pidof WPEFramework","utime":1},{"content":"sleep","end":1763378585619,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8817_1763378580620","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8817,"pss":245,"rss":312,"start":1763378580620,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378588344,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8844_1763378587939","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8844,"pss":150,"rss":284,"start":1763378587939,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378588345,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8843_1763378587937","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8843,"start":1763378587937,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378590628,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8834_1763378585620","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8834,"pss":249,"rss":312,"start":1763378585620,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378595629,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8854_1763378590628","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8854,"pss":245,"rss":312,"start":1763378590628,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378600637,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8870_1763378595631","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8870,"pss":249,"rss":312,"start":1763378595631,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378603348,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8900_1763378602943","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8900,"pss":146,"rss":284,"start":1763378602943,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378603350,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8899_1763378602937","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8899,"start":1763378602937,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378605639,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8890_1763378600637","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8890,"pss":249,"rss":312,"start":1763378600637,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378610642,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8910_1763378605640","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8910,"pss":249,"rss":312,"start":1763378605640,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378615651,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8926_1763378610645","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8926,"pss":249,"rss":312,"start":1763378610645,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"/usr/sbin/logrotate","end":1763378616538,"exitCode":0,"fullCommandLine":"/usr/sbin/logrotate -s /tmp/logrotatedata.status /etc/logrotatedata.conf -l /opt/logs/logrotate.log --skip-state-lock","grandparentCommandLine":"Unknown","group":"/init","id":"8943_1763378616535","parentCommandLine":"/init","pid":8943,"pss":152,"rss":256,"start":1763378616535,"stime":0,"swapPss":0,"systemdService":"logrotate.service","title":"/usr/sbin/logrotate -s /tmp/logrotatedata.status /etc/logrotatedata.conf -l /opt/logs/logrotate.log --skip-state-lock","utime":0},{"content":"/lib/rdk/networkConnectionRecovery.sh","end":1763378616553,"exitCode":256,"fullCommandLine":"/bin/sh /lib/rdk/networkConnectionRecovery.sh","grandparentCommandLine":"Unknown","group":"/init","id":"8944_1763378616551","parentCommandLine":"/init","pid":8944,"pss":227,"rss":324,"start":1763378616551,"stime":0,"swapPss":0,"systemdService":"network-connection-stats.service","title":"/lib/rdk/networkConnectionRecovery.sh","utime":0},{"content":"ping","end":1763378618350,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"8960_1763378617947","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":8960,"pss":146,"rss":284,"start":1763378617947,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378618351,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"8959_1763378617941","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":8959,"start":1763378617941,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378620655,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8939_1763378615652","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8939,"pss":249,"rss":312,"start":1763378615652,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378625657,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8967_1763378620656","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8967,"pss":245,"rss":312,"start":1763378620656,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378630661,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"8983_1763378625658","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":8983,"pss":249,"rss":312,"start":1763378625658,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378633341,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"9014_1763378632936","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":9014,"pss":150,"rss":280,"start":1763378632936,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378633342,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"9013_1763378632931","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":9013,"start":1763378632931,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378635665,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9002_1763378630662","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9002,"pss":249,"rss":312,"start":1763378630662,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ls","end":1763378636359,"exitCode":0,"fullCommandLine":"ls /sys/class/net","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9030_1763378636351","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9030,"pss":208,"rss":312,"start":1763378636351,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net","utime":0},{"content":"cat","end":1763378636363,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9032_1763378636359","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9032,"pss":200,"rss":312,"start":1763378636359,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby0/ifindex","utime":0},{"content":"cat","end":1763378636374,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby_tap0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9034_1763378636370","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9034,"pss":200,"rss":312,"start":1763378636370,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby_tap0/ifindex","utime":0},{"content":"cat","end":1763378636385,"exitCode":0,"fullCommandLine":"cat /sys/class/net/eth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9036_1763378636381","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9036,"pss":200,"rss":312,"start":1763378636381,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/eth0/ifindex","utime":0},{"content":"cat","end":1763378636397,"exitCode":0,"fullCommandLine":"cat /sys/class/net/lo/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9038_1763378636391","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9038,"pss":200,"rss":312,"start":1763378636391,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/lo/ifindex","utime":0},{"content":"cat","end":1763378636411,"exitCode":0,"fullCommandLine":"cat /sys/class/net/p2p0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9040_1763378636405","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9040,"pss":200,"rss":312,"start":1763378636405,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/p2p0/ifindex","utime":0},{"content":"cat","end":1763378636424,"exitCode":0,"fullCommandLine":"cat /sys/class/net/sit0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9042_1763378636419","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9042,"pss":196,"rss":312,"start":1763378636419,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/sit0/ifindex","utime":0},{"content":"cat","end":1763378636435,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9044_1763378636431","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9044,"pss":200,"rss":312,"start":1763378636431,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth0/ifindex","utime":0},{"content":"cat","end":1763378636447,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth1/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9046_1763378636441","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9046,"pss":200,"rss":312,"start":1763378636441,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth1/ifindex","utime":0},{"content":"cat","end":1763378636459,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth2/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9048_1763378636454","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9048,"pss":196,"rss":312,"start":1763378636454,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth2/ifindex","utime":0},{"content":"cat","end":1763378636471,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth3/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9050_1763378636466","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9050,"pss":200,"rss":312,"start":1763378636466,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth3/ifindex","utime":0},{"content":"cat","end":1763378636484,"exitCode":0,"fullCommandLine":"cat /sys/class/net/wlan0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9052_1763378636479","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9052,"pss":204,"rss":312,"start":1763378636479,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/wlan0/ifindex","utime":0},{"content":"ls","end":1763378636531,"exitCode":0,"fullCommandLine":"ls /sys/class/net/dobby0/brif","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9054_1763378636523","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9054,"pss":181,"rss":312,"start":1763378636523,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net/dobby0/brif","utime":0},{"content":"awk","end":1763378636532,"exitCode":0,"fullCommandLine":"awk BEGIN{ORS=\",\";}{print $1}","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9055_1763378636526","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9055,"pss":216,"rss":312,"start":1763378636526,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"awk BEGIN{ORS=\",\";}{print $1}","utime":0},{"content":"ls","end":1763378636549,"exitCode":0,"fullCommandLine":"ls /sys/class/net","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9057_1763378636541","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9057,"pss":204,"rss":312,"start":1763378636541,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net","utime":0},{"content":"cat","end":1763378636557,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9059_1763378636556","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9059,"pss":196,"rss":312,"start":1763378636556,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby0/ifindex","utime":0},{"content":"cat","end":1763378636570,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby_tap0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9061_1763378636566","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9061,"pss":200,"rss":312,"start":1763378636566,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby_tap0/ifindex","utime":0},{"content":"cat","end":1763378636580,"exitCode":0,"fullCommandLine":"cat /sys/class/net/eth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9063_1763378636578","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9063,"pss":196,"rss":308,"start":1763378636578,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/eth0/ifindex","utime":0},{"content":"cat","end":1763378636589,"exitCode":0,"fullCommandLine":"cat /sys/class/net/lo/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9065_1763378636586","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9065,"pss":200,"rss":312,"start":1763378636586,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/lo/ifindex","utime":0},{"content":"cat","end":1763378636599,"exitCode":0,"fullCommandLine":"cat /sys/class/net/p2p0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9067_1763378636597","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9067,"pss":200,"rss":312,"start":1763378636597,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/p2p0/ifindex","utime":0},{"content":"cat","end":1763378636610,"exitCode":0,"fullCommandLine":"cat /sys/class/net/sit0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9069_1763378636605","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9069,"pss":196,"rss":312,"start":1763378636605,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/sit0/ifindex","utime":0},{"content":"cat","end":1763378636622,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9071_1763378636618","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9071,"pss":196,"rss":312,"start":1763378636618,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth0/ifindex","utime":0},{"content":"cat","end":1763378636649,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth1/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9073_1763378636634","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9073,"pss":200,"rss":312,"start":1763378636634,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth1/ifindex","utime":0},{"content":"cat","end":1763378636666,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth2/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9075_1763378636661","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9075,"pss":200,"rss":312,"start":1763378636661,"stime":0,"swapPss":0,"systemdService":"None","title":"cat /sys/class/net/veth2/ifindex","utime":0},{"content":"cat","end":1763378636681,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth3/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9077_1763378636676","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9077,"pss":200,"rss":312,"start":1763378636676,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth3/ifindex","utime":0},{"content":"cat","end":1763378636698,"exitCode":0,"fullCommandLine":"cat /sys/class/net/wlan0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9079_1763378636692","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9079,"pss":200,"rss":312,"start":1763378636692,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/wlan0/ifindex","utime":0},{"content":"sleep","end":1763378640669,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9024_1763378635667","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9024,"pss":249,"rss":312,"start":1763378635667,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378645674,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9094_1763378640672","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9094,"pss":245,"rss":312,"start":1763378640672,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378648344,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"9120_1763378647939","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":9120,"pss":146,"rss":284,"start":1763378647939,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378648345,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"9119_1763378647934","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":9119,"start":1763378647934,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378650679,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9110_1763378645677","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9110,"pss":249,"rss":312,"start":1763378645677,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378655685,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9130_1763378650683","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9130,"pss":249,"rss":312,"start":1763378650683,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378660690,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9146_1763378655688","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9146,"pss":249,"rss":312,"start":1763378655688,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378663340,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"9179_1763378662936","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":9179,"pss":154,"rss":288,"start":1763378662936,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378663341,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"9178_1763378662931","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":9178,"start":1763378662931,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378665696,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9160_1763378660691","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9160,"pss":249,"rss":312,"start":1763378660691,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378670702,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9186_1763378665699","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9186,"pss":249,"rss":308,"start":1763378665699,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378675707,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9202_1763378670704","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9202,"pss":249,"rss":312,"start":1763378670704,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"/lib/rdk/networkConnectionRecovery.sh","end":1763378676556,"exitCode":256,"fullCommandLine":"/bin/sh /lib/rdk/networkConnectionRecovery.sh","grandparentCommandLine":"Unknown","group":"/init","id":"9225_1763378676553","parentCommandLine":"/init","pid":9225,"pss":227,"rss":328,"start":1763378676553,"stime":0,"swapPss":0,"systemdService":"network-connection-stats.service","title":"/lib/rdk/networkConnectionRecovery.sh","utime":0},{"content":"/usr/sbin/logrotate","end":1763378676561,"exitCode":0,"fullCommandLine":"/usr/sbin/logrotate -s /tmp/logrotatedata.status /etc/logrotatedata.conf -l /opt/logs/logrotate.log --skip-state-lock","grandparentCommandLine":"Unknown","group":"/init","id":"9226_1763378676556","parentCommandLine":"/init","pid":9226,"pss":120,"rss":252,"start":1763378676556,"stime":0,"swapPss":0,"systemdService":"logrotate.service","title":"/usr/sbin/logrotate -s /tmp/logrotatedata.status /etc/logrotatedata.conf -l /opt/logs/logrotate.log --skip-state-lock","utime":0},{"content":"ping","end":1763378678361,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"9239_1763378677956","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":9239,"pss":150,"rss":284,"start":1763378677956,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378678362,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"9238_1763378677950","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":9238,"start":1763378677950,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378680711,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9219_1763378675708","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9219,"pss":249,"rss":312,"start":1763378675708,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378685716,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9250_1763378680713","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9250,"pss":249,"rss":312,"start":1763378680713,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378690725,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9266_1763378685718","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9266,"pss":245,"rss":312,"start":1763378685718,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378693353,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"9294_1763378692939","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":9294,"pss":146,"rss":280,"start":1763378692939,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378693355,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"9293_1763378692935","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":9293,"start":1763378692935,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378695725,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9284_1763378690725","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9284,"pss":249,"rss":312,"start":1763378690725,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ls","end":1763378696775,"exitCode":0,"fullCommandLine":"ls /sys/class/net","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9311_1763378696768","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9311,"pss":208,"rss":312,"start":1763378696768,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net","utime":0},{"content":"cat","end":1763378696780,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9313_1763378696776","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9313,"pss":200,"rss":312,"start":1763378696776,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby0/ifindex","utime":0},{"content":"cat","end":1763378696792,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby_tap0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9315_1763378696787","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9315,"pss":200,"rss":312,"start":1763378696787,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby_tap0/ifindex","utime":0},{"content":"cat","end":1763378696804,"exitCode":0,"fullCommandLine":"cat /sys/class/net/eth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9317_1763378696800","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9317,"pss":200,"rss":312,"start":1763378696800,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/eth0/ifindex","utime":0},{"content":"cat","end":1763378696814,"exitCode":0,"fullCommandLine":"cat /sys/class/net/lo/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9319_1763378696811","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9319,"pss":200,"rss":312,"start":1763378696811,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/lo/ifindex","utime":0},{"content":"cat","end":1763378696827,"exitCode":0,"fullCommandLine":"cat /sys/class/net/p2p0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9321_1763378696822","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9321,"pss":200,"rss":312,"start":1763378696822,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/p2p0/ifindex","utime":0},{"content":"cat","end":1763378696838,"exitCode":0,"fullCommandLine":"cat /sys/class/net/sit0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9323_1763378696834","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9323,"pss":200,"rss":312,"start":1763378696834,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/sit0/ifindex","utime":0},{"content":"cat","end":1763378696852,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9325_1763378696848","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9325,"pss":200,"rss":312,"start":1763378696848,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth0/ifindex","utime":0},{"content":"cat","end":1763378696863,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth1/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9327_1763378696860","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9327,"pss":200,"rss":312,"start":1763378696860,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth1/ifindex","utime":0},{"content":"cat","end":1763378696875,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth2/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9329_1763378696869","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9329,"pss":204,"rss":312,"start":1763378696869,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth2/ifindex","utime":0},{"content":"cat","end":1763378696885,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth3/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9331_1763378696881","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9331,"pss":196,"rss":312,"start":1763378696881,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth3/ifindex","utime":0},{"content":"cat","end":1763378696897,"exitCode":0,"fullCommandLine":"cat /sys/class/net/wlan0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9333_1763378696892","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9333,"pss":200,"rss":312,"start":1763378696892,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/wlan0/ifindex","utime":0},{"content":"ls","end":1763378696931,"exitCode":0,"fullCommandLine":"ls /sys/class/net/dobby0/brif","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9335_1763378696929","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9335,"pss":202,"rss":312,"start":1763378696929,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net/dobby0/brif","utime":0},{"content":"awk","end":1763378696933,"exitCode":0,"fullCommandLine":"awk BEGIN{ORS=\",\";}{print $1}","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9336_1763378696930","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9336,"pss":216,"rss":312,"start":1763378696930,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"awk BEGIN{ORS=\",\";}{print $1}","utime":0},{"content":"ls","end":1763378696945,"exitCode":0,"fullCommandLine":"ls /sys/class/net","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9338_1763378696942","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9338,"pss":208,"rss":308,"start":1763378696942,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"ls /sys/class/net","utime":0},{"content":"cat","end":1763378696956,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9340_1763378696950","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9340,"pss":204,"rss":312,"start":1763378696950,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby0/ifindex","utime":0},{"content":"cat","end":1763378696971,"exitCode":0,"fullCommandLine":"cat /sys/class/net/dobby_tap0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9342_1763378696964","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9342,"pss":204,"rss":312,"start":1763378696964,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/dobby_tap0/ifindex","utime":0},{"content":"cat","end":1763378696982,"exitCode":0,"fullCommandLine":"cat /sys/class/net/eth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9344_1763378696978","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9344,"pss":200,"rss":312,"start":1763378696978,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/eth0/ifindex","utime":0},{"content":"cat","end":1763378696993,"exitCode":0,"fullCommandLine":"cat /sys/class/net/lo/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9346_1763378696989","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9346,"pss":204,"rss":312,"start":1763378696989,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/lo/ifindex","utime":0},{"content":"cat","end":1763378697004,"exitCode":0,"fullCommandLine":"cat /sys/class/net/p2p0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9348_1763378697001","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9348,"pss":200,"rss":312,"start":1763378697001,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/p2p0/ifindex","utime":0},{"content":"cat","end":1763378697014,"exitCode":0,"fullCommandLine":"cat /sys/class/net/sit0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9350_1763378697010","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9350,"pss":200,"rss":312,"start":1763378697010,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/sit0/ifindex","utime":0},{"content":"cat","end":1763378697026,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9352_1763378697022","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9352,"pss":200,"rss":312,"start":1763378697022,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth0/ifindex","utime":0},{"content":"cat","end":1763378697037,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth1/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9355_1763378697034","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9355,"pss":200,"rss":312,"start":1763378697034,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth1/ifindex","utime":0},{"content":"cat","end":1763378697048,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth2/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9357_1763378697047","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9357,"pss":200,"rss":312,"start":1763378697047,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth2/ifindex","utime":0},{"content":"cat","end":1763378697059,"exitCode":0,"fullCommandLine":"cat /sys/class/net/veth3/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9359_1763378697058","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9359,"pss":200,"rss":312,"start":1763378697058,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/veth3/ifindex","utime":0},{"content":"cat","end":1763378697073,"exitCode":0,"fullCommandLine":"cat /sys/class/net/wlan0/ifindex","grandparentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","group":"/usr/bin/tr69hostif","id":"9361_1763378697067","parentCommandLine":"/usr/bin/tr69hostif -c /etc/mgrlist.conf -p 10999 -s 11999","pid":9361,"pss":200,"rss":312,"start":1763378697067,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"cat /sys/class/net/wlan0/ifindex","utime":0},{"content":"sleep","end":1763378700732,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9306_1763378695728","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9306,"pss":249,"rss":312,"start":1763378695728,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378705737,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9376_1763378700734","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9376,"pss":249,"rss":312,"start":1763378700734,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378708347,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"9401_1763378707942","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":9401,"pss":150,"rss":284,"start":1763378707942,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378708348,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"9400_1763378707936","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":9400,"start":1763378707936,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378710745,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9389_1763378705738","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9389,"pss":249,"rss":312,"start":1763378705738,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378715747,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9411_1763378710746","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9411,"pss":249,"rss":312,"start":1763378710746,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378720757,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9429_1763378715751","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9429,"pss":249,"rss":312,"start":1763378715751,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"ping","end":1763378723342,"exitCode":0,"fullCommandLine":"ping -c 3 -W 3 -i 0.2 10.0.0.1","grandparentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","group":"ping","id":"9455_1763378722938","parentCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","pid":9455,"pss":150,"rss":284,"start":1763378722938,"stime":0,"swapPss":0,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 10.0.0.1","utime":0},{"content":"ping","end":1763378723344,"exitCode":0,"fullCommandLine":"sh -c ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1","grandparentCommandLine":"/usr/bin/WPEFramework -b","group":"WPEProcess","id":"9454_1763378722934","parentCommandLine":"WPEProcess -l libWPEFrameworkNetworkManagerImpl.so -c NetworkManagerImplementation -C org.rdk.NetworkManager -r /tmp/communicator -i 2147484896 -x 18 -p \"/opt/persistent/rdkservices/org.rdk.NetworkManager/\" -s \"/usr/lib/wpeframework/plugins/\" -d \"/usr/share/WPEFramework/NetworkManager/\" -a \"/usr/bin/\" -v \"/tmp/org.rdk.NetworkManager/\" -m \"/usr/lib/wpeframework/proxystubs/\" -P \"/opt/secure/minidumps/\"","pid":9454,"start":1763378722934,"systemdService":"wpeframework.service","title":"ping -c 3 -W 3 -i 0.2 '10.0.0.1' 2>&1"},{"content":"sleep","end":1763378725761,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9445_1763378720757","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9445,"pss":249,"rss":312,"start":1763378720757,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0},{"content":"sleep","end":1763378730761,"exitCode":0,"fullCommandLine":"sleep 5","grandparentCommandLine":"/init","group":"/lib/rdk/startStunnel.sh","id":"9465_1763378725761","parentCommandLine":"/bin/sh /lib/rdk/startStunnel.sh 3002 acrylic-platco-only-lab.xcal.tv acrylic-platco-only-lab.xcal.tv 2009 -I 300 -f -N -y -T -R 4453:10.0.0.197:22 webpa_user01@ localhost -p 3002 acrylic-platco-only-lab.xcal.tv -p 2221","pid":9465,"pss":245,"rss":312,"start":1763378725761,"stime":0,"swapPss":0,"systemdService":"tr69hostif.service","title":"sleep 5","utime":0}],"start":1763378433585,"stats":{"processes":[{"frequency":1,"process":"/lib/rdk/disk_threshold_check.sh"},{"frequency":4,"process":"/lib/rdk/networkConnectionRecovery.sh"},{"frequency":1,"process":"/lib/rdk/system_info_collector.sh"},{"frequency":5,"process":"/usr/sbin/logrotate"},{"frequency":5,"process":"awk"},{"frequency":112,"process":"cat"},{"frequency":2,"process":"date"},{"frequency":1,"process":"grep"},{"frequency":16,"process":"ls"},{"frequency":1,"process":"pidof"},{"frequency":40,"process":"ping"},{"frequency":2,"process":"rm"},{"frequency":59,"process":"sleep"}],"services":[{"frequency":1,"serviceName":"vitalprocess-info.service"},{"frequency":1,"serviceName":"disk-threshold-check.service"},{"frequency":6,"serviceName":"apparmor.service"},{"frequency":2,"serviceName":"dropbear.service"},{"frequency":188,"serviceName":"tr69hostif.service"},{"frequency":1,"serviceName":"None"},{"frequency":1,"serviceName":"thunderHangRecovery.service"},{"frequency":40,"serviceName":"wpeframework.service"},{"frequency":4,"serviceName":"network-connection-stats.service"},{"frequency":5,"serviceName":"logrotate.service"}]}}; \ No newline at end of file diff --git a/docs/timeline.png b/docs/timeline.png deleted file mode 100644 index 28c9225a3543f0eccc6fae44342269df5dc6fda4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63440 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 bvM$*iFKy!+ce_L!sBE*bw6h?YUyS<~RSV<8 From c45782e3b6b56fda25082fd2baf28babbe066850 Mon Sep 17 00:00:00 2001 From: gomathishankar37 Date: Mon, 1 Dec 2025 12:10:25 +0530 Subject: [PATCH 08/11] Modify setup and tear down APIs Signed-off-by: gomathishankar37 --- ProcessMonitor.cpp | 523 +++++++++++++++++++++++++-- ProcessMonitor.h | 1 - scripts/analyze_systemd_processes.py | 459 +++++++++++++++++++++++ scripts/detailed_results_parser.py | 383 ++++++++++++++++++++ scripts/results_parser.py | 130 +++++++ 5 files changed, 1456 insertions(+), 40 deletions(-) create mode 100644 scripts/analyze_systemd_processes.py create mode 100644 scripts/detailed_results_parser.py create mode 100644 scripts/results_parser.py diff --git a/ProcessMonitor.cpp b/ProcessMonitor.cpp index 5f1f75a..c56915b 100644 --- a/ProcessMonitor.cpp +++ b/ProcessMonitor.cpp @@ -21,6 +21,10 @@ #include #include #include +#include +#include +#include +#include #define OP_LDH (BPF_LD | BPF_H | BPF_ABS) #define OP_LDB (BPF_LD | BPF_B | BPF_ABS) @@ -32,9 +36,358 @@ #define _XOPEN_SOURCE 700 +#define MOUNT_DIR "/media/apps" +#define ETC_DIR "/etc" + extern bool gCaptureMemData; extern std::string gMemPreloadLib; +/** + * @brief Recursively remove all files and subdirectories in a directory + * + * @param path Path to the directory to clear + * @return true if successful, false otherwise + */ +static bool clearDirectory(const char *path) +{ + DIR *dir = opendir(path); + if (dir == nullptr) + { + if (errno == ENOENT) + { + // Directory doesn't exist, nothing to clear + Log("Directory %s does not exist, nothing to clear", path); + return true; + } + Log("Failed to open directory %s: %s", path, strerror(errno)); + return false; + } + + struct dirent *entry; + bool success = true; + + while ((entry = readdir(dir)) != nullptr) + { + // Skip . and .. + if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) + { + continue; + } + + char fullPath[PATH_MAX]; + int ret = snprintf(fullPath, sizeof(fullPath), "%s/%s", path, entry->d_name); + if (ret < 0 || ret >= (int)sizeof(fullPath)) + { + Log("Path too long: %s/%s", path, entry->d_name); + success = false; + continue; + } + + struct stat statbuf; + if (lstat(fullPath, &statbuf) != 0) + { + Log("Failed to stat %s: %s", fullPath, strerror(errno)); + success = false; + continue; + } + + if (S_ISDIR(statbuf.st_mode)) + { + // Recursively clear and remove subdirectory + if (!clearDirectory(fullPath)) + { + success = false; + continue; + } + if (rmdir(fullPath) != 0) + { + Log("Failed to remove directory %s: %s", fullPath, strerror(errno)); + success = false; + } + } + else + { + // Remove file + if (unlink(fullPath) != 0) + { + Log("Failed to remove file %s: %s", fullPath, strerror(errno)); + success = false; + } + } + } + + closedir(dir); + return success; +} + +/** + * @brief Create a directory with all parent directories + * + * @param path Path to the directory to create + * @return true if successful, false otherwise + */ +static bool createDirectory(const char *path) +{ + char tmp[PATH_MAX]; + char *p = nullptr; + size_t len; + + int ret = snprintf(tmp, sizeof(tmp), "%s", path); + if (ret < 0 || ret >= (int)sizeof(tmp)) + { + Log("Path too long: %s", path); + return false; + } + + len = strlen(tmp); + if (tmp[len - 1] == '/') + { + tmp[len - 1] = 0; + } + + for (p = tmp + 1; *p; p++) + { + if (*p == '/') + { + *p = 0; + if (mkdir(tmp, 0755) != 0) + { + if (errno != EEXIST) + { + Log("Failed to create directory %s: %s", tmp, strerror(errno)); + return false; + } + } + *p = '/'; + } + } + + if (mkdir(tmp, 0755) != 0) + { + if (errno != EEXIST) + { + Log("Failed to create directory %s: %s", tmp, strerror(errno)); + return false; + } + } + + Log("Created directory: %s", path); + return true; +} + +/** + * @brief Recursively copy a directory and its contents + * + * @param src Source directory path + * @param dest Destination directory path + * @return true if successful, false otherwise + */ +static bool copyDirectory(const char *src, const char *dest) +{ + DIR *dir = opendir(src); + if (dir == nullptr) + { + Log("Failed to open source directory %s: %s", src, strerror(errno)); + return false; + } + + // Create destination directory + if (!createDirectory(dest)) + { + closedir(dir); + return false; + } + + struct dirent *entry; + bool success = true; + + while ((entry = readdir(dir)) != nullptr) + { + // Skip . and .. + if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) + { + continue; + } + + char srcPath[PATH_MAX]; + char destPath[PATH_MAX]; + + int ret = snprintf(srcPath, sizeof(srcPath), "%s/%s", src, entry->d_name); + if (ret < 0 || ret >= (int)sizeof(srcPath)) + { + Log("Source path too long: %s/%s", src, entry->d_name); + success = false; + continue; + } + + ret = snprintf(destPath, sizeof(destPath), "%s/%s", dest, entry->d_name); + if (ret < 0 || ret >= (int)sizeof(destPath)) + { + Log("Destination path too long: %s/%s", dest, entry->d_name); + success = false; + continue; + } + + struct stat statbuf; + if (lstat(srcPath, &statbuf) != 0) + { + Log("Failed to stat %s: %s", srcPath, strerror(errno)); + success = false; + continue; + } + + if (S_ISDIR(statbuf.st_mode)) + { + // Recursively copy subdirectory + if (!copyDirectory(srcPath, destPath)) + { + success = false; + } + } + else if (S_ISLNK(statbuf.st_mode)) + { + // Copy symlink + char linkTarget[PATH_MAX]; + ssize_t linkLen = readlink(srcPath, linkTarget, sizeof(linkTarget) - 1); + if (linkLen < 0) + { + Log("Failed to read symlink %s: %s", srcPath, strerror(errno)); + success = false; + continue; + } + linkTarget[linkLen] = '\0'; + + if (symlink(linkTarget, destPath) != 0) + { + Log("Failed to create symlink %s -> %s: %s", destPath, linkTarget, strerror(errno)); + success = false; + } + } + else if (S_ISREG(statbuf.st_mode)) + { + // Copy regular file + int srcFd = open(srcPath, O_RDONLY | O_CLOEXEC); + if (srcFd < 0) + { + Log("Failed to open source file %s: %s", srcPath, strerror(errno)); + success = false; + continue; + } + + int destFd = open(destPath, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, statbuf.st_mode); + if (destFd < 0) + { + Log("Failed to open destination file %s: %s", destPath, strerror(errno)); + close(srcFd); + success = false; + continue; + } + + char buffer[8192]; + ssize_t bytesRead; + bool copySuccess = true; + + while ((bytesRead = read(srcFd, buffer, sizeof(buffer))) > 0) + { + ssize_t bytesWritten = write(destFd, buffer, bytesRead); + if (bytesWritten != bytesRead) + { + Log("Failed to write to %s: %s", destPath, strerror(errno)); + copySuccess = false; + success = false; + break; + } + } + + if (bytesRead < 0) + { + Log("Failed to read from %s: %s", srcPath, strerror(errno)); + success = false; + } + + close(srcFd); + close(destFd); + + if (!copySuccess) + { + continue; + } + + // Preserve timestamps + struct timespec times[2]; + times[0] = statbuf.st_atim; + times[1] = statbuf.st_mtim; + if (utimensat(AT_FDCWD, destPath, times, 0) != 0) + { + Log("Warning: Failed to preserve timestamps for %s: %s", destPath, strerror(errno)); + } + } + } + + closedir(dir); + + if (success) + { + Log("Successfully copied directory %s to %s", src, dest); + } + + return success; +} + +/** + * @brief Write content to a file + * + * @param path Path to the file + * @param content Content to write + * @param append If true, append to file; if false, overwrite + * @return true if successful, false otherwise + */ +static bool writeFile(const char *path, const char *content, bool append = false) +{ + int flags = O_WRONLY | O_CREAT | O_CLOEXEC; + if (append) + { + flags |= O_APPEND; + } + else + { + flags |= O_TRUNC; + } + + int fd = open(path, flags, 0644); + if (fd < 0) + { + Log("Failed to open file %s for writing: %s", path, strerror(errno)); + return false; + } + + size_t contentLen = strlen(content); + ssize_t bytesWritten = write(fd, content, contentLen); + + if (bytesWritten < 0) + { + Log("Failed to write to file %s: %s", path, strerror(errno)); + close(fd); + return false; + } + + if ((size_t)bytesWritten != contentLen) + { + Log("Incomplete write to file %s: wrote %zd of %zu bytes", path, bytesWritten, contentLen); + close(fd); + return false; + } + + if (fsync(fd) != 0) + { + Log("Warning: Failed to sync file %s: %s", path, strerror(errno)); + } + + close(fd); + Log("Successfully wrote to file: %s", path); + return true; +} + /** * References: * * https://nick-black.com/dankwiki/index.php/The_Proc_Connector_and_Socket_Filters @@ -600,44 +953,114 @@ std::string ProcessMonitor::getSystemdService(pid_t pid) bool ProcessMonitor::setupMemPreload() { - if (!gCaptureMemData) { + if (!gCaptureMemData) + { return true; } - if (gMemPreloadLib.empty()) { + if (gMemPreloadLib.empty()) + { Log("Memory preload requested but no library path provided"); return false; } - Log("Preparing bind-mounted /etc for memory preload"); + Log("Preparing bind-mounted %s for memory preload", ETC_DIR); - if (!runShellCommand("/bin/rm -rf /media/apps/etc")) + char mountEtcPath[PATH_MAX]; + int ret = snprintf(mountEtcPath, sizeof(mountEtcPath), "%s%s", MOUNT_DIR, ETC_DIR); + Log("Mount etc path: %s", mountEtcPath); + if (ret < 0 || ret >= (int)sizeof(mountEtcPath)) { - Log("Failed to clear /media/apps/etc"); + Log("Mount path too long"); return false; } - if (!runShellCommand("/bin/mkdir -p /media/apps/etc")) + // Clear existing mount directory + if (!clearDirectory(mountEtcPath)) + { + Log("Failed to clear %s", mountEtcPath); + // Continue anyway as directory might not exist + } + + // Remove the directory itself if it exists + if (rmdir(mountEtcPath) != 0 && errno != ENOENT) + { + Log("Warning: Failed to remove %s: %s", mountEtcPath, strerror(errno)); + } + + // Create mount directory + if (!createDirectory(mountEtcPath)) { - Log("Failed to create /media/apps/etc"); + Log("Failed to create %s", mountEtcPath); return false; } + Log("Successfully created mount directory: %s", mountEtcPath); - if (!runShellCommand("/bin/cp -a /etc /media/apps/etc")) { - Log("Failed to copy /etc into /media/apps/etc"); + // Copy /etc to mount directory + if (!copyDirectory(ETC_DIR, mountEtcPath)) + { + Log("Failed to copy %s to %s", ETC_DIR, mountEtcPath); + clearDirectory(mountEtcPath); + rmdir(mountEtcPath); return false; } + Log("Successfully copied %s to %s", ETC_DIR, mountEtcPath); - if (!runShellCommand("/sbin/mount-copybind /media/apps/etc /etc")) { - Log("Failed to bind-mount /media/apps/etc onto /etc"); - runShellCommand("/bin/rm -rf /media/apps/etc"); + // Bind mount using mount-copybind + char mountCmd[PATH_MAX * 2 + 64]; + ret = snprintf(mountCmd, sizeof(mountCmd), "/sbin/mount-copybind %s %s", mountEtcPath, ETC_DIR); + if (ret < 0 || ret >= (int)sizeof(mountCmd)) + { + Log("Mount command too long"); + clearDirectory(mountEtcPath); + rmdir(mountEtcPath); return false; } - std::string cmd = "/bin/sh -c '/bin/echo " + gMemPreloadLib + " > /etc/ld.so.preload'"; - if (!runShellCommand(cmd)) { - Log("Failed to write preload library to /etc/ld.so.preload"); - runShellCommand("/bin/umount /etc"); - runShellCommand("/bin/rm -rf /media/apps/etc"); + Log("Running mount command: %s", mountCmd); + int rc = std::system(mountCmd); + if (rc != 0) + { + if (rc == -1) + { + Log("Failed to execute mount command: %s", strerror(errno)); + } + else + { + Log("Mount command returned non-zero status: %d", rc); + } + clearDirectory(mountEtcPath); + rmdir(mountEtcPath); + return false; + } + Log("Successfully bind-mounted %s onto %s", mountEtcPath, ETC_DIR); + + // Write preload library to /etc/ld.so.preload + char preloadPath[PATH_MAX]; + ret = snprintf(preloadPath, sizeof(preloadPath), "%s/ld.so.preload", ETC_DIR); + if (ret < 0 || ret >= (int)sizeof(preloadPath)) + { + Log("Preload path too long"); + // Cleanup: unmount before returning + if (int umountRc = std::system("/bin/umount /etc"); umountRc != 0) + { + Log("Failed to umount %s during cleanup: status=%d", ETC_DIR, umountRc); + } + clearDirectory(mountEtcPath); + rmdir(mountEtcPath); + return false; + } + + std::string preloadContent = gMemPreloadLib + "\n"; + if (!writeFile(preloadPath, preloadContent.c_str(), false)) + { + Log("Failed to write preload library to %s", preloadPath); + // Cleanup: unmount before returning + if (int umountRc = std::system("/bin/umount /etc"); umountRc != 0) + { + Log("Failed to umount %s during cleanup: status=%d", ETC_DIR, umountRc); + } + clearDirectory(mountEtcPath); + rmdir(mountEtcPath); return false; } @@ -653,47 +1076,69 @@ void ProcessMonitor::teardownMemPreload() return; } - Log("Tearing down bind-mounted /etc for memory preload"); + Log("Tearing down bind-mounted %s for memory preload", ETC_DIR); - if (!runShellCommand("/bin/umount /etc")) + // Unmount /etc + Log("Unmounting %s", ETC_DIR); + int umountRc = std::system("/bin/umount /etc"); + if (umountRc != 0) { - Log("Failed to unmount /etc; manual cleanup required"); + if (umountRc == -1) + { + Log("Failed to execute umount command: %s", strerror(errno)); + } + else + { + Log("Umount command returned non-zero status: %d", umountRc); + } + Log("Manual cleanup required for %s", ETC_DIR); + mMemPreloadActive = false; return; } + Log("Successfully unmounted %s", ETC_DIR); - if (!runShellCommand("/bin/rm -rf /media/apps/etc")) + // Clean up mount directory + char mountEtcPath[PATH_MAX]; + int ret = snprintf(mountEtcPath, sizeof(mountEtcPath), "%s/etc", MOUNT_DIR); + if (ret < 0 || ret >= (int)sizeof(mountEtcPath)) { - Log("Failed to remove /media/apps/etc; manual cleanup required"); + Log("Mount path too long"); + mMemPreloadActive = false; + return; } - if (!runShellCommand("/bin/sh -c '> /etc/ld.so.preload'")) + // Clear out the mount directory + if (!clearDirectory(mountEtcPath)) { - Log("Warning: failed to clear /etc/ld.so.preload"); + Log("Failed to clear %s; manual cleanup required", mountEtcPath); } - mMemPreloadActive = false; -} - -bool ProcessMonitor::runShellCommand(const std::string &command) const -{ - Log("Running command: %s", command.c_str()); - - int rc = std::system(command.c_str()); - if (rc == 0) + if (rmdir(mountEtcPath) != 0) { - Log("Command succeeded: %s", command.c_str()); - return true; + Log("Failed to remove %s: %s; manual cleanup required", mountEtcPath, strerror(errno)); + } + else + { + Log("Successfully removed %s", mountEtcPath); } - if (rc == -1) + // Clear /etc/ld.so.preload + char preloadPath[PATH_MAX]; + ret = snprintf(preloadPath, sizeof(preloadPath), "%s/ld.so.preload", ETC_DIR); + if (ret < 0 || ret >= (int)sizeof(preloadPath)) { - Log("Command failed to start: %s (errno=%d, %s)", command.c_str(), errno, strerror(errno)); + Log("Preload path too long"); } else { - Log("Command returned non-zero: %s (status=%d)", command.c_str(), rc); + if (!writeFile(preloadPath, "", false)) + { + Log("Warning: failed to clear %s", preloadPath); + } } - return false; + + mMemPreloadActive = false; + Log("Memory preload teardown complete"); } void ProcessMonitor::mergeExitHandlerData() diff --git a/ProcessMonitor.h b/ProcessMonitor.h index ef2696b..61435d0 100644 --- a/ProcessMonitor.h +++ b/ProcessMonitor.h @@ -41,7 +41,6 @@ class ProcessMonitor void mergeExitHandlerData(); - bool runShellCommand(const std::string &command) const; bool setupMemPreload(); void teardownMemPreload(); diff --git a/scripts/analyze_systemd_processes.py b/scripts/analyze_systemd_processes.py new file mode 100644 index 0000000..ad0a3e8 --- /dev/null +++ b/scripts/analyze_systemd_processes.py @@ -0,0 +1,459 @@ +#!/usr/bin/env python3 +""" +Analyze processes spawned by systemd services from results.js file. +Lists scripts and binaries with their spawn counts, memory usage, and parent services. +""" + +import json +import re +import argparse +from collections import defaultdict +from pathlib import Path + + +def load_results_js(filepath): + """Load and parse the results.js file.""" + with open(filepath, 'r') as f: + content = f.read() + + # Extract the JSON data from the JavaScript variable + # Format: let results = {...}; + match = re.search(r'let\s+results\s*=\s*({.*});', content, re.DOTALL) + if not match: + raise ValueError("Could not find results variable in file") + + json_str = match.group(1) + return json.loads(json_str) + + +def is_script(name): + """Check if a process name is a shell script.""" + return name.endswith('.sh') + + +def is_binary(name): + """Check if a process name is a binary (has full path but not .sh).""" + # Binary: starts with / and doesn't end with .sh + return name.startswith('/') and not name.endswith('.sh') + + +def count_spawned_by_script_or_binary(script_name, processes): + """ + Count all processes where the given script/binary appears in parent or grandparent. + This gives a more accurate count of what a script is responsible for spawning. + + Args: + script_name: The script or binary name to search for + processes: List of all process entries + + Returns: + tuple: (count, total_pss, total_rss, child_processes_list) + """ + spawned = [] + total_pss = 0 + total_rss = 0 + + for proc in processes: + parent = proc.get('parentCommandLine', '') + grandparent = proc.get('grandparentCommandLine', '') + + # Check if script appears in parent or grandparent command line + if script_name in parent or script_name in grandparent: + spawned.append(proc) + + # Add memory if available + pss, rss = get_memory_stats(proc) + total_pss += pss + total_rss += rss + + return len(spawned), total_pss, total_rss, spawned + + +def get_memory_stats(process): + """Extract PSS and RSS memory values from a process entry. + + Args: + process: Process dictionary with optional 'pss' and 'rss' fields + + Returns: + tuple: (pss, rss) values in KB, both default to 0 if not present + """ + pss = process.get('pss', 0) + rss = process.get('rss', 0) + return pss, rss + + +def normalize_service_name(service): + """Normalize service name to N/A if empty or unknown. + + Args: + service: Service name string + + Returns: + str: Normalized service name, or 'N/A' if invalid + """ + if not service or service in ('Unknown', 'None', ''): + return 'N/A' + return service + + +def aggregate_process_metrics(processes_list): + """Aggregate memory metrics from a list of process entries. + + Args: + processes_list: List of process dictionaries + + Returns: + tuple: (total_pss, total_rss, process_count) + """ + total_pss = 0 + total_rss = 0 + count = 0 + + for proc in processes_list: + pss, rss = get_memory_stats(proc) + total_pss += pss + total_rss += rss + count += 1 + + return total_pss, total_rss, count + + +def analyze_scripts(results): + """Analyze shell scripts and their spawned processes. + + This function handles two types of scripts: + 1. Process scripts: Short-lived individual executions found in processes array + 2. Group scripts: Long-running parent processes found in groups array + + For Process scripts, we calculate average memory from all executions. + For spawned processes, we count any process where the script appears in parent or grandparent. + """ + processes = results.get('processes', []) + groups = results.get('groups', []) + + script_data = defaultdict(lambda: { + 'spawn_count': 0, + 'total_pss': 0, + 'total_rss': 0, + 'pss_count': 0, # Track number of instances with PSS for averaging + 'rss_count': 0, # Track number of instances with RSS for averaging + 'process_count': 0, # Track total number of process instances + 'instance_count': 0, # Frequency count - how many times this script ran + 'services': set(), + 'instances': [], + 'types': set() + }) + + # First pass: Collect all script names (both from processes and groups) + all_scripts = set() + + # === Collect Process Scripts (individual short-lived executions) === + for proc in processes: + content = proc.get('content', '') + + if is_script(content): + all_scripts.add(content) + service = normalize_service_name(proc.get('systemdService', 'Unknown')) + + # Get memory stats for this process instance + pss, rss = get_memory_stats(proc) + + # Accumulate metrics + if pss > 0: + script_data[content]['total_pss'] += pss + script_data[content]['pss_count'] += 1 + if rss > 0: + script_data[content]['total_rss'] += rss + script_data[content]['rss_count'] += 1 + script_data[content]['process_count'] += 1 + script_data[content]['instance_count'] += 1 # Count each instance + script_data[content]['services'].add(service) + script_data[content]['types'].add('Process') + + # === Collect Group Scripts === + for group in groups: + group_name = group.get('content', '') or group.get('id', '') + if is_script(group_name): + all_scripts.add(group_name) + script_data[group_name]['types'].add('Group') + + # Second pass: For each script, count ALL processes spawned by it (parent or grandparent match) + for script_name in all_scripts: + spawn_count, spawn_pss, spawn_rss, spawned_procs = count_spawned_by_script_or_binary( + script_name, processes + ) + + # Add spawn count and spawned process memory + script_data[script_name]['spawn_count'] = spawn_count + + # For Group scripts, add the spawned memory to totals + # For Process scripts, keep their own memory separate from spawned + if 'Group' in script_data[script_name]['types']: + # Group scripts show total of all spawned processes + script_data[script_name]['total_pss'] += spawn_pss + script_data[script_name]['total_rss'] += spawn_rss + + # Collect services from spawned processes + for proc in spawned_procs: + service = normalize_service_name(proc.get('systemdService', 'Unknown')) + script_data[script_name]['services'].add(service) + + return script_data + + +def analyze_binaries(results): + """Analyze binaries and their spawned processes. + + This function handles two types of binaries: + 1. Process binaries: Short-lived individual executions found in processes array + 2. Group binaries: Long-running parent processes found in groups array + + For Process binaries, we calculate average memory from all executions. + For spawned processes, we count any process where the binary appears in parent or grandparent. + """ + processes = results.get('processes', []) + groups = results.get('groups', []) + + binary_data = defaultdict(lambda: { + 'spawn_count': 0, + 'total_pss': 0, + 'total_rss': 0, + 'pss_count': 0, # Track number of instances with PSS for averaging + 'rss_count': 0, # Track number of instances with RSS for averaging + 'process_count': 0, # Track total number of process instances + 'instance_count': 0, # Frequency count - how many times this binary ran + 'services': set(), + 'instances': [], + 'types': set() + }) + + # First pass: Collect all binary names (both from processes and groups) + all_binaries = set() + + # === Collect Process Binaries (individual short-lived executions) === + for proc in processes: + content = proc.get('content', '') + + if is_binary(content): + all_binaries.add(content) + service = normalize_service_name(proc.get('systemdService', 'Unknown')) + + # Get memory stats for this process instance + pss, rss = get_memory_stats(proc) + + # Accumulate metrics + if pss > 0: + binary_data[content]['total_pss'] += pss + binary_data[content]['pss_count'] += 1 + if rss > 0: + binary_data[content]['total_rss'] += rss + binary_data[content]['rss_count'] += 1 + binary_data[content]['process_count'] += 1 + binary_data[content]['instance_count'] += 1 # Count each instance + binary_data[content]['services'].add(service) + binary_data[content]['types'].add('Process') + + # === Collect Group Binaries === + for group in groups: + group_name = group.get('content', '') or group.get('id', '') + if is_binary(group_name): + all_binaries.add(group_name) + binary_data[group_name]['types'].add('Group') + + # Second pass: For each binary, count ALL processes spawned by it (parent or grandparent match) + for binary_name in all_binaries: + spawn_count, spawn_pss, spawn_rss, spawned_procs = count_spawned_by_script_or_binary( + binary_name, processes + ) + + # Add spawn count and spawned process memory + binary_data[binary_name]['spawn_count'] = spawn_count + + # For Group binaries, add the spawned memory to totals + # For Process binaries, keep their own memory separate from spawned + if 'Group' in binary_data[binary_name]['types']: + # Group binaries show total of all spawned processes + binary_data[binary_name]['total_pss'] += spawn_pss + binary_data[binary_name]['total_rss'] += spawn_rss + + # Collect services from spawned processes + for proc in spawned_procs: + service = normalize_service_name(proc.get('systemdService', 'Unknown')) + binary_data[binary_name]['services'].add(service) + + return binary_data + + +def format_memory_value(info, mem_type='pss'): + """Format memory values for display. + + For Process types: Calculate and show average per execution + For Group types: Show total aggregated memory + + Args: + info: Dictionary with memory data + mem_type: 'pss' or 'rss' + + Returns: + str: Formatted memory string with appropriate label + """ + types = info.get('types', set()) + total_mem = info.get(f'total_{mem_type}', 0) + mem_count_key = f'{mem_type}_count' + mem_count = info.get(mem_count_key, info.get('process_count', 0)) + + if total_mem == 0: + return "N/A" + + # For Group scripts, show total + if 'Group' in types and 'Process' not in types: + return f"{total_mem:,}" + + # For Process scripts, show average (only divide by instances that had this memory type) + if 'Process' in types and mem_count > 0: + avg_mem = total_mem / mem_count + return f"{avg_mem:,.0f} (avg)" + + # Mixed or unknown + if 'Group' in types and 'Process' in types: + # Group takes precedence for mixed types + return f"{total_mem:,}" + + return f"{total_mem:,}" + + +def print_table(data, title): + """Print formatted table with memory statistics. + + Displays PSS/RSS values differently based on type: + - Group: Total aggregated memory from all child processes + - Process: Average memory per execution + """ + if not data: + print(f"\nNo {title} found.\n") + return + + print(f"\n{'='*170}") + print(f"{title}") + print(f"{'='*170}") + + # Sort by spawn count (descending) + sorted_items = sorted(data.items(), key=lambda x: x[1]['spawn_count'], reverse=True) + + # Print header + header = f"{'Script/Binary Name':<50} | {'Type':<15} | {'Instances':<10} | {'Spawned':<10} | {'PSS (KB)':<15} | {'RSS (KB)':<15} | {'Systemd Service':<30}" + print(header) + print('-' * 170) + + # Print rows + for name, info in sorted_items: + spawn_count = info['spawn_count'] + instance_count = info.get('instance_count', 0) + services = ', '.join(sorted(info['services'])) + types = ', '.join(sorted(info.get('types', {'Unknown'}))) + + # Handle long names + display_name = name if len(name) <= 50 else name[:47] + '...' + + # Format PSS/RSS with appropriate values (avg for Process, total for Group) + pss_str = format_memory_value(info, 'pss') + rss_str = format_memory_value(info, 'rss') + + # Handle long service names + if len(services) > 30: + services = services[:27] + '...' + + print(f"{display_name:<50} | {types:<15} | {instance_count:<10} | {spawn_count:<10} | {pss_str:<15} | {rss_str:<15} | {services:<30}") + + print(f"{'='*170}\n") + print(f"Total entries: {len(sorted_items)}") + print() + + +def print_markdown_table(data, title): + """Print table in Markdown format with memory statistics. + + Displays PSS/RSS values differently based on type: + - Group: Total aggregated memory from all child processes + - Process: Average memory per execution (marked with 'avg') + """ + if not data: + print(f"\n## {title}\n\nNo data found.\n") + return + + print(f"\n## {title}\n") + + # Sort by spawn count (descending) + sorted_items = sorted(data.items(), key=lambda x: x[1]['spawn_count'], reverse=True) + + # Print header + print(f"| {'Script/Binary Name':<45} | {'Type':<15} | {'Instances':<10} | {'Spawned':<16} | {'PSS (KB)':<15} | {'RSS (KB)':<15} | {'Systemd Service':<28} |") + print(f"|{'-'*47}|{'-'*17}|{'-'*12}|{'-'*18}|{'-'*17}|{'-'*17}|{'-'*30}|") + + # Print rows + for name, info in sorted_items: + spawn_count = info['spawn_count'] + instance_count = info.get('instance_count', 0) + services = ', '.join(sorted(info['services'])) + types = ', '.join(sorted(info.get('types', {'Unknown'}))) + + # Format PSS/RSS with appropriate values (avg for Process, total for Group) + pss_str = format_memory_value(info, 'pss') + rss_str = format_memory_value(info, 'rss') + + print(f"| {name:<45} | {types:<15} | {instance_count:<10} | {spawn_count:<16} | {pss_str:<15} | {rss_str:<15} | {services:<28} |") + + print(f"\n**Total entries:** {len(sorted_items)}\n") + + +def main(): + parser = argparse.ArgumentParser( + description='Analyze processes spawned by systemd services', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + %(prog)s --scripts 2hr-results.js + %(prog)s --binaries 2hr-results.js + %(prog)s --all 2hr-results.js + %(prog)s --scripts --markdown 2hr-results.js + """ + ) + + parser.add_argument('file', help='Path to results.js file') + parser.add_argument('--scripts', action='store_true', help='Show script analysis') + parser.add_argument('--binaries', action='store_true', help='Show binary analysis') + parser.add_argument('--all', action='store_true', help='Show both scripts and binaries') + parser.add_argument('--markdown', action='store_true', help='Output in Markdown format') + + args = parser.parse_args() + + # Default to --all if nothing specified + if not (args.scripts or args.binaries or args.all): + args.all = True + + # Load data + try: + results = load_results_js(args.file) + except Exception as e: + print(f"Error loading file: {e}") + return 1 + + print_func = print_markdown_table if args.markdown else print_table + + # Analyze and print scripts + if args.scripts or args.all: + script_data = analyze_scripts(results) + print_func(script_data, "Shell Scripts Analysis") + + # Analyze and print binaries + if args.binaries or args.all: + binary_data = analyze_binaries(results) + print_func(binary_data, "Binaries Analysis") + + return 0 + + +if __name__ == '__main__': + exit(main()) + diff --git a/scripts/detailed_results_parser.py b/scripts/detailed_results_parser.py new file mode 100644 index 0000000..3641524 --- /dev/null +++ b/scripts/detailed_results_parser.py @@ -0,0 +1,383 @@ +#!/usr/bin/env python3 +import json +import argparse +import os.path as path +import csv +from datetime import datetime +from collections import defaultdict + + +def parse_results_file(filename): + """Parse the results.js file and return JSON data.""" + with open(filename) as results_file: + results = results_file.read() + results = results.replace('let results = ', '') + results = results.replace(';', '') + return json.loads(results) + + +def jiffies_to_ms(jiffies, clock_ticks_per_sec=100): + """Convert jiffies to milliseconds.""" + return round((jiffies * 1000) / clock_ticks_per_sec) + + +def format_timestamp(timestamp_ms): + """Convert milliseconds timestamp to human-readable format.""" + return datetime.fromtimestamp(timestamp_ms / 1000).strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] + + +def calculate_frequencies(results_json): + """Calculate frequency statistics for processes.""" + total_duration_ms = results_json['end'] - results_json['start'] + total_process_count = len(results_json['processes']) + + # Group processes by name + process_groups = defaultdict(list) + for proc in results_json['processes']: + process_name = proc['content'] + process_groups[process_name].append(proc) + + # Calculate statistics for each process instance + process_stats = [] + + for proc in results_json['processes']: + process_name = proc['content'] + duration_ms = proc.get('end', proc['start']) - proc['start'] + + # Count-based frequency (this instance as part of all processes) + count_freq_all = (1 / total_process_count) * 100 if total_process_count > 0 else 0 + + # Count-based frequency (how many times this process name appears) + same_name_count = len(process_groups[process_name]) + count_freq_name = (same_name_count / total_process_count) * 100 if total_process_count > 0 else 0 + + # Time-based frequency (this instance duration vs total capture time) + time_freq_instance = (duration_ms / total_duration_ms) * 100 if total_duration_ms > 0 else 0 + + # Time-based frequency (all instances of this process name vs total capture time) + total_name_duration = sum(p.get('end', p['start']) - p['start'] for p in process_groups[process_name]) + time_freq_name = (total_name_duration / total_duration_ms) * 100 if total_duration_ms > 0 else 0 + + stats = { + 'process': proc, + 'duration_ms': duration_ms, + 'count_freq_all': count_freq_all, + 'count_freq_name': count_freq_name, + 'time_freq_instance': time_freq_instance, + 'time_freq_name': time_freq_name, + 'same_name_count': same_name_count, + 'same_name_total_duration': total_name_duration + } + process_stats.append(stats) + + return process_stats, total_duration_ms, total_process_count + + +def print_process_details(stats_list, sort_by='start_time'): + """Print detailed process information to console.""" + # Sort based on criteria + if sort_by == 'start_time': + stats_list = sorted(stats_list, key=lambda x: x['process']['start']) + elif sort_by == 'duration': + stats_list = sorted(stats_list, key=lambda x: x['duration_ms'], reverse=True) + elif sort_by == 'name': + stats_list = sorted(stats_list, key=lambda x: x['process']['content']) + elif sort_by == 'pss': + stats_list = sorted(stats_list, key=lambda x: x['process'].get('pss', 0), reverse=True) + elif sort_by == 'rss': + stats_list = sorted(stats_list, key=lambda x: x['process'].get('rss', 0), reverse=True) + + print("\n" + "="*100) + print("DETAILED PROCESS LISTING") + print("="*100) + + for idx, stats in enumerate(stats_list, 1): + proc = stats['process'] + + print(f"\n[{idx}/{len(stats_list)}] Process Instance") + print("-" * 100) + + print(f"PID: {proc.get('pid', 'N/A')}") + print(f"Name: {proc.get('content', 'N/A')}") + print(f"Command Line: {proc.get('fullCommandLine', 'N/A')}") + print(f"Parent Command Line: {proc.get('parentCommandLine', 'N/A')}") + print(f"Grandparent Command Line: {proc.get('grandparentCommandLine', 'N/A')}") + + # Time information + start_time = format_timestamp(proc['start']) + end_time = format_timestamp(proc.get('end', proc['start'])) + print(f"Start Time: {start_time} ({proc['start']} ms)") + print(f"End Time: {end_time} ({proc.get('end', proc['start'])} ms)") + print(f"Duration: {stats['duration_ms']} ms") + + print(f"Exit Code: {proc.get('exitCode', 'N/A')}") + print(f"Systemd Service: {proc.get('systemdService', 'N/A')}") + + # Memory information + pss = proc.get('pss', None) + swap_pss = proc.get('swapPss', None) + rss = proc.get('rss', None) + + print(f"PSS (KB): {pss if pss is not None else 'N/A'}") + print(f"SwapPSS (KB): {swap_pss if swap_pss is not None else 'N/A'}") + print(f"RSS (KB): {rss if rss is not None else 'N/A'}") + + # CPU time + if 'utime' in proc and 'stime' in proc: + utime_ms = jiffies_to_ms(proc['utime']) + stime_ms = jiffies_to_ms(proc['stime']) + total_cpu_ms = utime_ms + stime_ms + print(f"CPU Time (ms): {total_cpu_ms} ms (stime: {stime_ms} ms, utime: {utime_ms} ms)") + else: + print(f"CPU Time (ms): N/A") + + # Frequency information + print(f"\nFrequency Statistics:") + print(f" Time-based (this instance): {stats['time_freq_instance']:.4f}%") + print(f" Time-based (all '{proc['content']}' instances): {stats['time_freq_name']:.4f}% (cumulative duration: {stats['same_name_total_duration']} ms)") + print(f" Count-based (occurrences of '{proc['content']}'): {stats['same_name_count']} times ({stats['count_freq_name']:.4f}% of all processes)") + print(f" Count-based (this instance): {stats['count_freq_all']:.4f}% (1 out of all processes)") + + +def print_summary_statistics(stats_list, total_duration_ms, total_process_count): + """Print summary statistics grouped by process name.""" + # Group by process name + summary = defaultdict(lambda: { + 'count': 0, + 'total_duration_ms': 0, + 'pss_values': [], + 'rss_values': [], + 'swap_pss_values': [], + 'cpu_time_values': [], + 'pids': [], + 'command_lines': set(), + 'parents': set(), + 'services': set() + }) + + for stats in stats_list: + proc = stats['process'] + name = proc['content'] + + summary[name]['count'] += 1 + summary[name]['total_duration_ms'] += stats['duration_ms'] + summary[name]['pids'].append(proc.get('pid', 'N/A')) + + if 'fullCommandLine' in proc: + summary[name]['command_lines'].add(proc['fullCommandLine']) + if 'parentCommandLine' in proc: + summary[name]['parents'].add(proc['parentCommandLine']) + if 'systemdService' in proc: + summary[name]['services'].add(proc['systemdService']) + + if 'pss' in proc: + summary[name]['pss_values'].append(proc['pss']) + if 'rss' in proc: + summary[name]['rss_values'].append(proc['rss']) + if 'swapPss' in proc: + summary[name]['swap_pss_values'].append(proc['swapPss']) + + if 'utime' in proc and 'stime' in proc: + cpu_ms = jiffies_to_ms(proc['utime'] + proc['stime']) + summary[name]['cpu_time_values'].append(cpu_ms) + + # Sort by count (most frequent first) + sorted_summary = sorted(summary.items(), key=lambda x: x[1]['count'], reverse=True) + + print("\n" + "="*100) + print("SUMMARY STATISTICS (Grouped by Process Name)") + print("="*100) + + for name, data in sorted_summary: + print(f"\n{'='*100}") + print(f"Process Name: {name}") + print(f"{'='*100}") + + # Occurrence statistics + print(f"\nOccurrence Statistics:") + print(f" Total Occurrences: {data['count']}") + print(f" Frequency (count-based): {(data['count'] / total_process_count * 100):.4f}% of all processes") + print(f" Frequency (time-based): {(data['total_duration_ms'] / total_duration_ms * 100):.4f}% of capture time") + print(f" Cumulative Duration: {data['total_duration_ms']} ms") + print(f" Average Duration per Instance: {data['total_duration_ms'] / data['count']:.2f} ms") + + # PIDs + print(f"\nPIDs: {', '.join(map(str, data['pids']))}") + + # Command lines + if data['command_lines']: + print(f"\nCommand Line(s):") + for cmd in data['command_lines']: + print(f" - {cmd}") + + # Parent processes + if data['parents']: + print(f"\nParent Process(es):") + for parent in data['parents']: + print(f" - {parent}") + + # Services + if data['services']: + print(f"\nSystemd Service(s): {', '.join(data['services'])}") + + # Memory statistics + if data['pss_values']: + avg_pss = sum(data['pss_values']) / len(data['pss_values']) + min_pss = min(data['pss_values']) + max_pss = max(data['pss_values']) + print(f"\nPSS (KB) - Avg: {avg_pss:.2f}, Min: {min_pss}, Max: {max_pss}") + + if data['rss_values']: + avg_rss = sum(data['rss_values']) / len(data['rss_values']) + min_rss = min(data['rss_values']) + max_rss = max(data['rss_values']) + print(f"RSS (KB) - Avg: {avg_rss:.2f}, Min: {min_rss}, Max: {max_rss}") + + if data['swap_pss_values']: + avg_swap = sum(data['swap_pss_values']) / len(data['swap_pss_values']) + min_swap = min(data['swap_pss_values']) + max_swap = max(data['swap_pss_values']) + print(f"SwapPSS (KB) - Avg: {avg_swap:.2f}, Min: {min_swap}, Max: {max_swap}") + + if data['cpu_time_values']: + avg_cpu = sum(data['cpu_time_values']) / len(data['cpu_time_values']) + total_cpu = sum(data['cpu_time_values']) + min_cpu = min(data['cpu_time_values']) + max_cpu = max(data['cpu_time_values']) + print(f"CPU Time (ms) - Total: {total_cpu}, Avg: {avg_cpu:.2f}, Min: {min_cpu}, Max: {max_cpu}") + + +def export_to_csv(stats_list, output_filename): + """Export detailed process information to CSV.""" + fieldnames = [ + 'PID', 'Name', 'Command_Line', 'Parent_Command_Line', 'Grandparent_Command_Line', + 'Start_Time_Readable', 'Start_Time_Ms', 'End_Time_Readable', 'End_Time_Ms', + 'Duration_Ms', 'Exit_Code', 'Systemd_Service', + 'PSS_KB', 'SwapPSS_KB', 'RSS_KB', 'CPU_Time_Ms', 'CPU_Stime_Ms', 'CPU_Utime_Ms', + 'Freq_Time_Instance_Pct', 'Freq_Time_AllInstances_Pct', 'Freq_Count_SameName', + 'Freq_Count_Pct', 'Same_Name_Total_Duration_Ms' + ] + + with open(output_filename, 'w', newline='', encoding='utf-8') as csvfile: + writer = csv.DictWriter(csvfile, fieldnames=fieldnames) + writer.writeheader() + + for stats in stats_list: + proc = stats['process'] + + # CPU time calculation + cpu_time_ms = 'N/A' + cpu_stime_ms = 'N/A' + cpu_utime_ms = 'N/A' + if 'utime' in proc and 'stime' in proc: + cpu_utime_ms = jiffies_to_ms(proc['utime']) + cpu_stime_ms = jiffies_to_ms(proc['stime']) + cpu_time_ms = cpu_utime_ms + cpu_stime_ms + + row = { + 'PID': proc.get('pid', 'N/A'), + 'Name': proc.get('content', 'N/A'), + 'Command_Line': proc.get('fullCommandLine', 'N/A'), + 'Parent_Command_Line': proc.get('parentCommandLine', 'N/A'), + 'Grandparent_Command_Line': proc.get('grandparentCommandLine', 'N/A'), + 'Start_Time_Readable': format_timestamp(proc['start']), + 'Start_Time_Ms': proc['start'], + 'End_Time_Readable': format_timestamp(proc.get('end', proc['start'])), + 'End_Time_Ms': proc.get('end', proc['start']), + 'Duration_Ms': stats['duration_ms'], + 'Exit_Code': proc.get('exitCode', 'N/A'), + 'Systemd_Service': proc.get('systemdService', 'N/A'), + 'PSS_KB': proc.get('pss', 'N/A'), + 'SwapPSS_KB': proc.get('swapPss', 'N/A'), + 'RSS_KB': proc.get('rss', 'N/A'), + 'CPU_Time_Ms': cpu_time_ms, + 'CPU_Stime_Ms': cpu_stime_ms, + 'CPU_Utime_Ms': cpu_utime_ms, + 'Freq_Time_Instance_Pct': f"{stats['time_freq_instance']:.4f}", + 'Freq_Time_AllInstances_Pct': f"{stats['time_freq_name']:.4f}", + 'Freq_Count_SameName': stats['same_name_count'], + 'Freq_Count_Pct': f"{stats['count_freq_name']:.4f}", + 'Same_Name_Total_Duration_Ms': stats['same_name_total_duration'] + } + writer.writerow(row) + + print(f"\n✓ CSV exported to: {output_filename}") + + +def main(): + parser = argparse.ArgumentParser( + prog='Detailed ProcessMonitor results parser', + description='Detailed parser for ProcessMonitor results with frequency and memory statistics', + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=""" +Examples: + %(prog)s results.js # Console output sorted by start time + %(prog)s results.js --csv output.csv # Export to CSV + %(prog)s results.js --summary # Show summary statistics + %(prog)s results.js --sort-by duration # Sort by duration + %(prog)s results.js --sort-by pss --csv out.csv # Sort by PSS and export + """ + ) + + parser.add_argument('filename', help="Path to the results.js file generated by ProcessMonitor") + parser.add_argument('--csv', metavar='OUTPUT', help="Export detailed results to CSV file") + parser.add_argument('--summary', action='store_true', help="Show summary statistics grouped by process name") + parser.add_argument('--sort-by', choices=['start_time', 'duration', 'name', 'pss', 'rss'], + default='start_time', help="Sort output by field (default: start_time)") + parser.add_argument('--no-details', action='store_true', + help="Skip detailed process listing (useful with --summary or --csv only)") + + args = parser.parse_args() + + if not path.isfile(args.filename): + print(f"Error: Cannot find file {args.filename}") + return 1 + + # Parse results + results_json = parse_results_file(args.filename) + stats_list, total_duration_ms, total_process_count = calculate_frequencies(results_json) + + # Print header information + print("\n" + "="*100) + print("PROCESS MONITOR RESULTS ANALYSIS") + print("="*100) + print(f"Capture Start: {format_timestamp(results_json['start'])} ({results_json['start']} ms)") + print(f"Capture End: {format_timestamp(results_json['end'])} ({results_json['end']} ms)") + print(f"Total Capture Duration: {total_duration_ms} ms ({total_duration_ms / 1000:.2f} seconds)") + print(f"Total Process Instances: {total_process_count}") + print(f"Unique Process Names: {len(set(p['content'] for p in results_json['processes']))}") + + # Sort stats for display + if args.sort_by == 'start_time': + stats_list = sorted(stats_list, key=lambda x: x['process']['start']) + elif args.sort_by == 'duration': + stats_list = sorted(stats_list, key=lambda x: x['duration_ms'], reverse=True) + elif args.sort_by == 'name': + stats_list = sorted(stats_list, key=lambda x: x['process']['content']) + elif args.sort_by == 'pss': + stats_list = sorted(stats_list, key=lambda x: x['process'].get('pss', 0), reverse=True) + elif args.sort_by == 'rss': + stats_list = sorted(stats_list, key=lambda x: x['process'].get('rss', 0), reverse=True) + + # Print detailed listing unless --no-details is specified + if not args.no_details: + print_process_details(stats_list, args.sort_by) + + # Print summary if requested + if args.summary: + print_summary_statistics(stats_list, total_duration_ms, total_process_count) + + # Export to CSV if requested + if args.csv: + export_to_csv(stats_list, args.csv) + + print("\n" + "="*100) + print("Analysis complete!") + print("="*100 + "\n") + + return 0 + + +if __name__ == "__main__": + exit(main()) + diff --git a/scripts/results_parser.py b/scripts/results_parser.py new file mode 100644 index 0000000..7ad34c7 --- /dev/null +++ b/scripts/results_parser.py @@ -0,0 +1,130 @@ +import json +import argparse +import os.path as path + + +def parse(filename): + with open(filename) as results_file: + results = results_file.read() + results = results.replace('let results = ', '') + results = results.replace(';', '') + + results_json = json.loads(results) + + stats = results_json['stats'] + + print("") + print("Processes per group") + print("-----------------------") + + groups = [] + + for group in results_json['groups']: + processes_in_group = results_json['processes'] + tmp = [x for x in processes_in_group if x['group'] == group['id']] + + unique_child_procs = {} + for proc in tmp: + name = proc['content'] + + if unique_child_procs.get(name): + unique_child_procs[name] += 1 + else: + unique_child_procs[name] = 1 + + g = {} + g['name'] = group['content'] + g['frequency'] = len(tmp) + g['unique_children'] = dict(sorted(unique_child_procs.items(), key=lambda item: item[1], reverse=True)) + + groups.append(g) + + for group in sorted(groups, key=lambda k: k['frequency'], reverse=True): + print(f"{group['name']}: {group['frequency']}") + for child in group['unique_children']: + print(f"\t|- {child}: {group['unique_children'][child]} ({round(group['unique_children'][child] / group['frequency'] * 100, 2)}%)") + + + print("Top systemd services") + print("-----------------------") + for service in sorted(stats['services'], key=lambda k: k['frequency'], reverse=True): + print(f"{service['serviceName']}: {service['frequency']}") + + print("") + print("Top unique processes") + print("-----------------------") + for process in sorted(stats['processes'], key=lambda k: k['frequency'], reverse=True): + print(f"{process['process']}: {process['frequency']}") + + # Check if any process has memory/CPU data + processes_with_mem_data = [p for p in results_json['processes'] + if 'pss' in p or 'rss' in p or 'utime' in p or 'stime' in p] + + if processes_with_mem_data: + print("") + print("Process Memory & CPU Statistics") + print("-----------------------") + + # Group by process name + process_mem_stats = {} + for proc in processes_with_mem_data: + proc_name = proc.get('content', 'Unknown') + if proc_name not in process_mem_stats: + process_mem_stats[proc_name] = [] + + # Convert jiffies to milliseconds (assuming 100 Hz clock, 1 jiffy = 10 ms) + # Most Linux systems use 100 Hz, but can be 1000 Hz on some systems + # Using 100 Hz as default: 1 jiffy = 10 ms + CLOCK_TICKS_PER_SEC = 100 + utime_ms = (proc.get('utime', 0) * 1000) // CLOCK_TICKS_PER_SEC if 'utime' in proc else None + stime_ms = (proc.get('stime', 0) * 1000) // CLOCK_TICKS_PER_SEC if 'stime' in proc else None + + stat_entry = { + 'pid': proc.get('pid', 'N/A'), + 'pss': proc.get('pss'), + 'swapPss': proc.get('swapPss'), + 'rss': proc.get('rss'), + 'utime_ms': utime_ms, + 'stime_ms': stime_ms + } + process_mem_stats[proc_name].append(stat_entry) + + # Sort by process name, then by PID + for proc_name in sorted(process_mem_stats.keys()): + entries = sorted(process_mem_stats[proc_name], key=lambda x: x['pid']) + print(f"Process Name: {proc_name}") + + for entry in entries: + stats_parts = [] + stats_parts.append(f"PID: {entry['pid']}") + + if entry['pss'] is not None: + stats_parts.append(f"PSS: {entry['pss']} KB") + if entry['swapPss'] is not None: + stats_parts.append(f"SwapPSS: {entry['swapPss']} KB") + if entry['rss'] is not None: + stats_parts.append(f"RSS: {entry['rss']} KB") + if entry['utime_ms'] is not None: + stats_parts.append(f"User CPU: {entry['utime_ms']} ms") + if entry['stime_ms'] is not None: + stats_parts.append(f"System CPU: {entry['stime_ms']} ms") + + print(f" - {' | '.join(stats_parts)}") + print("") + + +def main(): + parser = argparse.ArgumentParser(prog='ProcessMonitor results parser', + description='Tool to quickly parse the results from ProcessMonitor without needing to load the timeline') + parser.add_argument('filename', help="Path to the results file generated by ProcessMonitor") + args = parser.parse_args() + + if not path.isfile(args.filename): + print(f"Cannot find file {args.filename}") + return + + parse(args.filename) + + +if __name__ == "__main__": + main() From 763d753f32be3ad30c95b525ce91fc04908f8cd9 Mon Sep 17 00:00:00 2001 From: Gomathi Shankar Date: Mon, 1 Dec 2025 12:12:15 +0530 Subject: [PATCH 09/11] Delete pss_comparison.png --- pss_comparison.png | Bin 203211 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 pss_comparison.png diff --git a/pss_comparison.png b/pss_comparison.png deleted file mode 100644 index b8c6ec949ba4629d167b21de53a9bd242e7d7c54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203211 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
-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 z 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 E0LE#{y#N3J From 4c71c10db10282546244ccf32e57c382914858fe Mon Sep 17 00:00:00 2001 From: Gomathi Shankar Date: Mon, 1 Dec 2025 12:12:43 +0530 Subject: [PATCH 10/11] Delete results_parser.py --- results_parser.py | 130 ---------------------------------------------- 1 file changed, 130 deletions(-) delete mode 100644 results_parser.py diff --git a/results_parser.py b/results_parser.py deleted file mode 100644 index 7ad34c7..0000000 --- a/results_parser.py +++ /dev/null @@ -1,130 +0,0 @@ -import json -import argparse -import os.path as path - - -def parse(filename): - with open(filename) as results_file: - results = results_file.read() - results = results.replace('let results = ', '') - results = results.replace(';', '') - - results_json = json.loads(results) - - stats = results_json['stats'] - - print("") - print("Processes per group") - print("-----------------------") - - groups = [] - - for group in results_json['groups']: - processes_in_group = results_json['processes'] - tmp = [x for x in processes_in_group if x['group'] == group['id']] - - unique_child_procs = {} - for proc in tmp: - name = proc['content'] - - if unique_child_procs.get(name): - unique_child_procs[name] += 1 - else: - unique_child_procs[name] = 1 - - g = {} - g['name'] = group['content'] - g['frequency'] = len(tmp) - g['unique_children'] = dict(sorted(unique_child_procs.items(), key=lambda item: item[1], reverse=True)) - - groups.append(g) - - for group in sorted(groups, key=lambda k: k['frequency'], reverse=True): - print(f"{group['name']}: {group['frequency']}") - for child in group['unique_children']: - print(f"\t|- {child}: {group['unique_children'][child]} ({round(group['unique_children'][child] / group['frequency'] * 100, 2)}%)") - - - print("Top systemd services") - print("-----------------------") - for service in sorted(stats['services'], key=lambda k: k['frequency'], reverse=True): - print(f"{service['serviceName']}: {service['frequency']}") - - print("") - print("Top unique processes") - print("-----------------------") - for process in sorted(stats['processes'], key=lambda k: k['frequency'], reverse=True): - print(f"{process['process']}: {process['frequency']}") - - # Check if any process has memory/CPU data - processes_with_mem_data = [p for p in results_json['processes'] - if 'pss' in p or 'rss' in p or 'utime' in p or 'stime' in p] - - if processes_with_mem_data: - print("") - print("Process Memory & CPU Statistics") - print("-----------------------") - - # Group by process name - process_mem_stats = {} - for proc in processes_with_mem_data: - proc_name = proc.get('content', 'Unknown') - if proc_name not in process_mem_stats: - process_mem_stats[proc_name] = [] - - # Convert jiffies to milliseconds (assuming 100 Hz clock, 1 jiffy = 10 ms) - # Most Linux systems use 100 Hz, but can be 1000 Hz on some systems - # Using 100 Hz as default: 1 jiffy = 10 ms - CLOCK_TICKS_PER_SEC = 100 - utime_ms = (proc.get('utime', 0) * 1000) // CLOCK_TICKS_PER_SEC if 'utime' in proc else None - stime_ms = (proc.get('stime', 0) * 1000) // CLOCK_TICKS_PER_SEC if 'stime' in proc else None - - stat_entry = { - 'pid': proc.get('pid', 'N/A'), - 'pss': proc.get('pss'), - 'swapPss': proc.get('swapPss'), - 'rss': proc.get('rss'), - 'utime_ms': utime_ms, - 'stime_ms': stime_ms - } - process_mem_stats[proc_name].append(stat_entry) - - # Sort by process name, then by PID - for proc_name in sorted(process_mem_stats.keys()): - entries = sorted(process_mem_stats[proc_name], key=lambda x: x['pid']) - print(f"Process Name: {proc_name}") - - for entry in entries: - stats_parts = [] - stats_parts.append(f"PID: {entry['pid']}") - - if entry['pss'] is not None: - stats_parts.append(f"PSS: {entry['pss']} KB") - if entry['swapPss'] is not None: - stats_parts.append(f"SwapPSS: {entry['swapPss']} KB") - if entry['rss'] is not None: - stats_parts.append(f"RSS: {entry['rss']} KB") - if entry['utime_ms'] is not None: - stats_parts.append(f"User CPU: {entry['utime_ms']} ms") - if entry['stime_ms'] is not None: - stats_parts.append(f"System CPU: {entry['stime_ms']} ms") - - print(f" - {' | '.join(stats_parts)}") - print("") - - -def main(): - parser = argparse.ArgumentParser(prog='ProcessMonitor results parser', - description='Tool to quickly parse the results from ProcessMonitor without needing to load the timeline') - parser.add_argument('filename', help="Path to the results file generated by ProcessMonitor") - args = parser.parse_args() - - if not path.isfile(args.filename): - print(f"Cannot find file {args.filename}") - return - - parse(args.filename) - - -if __name__ == "__main__": - main() From 4aed1fe80a30523be71ffe7a0c835c87502c0014 Mon Sep 17 00:00:00 2001 From: Gomathi Shankar Date: Mon, 1 Dec 2025 12:13:31 +0530 Subject: [PATCH 11/11] Add GitHub Actions workflow for native build --- .github/workflows/native_full_build.yml | 46 +++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .github/workflows/native_full_build.yml diff --git a/.github/workflows/native_full_build.yml b/.github/workflows/native_full_build.yml new file mode 100644 index 0000000..563d4d9 --- /dev/null +++ b/.github/workflows/native_full_build.yml @@ -0,0 +1,46 @@ +name: Build ProcessMonitor in Native Environment + +on: + pull_request: + branches: [ main ] + paths: ['**/*.c', '**/*.cpp', '**/*.cc', '**/*.cxx', '**/*.h', '**/*.hpp', '**/*.sh', '**/CMakeLists.txt'] + +jobs: + build-processmonitor-on-pr: + name: Build ProcessMonitor component + runs-on: ubuntu-latest + container: + image: ghcr.io/rdkcentral/docker-device-mgt-service-test/native-platform:1.6.9 + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install Dependencies + run: | + apt-get update + apt-get install -y cmake build-essential + + - name: Create build directory + run: | + mkdir -p build + cd build + + - name: Configure with CMake + run: | + cd build + cmake -DCMAKE_BUILD_TYPE=Release ../ + + - name: Build the component + run: | + cd build + make -j$(nproc) + + - name: Verify build output + run: | + ls -la build/ProcessMonitor || echo "ProcessMonitor binary not found" + ls -la build/libexithandler.so* || echo "exitHandler library not found" + file build/ProcessMonitor || echo "Cannot check ProcessMonitor file type" + file build/libexithandler.so* || echo "Cannot check exitHandler file type" + echo "Build verification complete" +