From 79d8df892375a01f208e25e0159f3d3e47fc2f4f Mon Sep 17 00:00:00 2001 From: Rob Watson Date: Sun, 9 Feb 2025 17:39:53 +0100 Subject: [PATCH] feat: restart containers --- .github/workflows/ci-build.yml | 2 +- .gitignore | 1 + container/container.go | 100 +++++++++++++++++++++++++++++--- container/integration_test.go | 64 +++++++++++++++++++- container/stats.go | 63 +++++++++++++------- container/stats_test.go | 55 ++++++++++++++++++ container/testdata/stats2.json | 46 +++++++++++++++ domain/types.go | 14 ++++- multiplexer/integration_test.go | 14 ++--- multiplexer/multiplexer.go | 25 +++++++- terminal/actor.go | 15 ++++- testhelpers/channel.go | 13 ++++- 12 files changed, 366 insertions(+), 46 deletions(-) create mode 100644 container/testdata/stats2.json diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index a847298..ff0d335 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -20,7 +20,7 @@ jobs: echo "$HOME/.local/share/mise/bin" >> $GITHUB_PATH echo "$HOME/.local/share/mise/shims" >> $GITHUB_PATH - name: install nscd - run: sudo apt-get install nscd + run: sudo apt-get -y update && sudo apt-get -y --no-install-recommends install nscd - name: setup ffmpeg uses: FedericoCarboni/setup-ffmpeg@v3 with: diff --git a/.gitignore b/.gitignore index cf3f485..8b26b45 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /config.yml /termstream.log +/mediamtx.yml diff --git a/container/container.go b/container/container.go index 53196a5..454bb59 100644 --- a/container/container.go +++ b/container/container.go @@ -34,6 +34,7 @@ type DockerClient interface { io.Closer ContainerCreate(context.Context, *container.Config, *container.HostConfig, *network.NetworkingConfig, *ocispec.Platform, string) (container.CreateResponse, error) + ContainerInspect(context.Context, string) (types.ContainerJSON, error) ContainerList(context.Context, container.ListOptions) ([]types.Container, error) ContainerRemove(context.Context, string, container.RemoveOptions) error ContainerStart(context.Context, string, container.StartOptions) error @@ -86,6 +87,7 @@ type stats struct { cpuPercent float64 memoryUsageBytes uint64 rxRate, txRate int + rxSince time.Time } // getStats returns a channel that will receive container stats. The channel is @@ -204,9 +206,55 @@ func (a *Client) runContainerLoop( stateC chan<- domain.Container, errC chan<- error, ) { + type containerWaitResponse struct { + container.WaitResponse + restarting bool + } + + containerRespC := make(chan containerWaitResponse) + containerErrC := make(chan error) statsC := a.getStats(containerID, networkCountConfig) eventsC := a.getEvents(containerID) - containerRespC, containerErrC := a.apiClient.ContainerWait(ctx, containerID, container.WaitConditionNotRunning) + + // ContainerWait only sends a result for the first non-running state, so we + // need to poll it repeatedly. + // + // The goroutine exits when a value is received on the error channel, or when + // the container exits and is not restarting, or when the context is cancelled. + go func() { + for { + respC, errC := a.apiClient.ContainerWait(ctx, containerID, container.WaitConditionNextExit) + select { + case resp := <-respC: + // Check if the container is restarting. If it is not then we don't + // want to wait for it again and can return early. + // + // Low priority: is the API call necessary? + ctr, err := a.apiClient.ContainerInspect(ctx, containerID) + if err != nil { + // TODO: error handling? + a.logger.Error("Error inspecting container", "err", err, "id", shortID(containerID)) + containerErrC <- err + return + } + + // Race condition: the container may have already restarted. + restarting := ctr.State.Status == "restarting" || ctr.State.Status == "running" + + containerRespC <- containerWaitResponse{WaitResponse: resp, restarting: restarting} + if !restarting { + return + } + case err := <-errC: + // Otherwise, this is probably unexpected and we need to handle it. + // TODO: improve handling + containerErrC <- err + return + case <-ctx.Done(): + return + } + } + }() state := &domain.Container{ID: containerID, State: "running"} sendState := func() { stateC <- *state } @@ -215,10 +263,28 @@ func (a *Client) runContainerLoop( for { select { case resp := <-containerRespC: - a.logger.Info("Container entered non-running state", "exit_code", resp.StatusCode, "id", shortID(containerID)) - state.State = "exited" + a.logger.Info("Container entered non-running state", "exit_code", resp.StatusCode, "id", shortID(containerID), "restarting", resp.restarting) + + var containerState string + if resp.restarting { + containerState = "restarting" + } else { + containerState = "exited" + } + + state.State = containerState + state.CPUPercent = 0 + state.MemoryUsageBytes = 0 + state.HealthState = "unhealthy" + state.RxRate = 0 + state.TxRate = 0 + state.RxSince = time.Time{} + state.RestartCount++ sendState() - return + + if !resp.restarting { + return + } case err := <-containerErrC: // TODO: error handling? if err != context.Canceled { @@ -227,6 +293,16 @@ func (a *Client) runContainerLoop( errC <- err return case evt := <-eventsC: + if evt.Type != events.ContainerEventType { + continue + } + + if evt.Action == "start" { + state.State = "running" + sendState() + continue + } + if strings.Contains(string(evt.Action), "health_status") { switch evt.Action { case events.ActionHealthStatusRunning: @@ -240,12 +316,14 @@ func (a *Client) runContainerLoop( state.HealthState = "unknown" } sendState() + continue } - case stats := <-statsC: - state.CPUPercent = stats.cpuPercent - state.MemoryUsageBytes = stats.memoryUsageBytes - state.RxRate = stats.rxRate - state.TxRate = stats.txRate + case s := <-statsC: + state.CPUPercent = s.cpuPercent + state.MemoryUsageBytes = s.memoryUsageBytes + state.RxRate = s.rxRate + state.TxRate = s.txRate + state.RxSince = s.rxSince sendState() } } @@ -253,6 +331,10 @@ func (a *Client) runContainerLoop( // Close closes the client, stopping and removing all running containers. func (a *Client) Close() error { + if a.ctx.Err() != nil { + return nil + } + a.cancel() ctx, cancel := context.WithTimeout(context.Background(), stopTimeout) diff --git a/container/integration_test.go b/container/integration_test.go index b73af86..d77eb20 100644 --- a/container/integration_test.go +++ b/container/integration_test.go @@ -2,6 +2,7 @@ package container_test import ( "context" + "errors" "testing" "time" @@ -43,7 +44,7 @@ func TestClientStartStop(t *testing.T) { }, }) testhelpers.ChanDiscard(containerStateC) - testhelpers.ChanRequireNoError(t, errC) + testhelpers.ChanRequireNoError(ctx, t, errC) require.Eventually( t, @@ -162,3 +163,64 @@ func TestClientRemoveContainers(t *testing.T) { assert.NoError(t, <-err3C) } + +func TestContainerRestart(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) + + logger := testhelpers.NewTestLogger() + apiClient, err := client.NewClientWithOpts(client.FromEnv) + require.NoError(t, err) + containerName := "termstream-test-" + uuid.NewString() + component := "test-restart" + + client, err := container.NewClient(ctx, apiClient, logger) + require.NoError(t, err) + defer client.Close() + + containerStateC, errC := client.RunContainer(ctx, container.RunContainerParams{ + Name: containerName, + ChanSize: 1, + ContainerConfig: &typescontainer.Config{ + Image: "alpine:latest", + Cmd: []string{"sleep", "1"}, + Labels: map[string]string{"component": component}, + }, + HostConfig: &typescontainer.HostConfig{ + NetworkMode: "default", + RestartPolicy: typescontainer.RestartPolicy{Name: "always"}, + }, + }) + testhelpers.ChanRequireNoError(ctx, t, errC) + + containerState := <-containerStateC + assert.Equal(t, "pulling", containerState.State) + containerState = <-containerStateC + assert.Equal(t, "created", containerState.State) + containerState = <-containerStateC + assert.Equal(t, "running", containerState.State) + + err = nil // reset error + done := make(chan struct{}) + go func() { + defer close(done) + + var count int + for { + containerState = <-containerStateC + if containerState.State == "restarting" { + break + } else if containerState.State == "exited" { + err = errors.New("container exited unexpectedly") + } else if count >= 5 { + err = errors.New("container did not enter restarting state") + } else { + // wait for a few state changes + count++ + } + } + }() + + <-done + require.NoError(t, err) +} diff --git a/container/stats.go b/container/stats.go index 1ca6749..4b7aa75 100644 --- a/container/stats.go +++ b/container/stats.go @@ -7,6 +7,7 @@ import ( "errors" "io" "log/slog" + "time" "github.com/docker/docker/api/types/container" ) @@ -31,13 +32,21 @@ func handleStats( defer statsReader.Body.Close() var ( - processedAny bool - lastNetworkRx uint64 - lastNetworkTx uint64 + lastRxBytes uint64 + lastTxBytes uint64 + getAvgRxRate func(float64) float64 + getAvgTxRate func(float64) float64 + rxSince time.Time ) - getAvgRxRate := rolling(10) - getAvgTxRate := rolling(10) + reset := func() { + lastRxBytes = 0 + lastTxBytes = 0 + getAvgRxRate = rolling(10) + getAvgTxRate = rolling(10) + rxSince = time.Time{} + } + reset() buf := make([]byte, 4_096) for { @@ -56,30 +65,44 @@ func handleStats( break } - // https://stackoverflow.com/a/30292327/62871 - cpuDelta := float64(statsResp.CPUStats.CPUUsage.TotalUsage - statsResp.PreCPUStats.CPUUsage.TotalUsage) - systemDelta := float64(statsResp.CPUStats.SystemUsage - statsResp.PreCPUStats.SystemUsage) + rxBytes := statsResp.Networks[networkNameRx].RxBytes + txBytes := statsResp.Networks[networkNameTx].TxBytes - var avgRxRate, avgTxRate float64 - if processedAny { - secondsSinceLastReceived := statsResp.Read.Sub(statsResp.PreRead).Seconds() - diffRxBytes := (statsResp.Networks[networkNameRx].RxBytes - lastNetworkRx) - diffTxBytes := (statsResp.Networks[networkNameTx].TxBytes - lastNetworkTx) - rxRate := float64(diffRxBytes) / secondsSinceLastReceived / 1000.0 * 8 - txRate := float64(diffTxBytes) / secondsSinceLastReceived / 1000.0 * 8 - avgRxRate = getAvgRxRate(rxRate) - avgTxRate = getAvgTxRate(txRate) + if statsResp.PreRead.IsZero() || rxBytes < lastRxBytes || txBytes < lastTxBytes { + // Container restarted + reset() + lastRxBytes = rxBytes + lastTxBytes = txBytes + ch <- stats{} + continue } - lastNetworkRx = statsResp.Networks[networkNameRx].RxBytes - lastNetworkTx = statsResp.Networks[networkNameTx].TxBytes - processedAny = true + // https://stackoverflow.com/a/30292327/62871 + var cpuDelta, systemDelta float64 + cpuDelta = float64(statsResp.CPUStats.CPUUsage.TotalUsage - statsResp.PreCPUStats.CPUUsage.TotalUsage) + systemDelta = float64(statsResp.CPUStats.SystemUsage - statsResp.PreCPUStats.SystemUsage) + + secondsSinceLastReceived := statsResp.Read.Sub(statsResp.PreRead).Seconds() + diffRxBytes := rxBytes - lastRxBytes + diffTxBytes := txBytes - lastTxBytes + rxRate := float64(diffRxBytes) / secondsSinceLastReceived / 1000.0 * 8 + txRate := float64(diffTxBytes) / secondsSinceLastReceived / 1000.0 * 8 + avgRxRate := getAvgRxRate(rxRate) + avgTxRate := getAvgTxRate(txRate) + + if diffRxBytes > 0 && rxSince.IsZero() { + rxSince = statsResp.PreRead + } + + lastRxBytes = rxBytes + lastTxBytes = txBytes ch <- stats{ cpuPercent: (cpuDelta / systemDelta) * float64(statsResp.CPUStats.OnlineCPUs) * 100, memoryUsageBytes: statsResp.MemoryStats.Usage, rxRate: int(avgRxRate), txRate: int(avgTxRate), + rxSince: rxSince, } } } diff --git a/container/stats_test.go b/container/stats_test.go index 8efe668..50e7333 100644 --- a/container/stats_test.go +++ b/container/stats_test.go @@ -16,6 +16,9 @@ import ( //go:embed testdata/stats1.json var statsJSON []byte +//go:embed testdata/stats2.json +var statsWithRestartJSON []byte + func TestHandleStats(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) t.Cleanup(cancel) @@ -56,3 +59,55 @@ func TestHandleStats(t *testing.T) { assert.Equal(t, 1091, lastStats.rxRate) assert.Equal(t, 1108, lastStats.txRate) } + +func TestHandleStatsWithContainerRestart(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + t.Cleanup(cancel) + + pr, pw := io.Pipe() + containerID := "d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39" + dockerClient := testhelpers.MockDockerClient{ContainerStatsResponse: pr} + networkCountConfig := NetworkCountConfig{Rx: "eth1", Tx: "eth0"} + logger := testhelpers.NewTestLogger() + ch := make(chan stats) + + go func() { + defer close(ch) + + handleStats(ctx, containerID, &dockerClient, networkCountConfig, logger, ch) + }() + + go func() { + defer pw.Close() + + scanner := bufio.NewScanner(bytes.NewReader(statsWithRestartJSON)) + for scanner.Scan() { + _, err := pw.Write(scanner.Bytes()) + require.NoError(t, err) + } + }() + + // before container restart: + var lastStats stats + for range 31 { + lastStats = <-ch + } + + assert.Equal(t, 5.008083989501312, lastStats.cpuPercent) + assert.Equal(t, uint64(24068096), lastStats.memoryUsageBytes) + assert.Equal(t, 1199, lastStats.rxRate) + assert.Equal(t, 1200, lastStats.txRate) + + // restart triggers zero value stats: + assert.Equal(t, stats{}, <-ch) + + // after container restart: + for stats := range ch { + lastStats = stats + } + + assert.Equal(t, 1.887690322580645, lastStats.cpuPercent) + assert.Equal(t, uint64(12496896), lastStats.memoryUsageBytes) + assert.Equal(t, 1215, lastStats.rxRate) + assert.Equal(t, 1254, lastStats.txRate) +} diff --git a/container/testdata/stats2.json b/container/testdata/stats2.json new file mode 100644 index 0000000..7fbf86c --- /dev/null +++ b/container/testdata/stats2.json @@ -0,0 +1,46 @@ +{"read":"2025-02-10T17:09:55.869057432Z","preread":"0001-01-01T00:00:00Z","pids_stats":{"current":1,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":1392640},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":1392640},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":52658000,"usage_in_kernelmode":8666000,"usage_in_usermode":43991000},"system_cpu_usage":8890295280000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":0,"usage_in_kernelmode":0,"usage_in_usermode":0},"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":1904640,"stats":{"active_anon":0,"active_file":811008,"anon":0,"anon_thp":0,"file":1081344,"file_dirty":0,"file_mapped":405504,"file_writeback":0,"inactive_anon":0,"inactive_file":135168,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":924,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":110,"rx_packets":1,"rx_errors":0,"rx_dropped":0,"tx_bytes":0,"tx_packets":0,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":110,"rx_packets":1,"rx_errors":0,"rx_dropped":0,"tx_bytes":0,"tx_packets":0,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:09:56.877526504Z","preread":"2025-02-10T17:09:55.869057432Z","pids_stats":{"current":1,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":16949248},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":16949248},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":105599000,"usage_in_kernelmode":26283000,"usage_in_usermode":79316000},"system_cpu_usage":8890303140000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":52658000,"usage_in_kernelmode":8666000,"usage_in_usermode":43991000},"system_cpu_usage":8890295280000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":22638592,"stats":{"active_anon":0,"active_file":7368704,"anon":5677056,"anon_thp":0,"file":15273984,"file_dirty":0,"file_mapped":11218944,"file_writeback":0,"inactive_anon":5541888,"inactive_file":7704576,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":3300,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":306,"rx_packets":3,"rx_errors":0,"rx_dropped":0,"tx_bytes":0,"tx_packets":0,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":24652,"rx_packets":67,"rx_errors":0,"rx_dropped":0,"tx_bytes":5729,"tx_packets":35,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:09:57.883923298Z","preread":"2025-02-10T17:09:56.877526504Z","pids_stats":{"current":1,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":16949248},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":16949248},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":112515000,"usage_in_kernelmode":26283000,"usage_in_usermode":86232000},"system_cpu_usage":8890310960000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":105599000,"usage_in_kernelmode":26283000,"usage_in_usermode":79316000},"system_cpu_usage":8890303140000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":22683648,"stats":{"active_anon":0,"active_file":7368704,"anon":5677056,"anon_thp":0,"file":15273984,"file_dirty":0,"file_mapped":11218944,"file_writeback":0,"inactive_anon":5677056,"inactive_file":7704576,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":3333,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":758,"rx_packets":6,"rx_errors":0,"rx_dropped":0,"tx_bytes":0,"tx_packets":0,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":48908,"rx_packets":119,"rx_errors":0,"rx_dropped":0,"tx_bytes":7313,"tx_packets":59,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:09:58.889549811Z","preread":"2025-02-10T17:09:57.883923298Z","pids_stats":{"current":1,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":165737000,"usage_in_kernelmode":36931000,"usage_in_usermode":128806000},"system_cpu_usage":8890318700000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":112515000,"usage_in_kernelmode":26283000,"usage_in_usermode":86232000},"system_cpu_usage":8890310960000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":30212096,"stats":{"active_anon":0,"active_file":7368704,"anon":12165120,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":12165120,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":5049,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":1642,"rx_packets":11,"rx_errors":0,"rx_dropped":0,"tx_bytes":0,"tx_packets":0,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":212049,"rx_packets":213,"rx_errors":0,"rx_dropped":0,"tx_bytes":10283,"tx_packets":104,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:09:59.895407034Z","preread":"2025-02-10T17:09:58.889549811Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":193829000,"usage_in_kernelmode":52279000,"usage_in_usermode":141549000},"system_cpu_usage":8890326600000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":165737000,"usage_in_kernelmode":36931000,"usage_in_usermode":128806000},"system_cpu_usage":8890318700000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24473600,"stats":{"active_anon":0,"active_file":7368704,"anon":6623232,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":6758400,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":5379,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":11167,"rx_packets":101,"rx_errors":0,"rx_dropped":0,"tx_bytes":327324,"tx_packets":171,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":337414,"rx_packets":293,"rx_errors":0,"rx_dropped":0,"tx_bytes":13253,"tx_packets":149,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:00.902957997Z","preread":"2025-02-10T17:09:59.895407034Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":223463000,"usage_in_kernelmode":71847000,"usage_in_usermode":151615000},"system_cpu_usage":8890334290000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":193829000,"usage_in_kernelmode":52279000,"usage_in_usermode":141549000},"system_cpu_usage":8890326600000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24567808,"stats":{"active_anon":0,"active_file":7368704,"anon":6623232,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":6758400,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":5643,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":139264,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":18361,"rx_packets":210,"rx_errors":0,"rx_dropped":0,"tx_bytes":506612,"tx_packets":306,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":513139,"rx_packets":374,"rx_errors":0,"rx_dropped":0,"tx_bytes":16619,"tx_packets":200,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:01.909875394Z","preread":"2025-02-10T17:10:00.902957997Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":247263000,"usage_in_kernelmode":85158000,"usage_in_usermode":162105000},"system_cpu_usage":8890342040000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":223463000,"usage_in_kernelmode":71847000,"usage_in_usermode":151615000},"system_cpu_usage":8890334290000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24563712,"stats":{"active_anon":0,"active_file":7368704,"anon":6758400,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":6758400,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":5709,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":139264,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":26415,"rx_packets":330,"rx_errors":0,"rx_dropped":0,"tx_bytes":641820,"tx_packets":452,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":644012,"rx_packets":452,"rx_errors":0,"rx_dropped":0,"tx_bytes":19655,"tx_packets":246,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:02.92013887Z","preread":"2025-02-10T17:10:01.909875394Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":277321000,"usage_in_kernelmode":98262000,"usage_in_usermode":179059000},"system_cpu_usage":8890349700000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":247263000,"usage_in_kernelmode":85158000,"usage_in_usermode":162105000},"system_cpu_usage":8890342040000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24547328,"stats":{"active_anon":0,"active_file":7368704,"anon":6893568,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":6623232,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":6006,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":4096,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":34137,"rx_packets":447,"rx_errors":0,"rx_dropped":0,"tx_bytes":817578,"tx_packets":596,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":817988,"rx_packets":533,"rx_errors":0,"rx_dropped":0,"tx_bytes":22757,"tx_packets":293,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:03.928143884Z","preread":"2025-02-10T17:10:02.92013887Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":304243000,"usage_in_kernelmode":114951000,"usage_in_usermode":189292000},"system_cpu_usage":8890357410000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":277321000,"usage_in_kernelmode":98262000,"usage_in_usermode":179059000},"system_cpu_usage":8890349700000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24563712,"stats":{"active_anon":0,"active_file":7368704,"anon":6893568,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":6623232,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":6105,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":4096,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":42477,"rx_packets":573,"rx_errors":0,"rx_dropped":0,"tx_bytes":950115,"tx_packets":750,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":941679,"rx_packets":612,"rx_errors":0,"rx_dropped":0,"tx_bytes":25859,"tx_packets":340,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:04.936009415Z","preread":"2025-02-10T17:10:03.928143884Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":329490000,"usage_in_kernelmode":126048000,"usage_in_usermode":203442000},"system_cpu_usage":8890365130000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":304243000,"usage_in_kernelmode":114951000,"usage_in_usermode":189292000},"system_cpu_usage":8890357410000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24555520,"stats":{"active_anon":0,"active_file":7368704,"anon":7163904,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":6758400,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":6237,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":4096,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":50529,"rx_packets":695,"rx_errors":0,"rx_dropped":0,"tx_bytes":1124690,"tx_packets":900,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1111633,"rx_packets":692,"rx_errors":0,"rx_dropped":0,"tx_bytes":28961,"tx_packets":387,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:05.942519392Z","preread":"2025-02-10T17:10:04.936009415Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":357495000,"usage_in_kernelmode":135046000,"usage_in_usermode":222449000},"system_cpu_usage":8890372800000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":329490000,"usage_in_kernelmode":126048000,"usage_in_usermode":203442000},"system_cpu_usage":8890365130000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24559616,"stats":{"active_anon":0,"active_file":7368704,"anon":7028736,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":6758400,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":6369,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":4096,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":58317,"rx_packets":813,"rx_errors":0,"rx_dropped":0,"tx_bytes":1274103,"tx_packets":1048,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1256387,"rx_packets":770,"rx_errors":0,"rx_dropped":0,"tx_bytes":32063,"tx_packets":434,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:06.952030694Z","preread":"2025-02-10T17:10:05.942519392Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":382506000,"usage_in_kernelmode":153782000,"usage_in_usermode":228723000},"system_cpu_usage":8890380530000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":357495000,"usage_in_kernelmode":135046000,"usage_in_usermode":222449000},"system_cpu_usage":8890372800000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24489984,"stats":{"active_anon":0,"active_file":7368704,"anon":7163904,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":7028736,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":6633,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":66303,"rx_packets":934,"rx_errors":0,"rx_dropped":0,"tx_bytes":1460333,"tx_packets":1197,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1439992,"rx_packets":851,"rx_errors":0,"rx_dropped":0,"tx_bytes":35375,"tx_packets":484,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:07.96208097Z","preread":"2025-02-10T17:10:06.952030694Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":410044000,"usage_in_kernelmode":165819000,"usage_in_usermode":244225000},"system_cpu_usage":8890388280000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":382506000,"usage_in_kernelmode":153782000,"usage_in_usermode":228723000},"system_cpu_usage":8890380530000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24481792,"stats":{"active_anon":0,"active_file":7368704,"anon":6893568,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":7028736,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":973,"pgfault":6732,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1248,"pgscan":396,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":75790,"rx_packets":1055,"rx_errors":0,"rx_dropped":0,"tx_bytes":1606399,"tx_packets":1346,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1581210,"rx_packets":933,"rx_errors":0,"rx_dropped":0,"tx_bytes":38411,"tx_packets":530,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:08.971599006Z","preread":"2025-02-10T17:10:07.96208097Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":439160000,"usage_in_kernelmode":184062000,"usage_in_usermode":255097000},"system_cpu_usage":8890396000000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":410044000,"usage_in_kernelmode":165819000,"usage_in_usermode":244225000},"system_cpu_usage":8890388280000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24510464,"stats":{"active_anon":0,"active_file":7368704,"anon":6893568,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":7028736,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":33,"pgdeactivate":973,"pgfault":6930,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1281,"pgscan":464,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":83578,"rx_packets":1173,"rx_errors":0,"rx_dropped":0,"tx_bytes":1771712,"tx_packets":1492,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1743655,"rx_packets":1012,"rx_errors":0,"rx_dropped":0,"tx_bytes":41579,"tx_packets":578,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:09.992944293Z","preread":"2025-02-10T17:10:08.971599006Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":467949000,"usage_in_kernelmode":200401000,"usage_in_usermode":267547000},"system_cpu_usage":8890403790000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":439160000,"usage_in_kernelmode":184062000,"usage_in_usermode":255097000},"system_cpu_usage":8890396000000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24621056,"stats":{"active_anon":0,"active_file":7368704,"anon":6893568,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":7028736,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":33,"pgdeactivate":973,"pgfault":6996,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1281,"pgscan":464,"pgsteal":231,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":91432,"rx_packets":1292,"rx_errors":0,"rx_dropped":0,"tx_bytes":1920922,"tx_packets":1641,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1886199,"rx_packets":1090,"rx_errors":0,"rx_dropped":0,"tx_bytes":44681,"tx_packets":625,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:11.005021327Z","preread":"2025-02-10T17:10:09.992944293Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":497752000,"usage_in_kernelmode":208238000,"usage_in_usermode":289514000},"system_cpu_usage":8890411500000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":467949000,"usage_in_kernelmode":200401000,"usage_in_usermode":267547000},"system_cpu_usage":8890403790000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24322048,"stats":{"active_anon":0,"active_file":7368704,"anon":6758400,"anon_thp":0,"file":16355328,"file_dirty":0,"file_mapped":11894784,"file_writeback":0,"inactive_anon":7028736,"inactive_file":8650752,"kernel_stack":49152,"pgactivate":66,"pgdeactivate":1006,"pgfault":7194,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1314,"pgscan":531,"pgsteal":264,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":99352,"rx_packets":1412,"rx_errors":0,"rx_dropped":0,"tx_bytes":2086533,"tx_packets":1790,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":2047124,"rx_packets":1168,"rx_errors":0,"rx_dropped":0,"tx_bytes":47717,"tx_packets":671,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:12.015495988Z","preread":"2025-02-10T17:10:11.005021327Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":521981000,"usage_in_kernelmode":231735000,"usage_in_usermode":290246000},"system_cpu_usage":8890419280000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":497752000,"usage_in_kernelmode":208238000,"usage_in_usermode":289514000},"system_cpu_usage":8890411500000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":23359488,"stats":{"active_anon":0,"active_file":7233536,"anon":6758400,"anon_thp":0,"file":15544320,"file_dirty":0,"file_mapped":11354112,"file_writeback":0,"inactive_anon":7028736,"inactive_file":8105984,"kernel_stack":49152,"pgactivate":66,"pgdeactivate":1072,"pgfault":7359,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1413,"pgscan":767,"pgsteal":500,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":107272,"rx_packets":1532,"rx_errors":0,"rx_dropped":0,"tx_bytes":2230684,"tx_packets":1940,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":2186601,"rx_packets":1247,"rx_errors":0,"rx_dropped":0,"tx_bytes":50885,"tx_packets":719,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:13.018184608Z","preread":"2025-02-10T17:10:12.015495988Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":543228000,"usage_in_kernelmode":238444000,"usage_in_usermode":304783000},"system_cpu_usage":8890427020000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":521981000,"usage_in_kernelmode":231735000,"usage_in_usermode":290246000},"system_cpu_usage":8890419280000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":23359488,"stats":{"active_anon":0,"active_file":7233536,"anon":7028736,"anon_thp":0,"file":15544320,"file_dirty":0,"file_mapped":11354112,"file_writeback":0,"inactive_anon":7028736,"inactive_file":8105984,"kernel_stack":49152,"pgactivate":66,"pgdeactivate":1072,"pgfault":7590,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1413,"pgscan":767,"pgsteal":500,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":115060,"rx_packets":1650,"rx_errors":0,"rx_dropped":0,"tx_bytes":2410163,"tx_packets":2087,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":2361578,"rx_packets":1326,"rx_errors":0,"rx_dropped":0,"tx_bytes":53987,"tx_packets":766,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:14.030423179Z","preread":"2025-02-10T17:10:13.018184608Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":567307000,"usage_in_kernelmode":257134000,"usage_in_usermode":310172000},"system_cpu_usage":8890435030000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":543228000,"usage_in_kernelmode":238444000,"usage_in_usermode":304783000},"system_cpu_usage":8890427020000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":23318528,"stats":{"active_anon":0,"active_file":7233536,"anon":6893568,"anon_thp":0,"file":15544320,"file_dirty":0,"file_mapped":11354112,"file_writeback":0,"inactive_anon":7028736,"inactive_file":8105984,"kernel_stack":49152,"pgactivate":66,"pgdeactivate":1072,"pgfault":7755,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1413,"pgscan":767,"pgsteal":500,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":122914,"rx_packets":1769,"rx_errors":0,"rx_dropped":0,"tx_bytes":2575304,"tx_packets":2234,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":2522058,"rx_packets":1403,"rx_errors":0,"rx_dropped":0,"tx_bytes":57089,"tx_packets":813,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:15.041322526Z","preread":"2025-02-10T17:10:14.030423179Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":596235000,"usage_in_kernelmode":278077000,"usage_in_usermode":318158000},"system_cpu_usage":8890442920000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":567307000,"usage_in_kernelmode":257134000,"usage_in_usermode":310172000},"system_cpu_usage":8890435030000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":23187456,"stats":{"active_anon":0,"active_file":7233536,"anon":6893568,"anon_thp":0,"file":15544320,"file_dirty":0,"file_mapped":11354112,"file_writeback":0,"inactive_anon":7163904,"inactive_file":8105984,"kernel_stack":49152,"pgactivate":66,"pgdeactivate":1072,"pgfault":7821,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":1413,"pgscan":767,"pgsteal":500,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":130768,"rx_packets":1888,"rx_errors":0,"rx_dropped":0,"tx_bytes":2716872,"tx_packets":2382,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":2661934,"rx_packets":1482,"rx_errors":0,"rx_dropped":0,"tx_bytes":60397,"tx_packets":863,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:16.046672299Z","preread":"2025-02-10T17:10:15.041322526Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":615752000,"usage_in_kernelmode":297594000,"usage_in_usermode":318158000},"system_cpu_usage":8890450940000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":596235000,"usage_in_kernelmode":278077000,"usage_in_usermode":318158000},"system_cpu_usage":8890442920000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":18952192,"stats":{"active_anon":0,"active_file":4530176,"anon":6893568,"anon_thp":0,"file":11489280,"file_dirty":0,"file_mapped":9326592,"file_writeback":0,"inactive_anon":7163904,"inactive_file":6754304,"kernel_stack":49152,"pgactivate":528,"pgdeactivate":2260,"pgfault":7986,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":3063,"pgscan":2417,"pgsteal":1556,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":138622,"rx_packets":2007,"rx_errors":0,"rx_dropped":0,"tx_bytes":2875738,"tx_packets":2531,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":2813347,"rx_packets":1561,"rx_errors":0,"rx_dropped":0,"tx_bytes":63499,"tx_packets":910,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:17.054654915Z","preread":"2025-02-10T17:10:16.046672299Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":644114000,"usage_in_kernelmode":324118000,"usage_in_usermode":319995000},"system_cpu_usage":8890458950000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":615752000,"usage_in_kernelmode":297594000,"usage_in_usermode":318158000},"system_cpu_usage":8890450940000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":18968576,"stats":{"active_anon":0,"active_file":4530176,"anon":6758400,"anon_thp":0,"file":11489280,"file_dirty":0,"file_mapped":9326592,"file_writeback":0,"inactive_anon":7299072,"inactive_file":6754304,"kernel_stack":49152,"pgactivate":528,"pgdeactivate":2260,"pgfault":8217,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":3063,"pgscan":2417,"pgsteal":1556,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":146410,"rx_packets":2125,"rx_errors":0,"rx_dropped":0,"tx_bytes":3034657,"tx_packets":2679,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":2967686,"rx_packets":1640,"rx_errors":0,"rx_dropped":0,"tx_bytes":66601,"tx_packets":957,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:18.063376254Z","preread":"2025-02-10T17:10:17.054654915Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":668936000,"usage_in_kernelmode":336609000,"usage_in_usermode":332327000},"system_cpu_usage":8890466870000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":644114000,"usage_in_kernelmode":324118000,"usage_in_usermode":319995000},"system_cpu_usage":8890458950000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":18968576,"stats":{"active_anon":0,"active_file":4530176,"anon":6758400,"anon_thp":0,"file":11489280,"file_dirty":0,"file_mapped":9326592,"file_writeback":0,"inactive_anon":7299072,"inactive_file":6754304,"kernel_stack":49152,"pgactivate":528,"pgdeactivate":2260,"pgfault":8316,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":3063,"pgscan":2417,"pgsteal":1556,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":154330,"rx_packets":2245,"rx_errors":0,"rx_dropped":0,"tx_bytes":3167407,"tx_packets":2829,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":3095740,"rx_packets":1718,"rx_errors":0,"rx_dropped":0,"tx_bytes":69703,"tx_packets":1004,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:19.066509283Z","preread":"2025-02-10T17:10:18.063376254Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":684871000,"usage_in_kernelmode":349983000,"usage_in_usermode":334888000},"system_cpu_usage":8890474830000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":668936000,"usage_in_kernelmode":336609000,"usage_in_usermode":332327000},"system_cpu_usage":8890466870000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":18976768,"stats":{"active_anon":0,"active_file":4530176,"anon":6893568,"anon_thp":0,"file":11489280,"file_dirty":0,"file_mapped":9326592,"file_writeback":0,"inactive_anon":7434240,"inactive_file":6754304,"kernel_stack":49152,"pgactivate":528,"pgdeactivate":2260,"pgfault":8547,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":3063,"pgscan":2417,"pgsteal":1556,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":162118,"rx_packets":2363,"rx_errors":0,"rx_dropped":0,"tx_bytes":3355924,"tx_packets":2977,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":3279579,"rx_packets":1797,"rx_errors":0,"rx_dropped":0,"tx_bytes":72805,"tx_packets":1051,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:20.077261749Z","preread":"2025-02-10T17:10:19.066509283Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":713500000,"usage_in_kernelmode":361619000,"usage_in_usermode":351881000},"system_cpu_usage":8890482730000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":684871000,"usage_in_kernelmode":349983000,"usage_in_usermode":334888000},"system_cpu_usage":8890474830000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":19144704,"stats":{"active_anon":0,"active_file":4530176,"anon":7028736,"anon_thp":0,"file":11489280,"file_dirty":0,"file_mapped":9326592,"file_writeback":0,"inactive_anon":7434240,"inactive_file":6754304,"kernel_stack":49152,"pgactivate":528,"pgdeactivate":2260,"pgfault":8712,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":3063,"pgscan":2417,"pgsteal":1556,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":169972,"rx_packets":2482,"rx_errors":0,"rx_dropped":0,"tx_bytes":3501092,"tx_packets":3125,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":3445350,"rx_packets":1877,"rx_errors":0,"rx_dropped":0,"tx_bytes":75907,"tx_packets":1098,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:21.090532458Z","preread":"2025-02-10T17:10:20.077261749Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":742248000,"usage_in_kernelmode":373123000,"usage_in_usermode":369124000},"system_cpu_usage":8890490640000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":713500000,"usage_in_kernelmode":361619000,"usage_in_usermode":351881000},"system_cpu_usage":8890482730000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":18984960,"stats":{"active_anon":0,"active_file":4530176,"anon":6893568,"anon_thp":0,"file":11489280,"file_dirty":0,"file_mapped":9326592,"file_writeback":0,"inactive_anon":7299072,"inactive_file":6754304,"kernel_stack":49152,"pgactivate":528,"pgdeactivate":2260,"pgfault":8811,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":3063,"pgscan":2417,"pgsteal":1556,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":177826,"rx_packets":2601,"rx_errors":0,"rx_dropped":0,"tx_bytes":3655145,"tx_packets":3275,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":3569596,"rx_packets":1956,"rx_errors":0,"rx_dropped":0,"tx_bytes":79009,"tx_packets":1145,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:22.099277396Z","preread":"2025-02-10T17:10:21.090532458Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":768117000,"usage_in_kernelmode":383306000,"usage_in_usermode":384810000},"system_cpu_usage":8890498310000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":742248000,"usage_in_kernelmode":373123000,"usage_in_usermode":369124000},"system_cpu_usage":8890490640000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":18980864,"stats":{"active_anon":0,"active_file":4530176,"anon":7028736,"anon_thp":0,"file":11489280,"file_dirty":0,"file_mapped":9326592,"file_writeback":0,"inactive_anon":7163904,"inactive_file":6754304,"kernel_stack":49152,"pgactivate":528,"pgdeactivate":2260,"pgfault":8976,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":3063,"pgscan":2417,"pgsteal":1556,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":185548,"rx_packets":2718,"rx_errors":0,"rx_dropped":0,"tx_bytes":3819464,"tx_packets":3421,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":3729433,"rx_packets":2034,"rx_errors":0,"rx_dropped":0,"tx_bytes":82111,"tx_packets":1192,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:23.103349203Z","preread":"2025-02-10T17:10:22.099277396Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":783628000,"usage_in_kernelmode":388175000,"usage_in_usermode":395452000},"system_cpu_usage":8890506070000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":768117000,"usage_in_kernelmode":383306000,"usage_in_usermode":384810000},"system_cpu_usage":8890498310000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":18968576,"stats":{"active_anon":0,"active_file":4530176,"anon":7028736,"anon_thp":0,"file":11489280,"file_dirty":0,"file_mapped":9326592,"file_writeback":0,"inactive_anon":7028736,"inactive_file":6619136,"kernel_stack":49152,"pgactivate":528,"pgdeactivate":2260,"pgfault":9075,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":3063,"pgscan":2417,"pgsteal":1556,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":193072,"rx_packets":2832,"rx_errors":0,"rx_dropped":0,"tx_bytes":3932452,"tx_packets":3562,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":3838180,"rx_packets":2111,"rx_errors":0,"rx_dropped":0,"tx_bytes":85147,"tx_packets":1238,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:24.110528982Z","preread":"2025-02-10T17:10:23.103349203Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":810575000,"usage_in_kernelmode":404415000,"usage_in_usermode":406160000},"system_cpu_usage":8890513710000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":783628000,"usage_in_kernelmode":388175000,"usage_in_usermode":395452000},"system_cpu_usage":8890506070000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":19038208,"stats":{"active_anon":0,"active_file":4530176,"anon":7163904,"anon_thp":0,"file":11489280,"file_dirty":0,"file_mapped":9326592,"file_writeback":0,"inactive_anon":7299072,"inactive_file":6619136,"kernel_stack":49152,"pgactivate":528,"pgdeactivate":2260,"pgfault":9240,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":3063,"pgscan":2417,"pgsteal":1556,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":200794,"rx_packets":2949,"rx_errors":0,"rx_dropped":0,"tx_bytes":4119794,"tx_packets":3709,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":4023611,"rx_packets":2190,"rx_errors":0,"rx_dropped":0,"tx_bytes":88389,"tx_packets":1287,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:25.114794579Z","preread":"2025-02-10T17:10:24.110528982Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":18030592},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":18030592},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":838137000,"usage_in_kernelmode":421000000,"usage_in_usermode":417137000},"system_cpu_usage":8890521310000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":810575000,"usage_in_kernelmode":404415000,"usage_in_usermode":406160000},"system_cpu_usage":8890513710000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":19103744,"stats":{"active_anon":0,"active_file":4530176,"anon":7028736,"anon_thp":0,"file":11489280,"file_dirty":0,"file_mapped":9326592,"file_writeback":0,"inactive_anon":7299072,"inactive_file":6619136,"kernel_stack":49152,"pgactivate":528,"pgdeactivate":2260,"pgfault":9372,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":33,"pgrefill":3063,"pgscan":2417,"pgsteal":1556,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":208648,"rx_packets":3068,"rx_errors":0,"rx_dropped":0,"tx_bytes":4256540,"tx_packets":3859,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":4153032,"rx_packets":2268,"rx_errors":0,"rx_dropped":0,"tx_bytes":91491,"tx_packets":1334,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:26.122471489Z","preread":"2025-02-10T17:10:25.114794579Z","pids_stats":{"current":1,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":26640384},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":26640384},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":885839000,"usage_in_kernelmode":453179000,"usage_in_usermode":432660000},"system_cpu_usage":8890528930000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":838137000,"usage_in_kernelmode":421000000,"usage_in_usermode":417137000},"system_cpu_usage":8890521310000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":24068096,"stats":{"active_anon":0,"active_file":7909376,"anon":3514368,"anon_thp":0,"file":19734528,"file_dirty":0,"file_mapped":14057472,"file_writeback":0,"inactive_anon":3919872,"inactive_file":11079680,"kernel_stack":49152,"pgactivate":528,"pgdeactivate":2260,"pgfault":9735,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":132,"pgrefill":3063,"pgscan":2417,"pgsteal":1556,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":215764,"rx_packets":3176,"rx_errors":0,"rx_dropped":0,"tx_bytes":4387539,"tx_packets":3993,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":4324351,"rx_packets":2342,"rx_errors":0,"rx_dropped":0,"tx_bytes":94677,"tx_packets":1382,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:27.128994767Z","preread":"2025-02-10T17:10:26.122471489Z","pids_stats":{"current":1,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":2637824},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":2637824},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":64961000,"usage_in_kernelmode":17993000,"usage_in_usermode":46968000},"system_cpu_usage":8890536670000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":885839000,"usage_in_kernelmode":453179000,"usage_in_usermode":432660000},"system_cpu_usage":8890528930000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":4128768,"stats":{"active_anon":0,"active_file":1757184,"anon":405504,"anon_thp":0,"file":2162688,"file_dirty":0,"file_mapped":811008,"file_writeback":0,"inactive_anon":405504,"inactive_file":0,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":1386,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":110,"rx_packets":1,"rx_errors":0,"rx_dropped":0,"tx_bytes":0,"tx_packets":0,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":110,"rx_packets":1,"rx_errors":0,"rx_dropped":0,"tx_bytes":0,"tx_packets":0,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:28.13708849Z","preread":"2025-02-10T17:10:27.128994767Z","pids_stats":{"current":1,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":124508000,"usage_in_kernelmode":33818000,"usage_in_usermode":90689000},"system_cpu_usage":8890544320000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":64961000,"usage_in_kernelmode":17993000,"usage_in_usermode":46968000},"system_cpu_usage":8890536670000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":18018304,"stats":{"active_anon":0,"active_file":2568192,"anon":12029952,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":11759616,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":4818,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":306,"rx_packets":3,"rx_errors":0,"rx_dropped":0,"tx_bytes":0,"tx_packets":0,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":60041,"rx_packets":82,"rx_errors":0,"rx_dropped":0,"tx_bytes":5993,"tx_packets":39,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:29.141750528Z","preread":"2025-02-10T17:10:28.13708849Z","pids_stats":{"current":1,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":156615000,"usage_in_kernelmode":40126000,"usage_in_usermode":116488000},"system_cpu_usage":8890551970000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":124508000,"usage_in_kernelmode":33818000,"usage_in_usermode":90689000},"system_cpu_usage":8890544320000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":18309120,"stats":{"active_anon":0,"active_file":2568192,"anon":12029952,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":12029952,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":4950,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":1442,"rx_packets":10,"rx_errors":0,"rx_dropped":0,"tx_bytes":0,"tx_packets":0,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":215395,"rx_packets":167,"rx_errors":0,"rx_dropped":0,"tx_bytes":9095,"tx_packets":86,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:30.148160807Z","preread":"2025-02-10T17:10:29.141750528Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":187316000,"usage_in_kernelmode":60996000,"usage_in_usermode":126319000},"system_cpu_usage":8890559680000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":156615000,"usage_in_kernelmode":40126000,"usage_in_usermode":116488000},"system_cpu_usage":8890551970000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12550144,"stats":{"active_anon":0,"active_file":2568192,"anon":6758400,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":6758400,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":5379,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":15017,"rx_packets":161,"rx_errors":0,"rx_dropped":0,"tx_bytes":354751,"tx_packets":213,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":358270,"rx_packets":253,"rx_errors":0,"rx_dropped":0,"tx_bytes":12065,"tx_packets":131,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:31.15214184Z","preread":"2025-02-10T17:10:30.148160807Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":203703000,"usage_in_kernelmode":68944000,"usage_in_usermode":134758000},"system_cpu_usage":8890567480000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":187316000,"usage_in_kernelmode":60996000,"usage_in_usermode":126319000},"system_cpu_usage":8890559680000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12632064,"stats":{"active_anon":0,"active_file":2568192,"anon":6758400,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":6893568,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":5445,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":23137,"rx_packets":282,"rx_errors":0,"rx_dropped":0,"tx_bytes":471719,"tx_packets":362,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":473567,"rx_packets":332,"rx_errors":0,"rx_dropped":0,"tx_bytes":15101,"tx_packets":177,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:32.156625896Z","preread":"2025-02-10T17:10:31.15214184Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":217164000,"usage_in_kernelmode":72119000,"usage_in_usermode":145045000},"system_cpu_usage":8890575270000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":203703000,"usage_in_kernelmode":68944000,"usage_in_usermode":134758000},"system_cpu_usage":8890567480000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12607488,"stats":{"active_anon":0,"active_file":2568192,"anon":7028736,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":7163904,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":5643,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":31057,"rx_packets":402,"rx_errors":0,"rx_dropped":0,"tx_bytes":671318,"tx_packets":512,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":665010,"rx_packets":413,"rx_errors":0,"rx_dropped":0,"tx_bytes":18203,"tx_packets":224,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:33.159945292Z","preread":"2025-02-10T17:10:32.156625896Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":230728000,"usage_in_kernelmode":79445000,"usage_in_usermode":151283000},"system_cpu_usage":8890583020000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":217164000,"usage_in_kernelmode":72119000,"usage_in_usermode":145045000},"system_cpu_usage":8890575270000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12550144,"stats":{"active_anon":0,"active_file":2568192,"anon":7028736,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":7163904,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":5874,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":39177,"rx_packets":523,"rx_errors":0,"rx_dropped":0,"tx_bytes":789577,"tx_packets":661,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":781334,"rx_packets":492,"rx_errors":0,"rx_dropped":0,"tx_bytes":21239,"tx_packets":270,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:34.166003898Z","preread":"2025-02-10T17:10:33.159945292Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":244751000,"usage_in_kernelmode":82738000,"usage_in_usermode":162012000},"system_cpu_usage":8890590790000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":230728000,"usage_in_kernelmode":79445000,"usage_in_usermode":151283000},"system_cpu_usage":8890583020000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12611584,"stats":{"active_anon":0,"active_file":2568192,"anon":7028736,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":7163904,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":6006,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":47097,"rx_packets":643,"rx_errors":0,"rx_dropped":0,"tx_bytes":982933,"tx_packets":810,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":967597,"rx_packets":571,"rx_errors":0,"rx_dropped":0,"tx_bytes":24275,"tx_packets":316,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:35.170665507Z","preread":"2025-02-10T17:10:34.166003898Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":258043000,"usage_in_kernelmode":84176000,"usage_in_usermode":173867000},"system_cpu_usage":8890598580000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":244751000,"usage_in_kernelmode":82738000,"usage_in_usermode":162012000},"system_cpu_usage":8890590790000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12644352,"stats":{"active_anon":0,"active_file":2568192,"anon":6893568,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":7163904,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":6138,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":55191,"rx_packets":766,"rx_errors":0,"rx_dropped":0,"tx_bytes":1098489,"tx_packets":960,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1078081,"rx_packets":648,"rx_errors":0,"rx_dropped":0,"tx_bytes":27245,"tx_packets":361,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:36.17720321Z","preread":"2025-02-10T17:10:35.170665507Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":276023000,"usage_in_kernelmode":96189000,"usage_in_usermode":179834000},"system_cpu_usage":8890606360000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":258043000,"usage_in_kernelmode":84176000,"usage_in_usermode":173867000},"system_cpu_usage":8890598580000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12599296,"stats":{"active_anon":0,"active_file":2568192,"anon":6893568,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":7028736,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":6336,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":63111,"rx_packets":886,"rx_errors":0,"rx_dropped":0,"tx_bytes":1297854,"tx_packets":1109,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1272751,"rx_packets":726,"rx_errors":0,"rx_dropped":0,"tx_bytes":30347,"tx_packets":408,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:37.179436376Z","preread":"2025-02-10T17:10:36.17720321Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":302266000,"usage_in_kernelmode":111416000,"usage_in_usermode":190849000},"system_cpu_usage":8890614050000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":276023000,"usage_in_kernelmode":96189000,"usage_in_usermode":179834000},"system_cpu_usage":8890606360000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12558336,"stats":{"active_anon":0,"active_file":2568192,"anon":6758400,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":7028736,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":6402,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":71031,"rx_packets":1006,"rx_errors":0,"rx_dropped":0,"tx_bytes":1416900,"tx_packets":1259,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1387475,"rx_packets":804,"rx_errors":0,"rx_dropped":0,"tx_bytes":33659,"tx_packets":458,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:38.184344774Z","preread":"2025-02-10T17:10:37.179436376Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":321901000,"usage_in_kernelmode":117996000,"usage_in_usermode":203904000},"system_cpu_usage":8890621860000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":302266000,"usage_in_kernelmode":111416000,"usage_in_usermode":190849000},"system_cpu_usage":8890614050000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12595200,"stats":{"active_anon":0,"active_file":2568192,"anon":6893568,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":7163904,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":6633,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":80497,"rx_packets":1129,"rx_errors":0,"rx_dropped":0,"tx_bytes":1609439,"tx_packets":1408,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1576862,"rx_packets":885,"rx_errors":0,"rx_dropped":0,"tx_bytes":36629,"tx_packets":503,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:39.198019555Z","preread":"2025-02-10T17:10:38.184344774Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":347344000,"usage_in_kernelmode":137356000,"usage_in_usermode":209987000},"system_cpu_usage":8890629710000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":321901000,"usage_in_kernelmode":117996000,"usage_in_usermode":203904000},"system_cpu_usage":8890621860000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12648448,"stats":{"active_anon":0,"active_file":2568192,"anon":6893568,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":7163904,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":6699,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":88549,"rx_packets":1251,"rx_errors":0,"rx_dropped":0,"tx_bytes":1748295,"tx_packets":1560,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1714532,"rx_packets":963,"rx_errors":0,"rx_dropped":0,"tx_bytes":39797,"tx_packets":551,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:40.205677581Z","preread":"2025-02-10T17:10:39.198019555Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":376717000,"usage_in_kernelmode":161582000,"usage_in_usermode":215134000},"system_cpu_usage":8890637420000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":347344000,"usage_in_kernelmode":137356000,"usage_in_usermode":209987000},"system_cpu_usage":8890629710000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12546048,"stats":{"active_anon":0,"active_file":2568192,"anon":7028736,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":7299072,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":6963,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":96601,"rx_packets":1373,"rx_errors":0,"rx_dropped":0,"tx_bytes":1933212,"tx_packets":1711,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":1890493,"rx_packets":1041,"rx_errors":0,"rx_dropped":0,"tx_bytes":42833,"tx_packets":597,"tx_errors":0,"tx_dropped":0}}} +{"read":"2025-02-10T17:10:41.215156874Z","preread":"2025-02-10T17:10:40.205677581Z","pids_stats":{"current":3,"limit":18064},"blkio_stats":{"io_service_bytes_recursive":[{"major":259,"minor":0,"op":"read","value":5046272},{"major":259,"minor":0,"op":"write","value":0},{"major":254,"minor":0,"op":"read","value":5046272},{"major":254,"minor":0,"op":"write","value":0}],"io_serviced_recursive":null,"io_queue_recursive":null,"io_service_time_recursive":null,"io_wait_time_recursive":null,"io_merged_recursive":null,"io_time_recursive":null,"sectors_recursive":null},"num_procs":0,"storage_stats":{},"cpu_stats":{"cpu_usage":{"total_usage":395004000,"usage_in_kernelmode":172711000,"usage_in_usermode":222293000},"system_cpu_usage":8890645170000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"precpu_stats":{"cpu_usage":{"total_usage":376717000,"usage_in_kernelmode":161582000,"usage_in_usermode":215134000},"system_cpu_usage":8890637420000000,"online_cpus":8,"throttling_data":{"periods":0,"throttled_periods":0,"throttled_time":0}},"memory_stats":{"usage":12496896,"stats":{"active_anon":0,"active_file":2568192,"anon":7028736,"anon_thp":0,"file":4595712,"file_dirty":0,"file_mapped":2568192,"file_writeback":0,"inactive_anon":7163904,"inactive_file":1892352,"kernel_stack":49152,"pgactivate":0,"pgdeactivate":0,"pgfault":7062,"pglazyfree":0,"pglazyfreed":0,"pgmajfault":0,"pgrefill":0,"pgscan":0,"pgsteal":0,"shmem":0,"slab":0,"slab_reclaimable":0,"slab_unreclaimable":0,"sock":0,"thp_collapse_alloc":0,"thp_fault_alloc":0,"unevictable":0,"workingset_activate":0,"workingset_nodereclaim":0,"workingset_refault":0},"limit":15815278592},"name":"/termstream-1940bf37-63f7-45d9-9771-c18ab7f6653b-multiplexer-0","id":"d0adc747fb12b9ce2376408aed8538a0769de55aa9c239313f231d9d80402e39","networks":{"eth0":{"rx_bytes":104521,"rx_packets":1493,"rx_errors":0,"rx_dropped":0,"tx_bytes":2049375,"tx_packets":1861,"tx_errors":0,"tx_dropped":0},"eth1":{"rx_bytes":2002352,"rx_packets":1119,"rx_errors":0,"rx_dropped":0,"tx_bytes":45869,"tx_packets":643,"tx_errors":0,"tx_dropped":0}}} diff --git a/domain/types.go b/domain/types.go index 6eef2ca..8093258 100644 --- a/domain/types.go +++ b/domain/types.go @@ -1,5 +1,7 @@ package domain +import "time" + // AppState holds application state. type AppState struct { Source Source @@ -15,10 +17,18 @@ type Source struct { RTMPInternalURL string } +type DestinationState int + +const ( + DestinationStateOffAir DestinationState = iota + DestinationStateStarting + DestinationStateLive +) + // Destination is a single destination. type Destination struct { Container Container - Live bool + State DestinationState URL string } @@ -34,4 +44,6 @@ type Container struct { MemoryUsageBytes uint64 RxRate int TxRate int + RxSince time.Time + RestartCount int } diff --git a/multiplexer/integration_test.go b/multiplexer/integration_test.go index a5dc603..46d2177 100644 --- a/multiplexer/integration_test.go +++ b/multiplexer/integration_test.go @@ -33,7 +33,7 @@ func TestMultiplexer(t *testing.T) { assert.False(t, running) srv := mediaserver.StartActor(ctx, mediaserver.StartActorParams{ - RTMPPort: 1936, + RTMPPort: 19350, APIPort: 9998, FetchIngressStateInterval: 250 * time.Millisecond, ContainerClient: containerClient, @@ -65,16 +65,16 @@ func TestMultiplexer(t *testing.T) { requireListeners(t, srv, 0) - mp.ToggleDestination("rtmp://mediaserver:1935/destination/test1") - mp.ToggleDestination("rtmp://mediaserver:1935/destination/test2") - mp.ToggleDestination("rtmp://mediaserver:1935/destination/test3") + mp.ToggleDestination("rtmp://mediaserver:19350/destination/test1") + mp.ToggleDestination("rtmp://mediaserver:19350/destination/test2") + mp.ToggleDestination("rtmp://mediaserver:19350/destination/test3") requireListeners(t, srv, 3) - mp.ToggleDestination("rtmp://mediaserver:1935/destination/test3") + mp.ToggleDestination("rtmp://mediaserver:19350/destination/test3") requireListeners(t, srv, 2) - mp.ToggleDestination("rtmp://mediaserver:1935/destination/test2") - mp.ToggleDestination("rtmp://mediaserver:1935/destination/test1") + mp.ToggleDestination("rtmp://mediaserver:19350/destination/test2") + mp.ToggleDestination("rtmp://mediaserver:19350/destination/test1") requireListeners(t, srv, 0) } diff --git a/multiplexer/multiplexer.go b/multiplexer/multiplexer.go index c1e7212..3b64cb8 100644 --- a/multiplexer/multiplexer.go +++ b/multiplexer/multiplexer.go @@ -7,6 +7,7 @@ import ( "log/slog" "strconv" "sync" + "time" typescontainer "github.com/docker/docker/api/types/container" @@ -100,7 +101,8 @@ func (a *Actor) ToggleDestination(url string) { Labels: labels, }, HostConfig: &typescontainer.HostConfig{ - NetworkMode: "default", + NetworkMode: "default", + RestartPolicy: typescontainer.RestartPolicy{Name: "always"}, }, NetworkCountConfig: container.NetworkCountConfig{Rx: "eth1", Tx: "eth1"}, }) @@ -132,7 +134,16 @@ func (a *Actor) destLoop(url string, containerStateC <-chan domain.Container, er select { case containerState := <-containerStateC: state.Container = containerState - state.Live = containerState.State == "running" + + if containerState.State == "running" { + if hasElapsedSince(5*time.Second, containerState.RxSince) { + state.State = domain.DestinationStateLive + } else { + state.State = domain.DestinationStateStarting + } + } else { + state.State = domain.DestinationStateOffAir + } sendState() case err := <-errC: // TODO: error handling @@ -169,3 +180,13 @@ func (a *Actor) actorLoop() { act() } } + +// hasElapsedSince returns true if the duration has elapsed since the given +// time. If the provided time is zero, the function returns false. +func hasElapsedSince(d time.Duration, t time.Time) bool { + if t.IsZero() { + return false + } + + return d < time.Since(t) +} diff --git a/terminal/actor.go b/terminal/actor.go index 64d8b89..15702f8 100644 --- a/terminal/actor.go +++ b/terminal/actor.go @@ -179,7 +179,8 @@ func (a *Actor) redrawFromState(state domain.AppState) { for i, dest := range state.Destinations { a.destView.SetCell(i+1, 0, tview.NewTableCell(dest.URL)) - if dest.Live { + switch dest.State { + case domain.DestinationStateLive: a.destView.SetCell( i+1, 1, @@ -193,13 +194,21 @@ func (a *Actor) redrawFromState(state domain.AppState) { Background(tcell.ColorGreen), ), ) - } else { + case domain.DestinationStateStarting: + label := "starting" + if dest.Container.RestartCount > 0 { + label = fmt.Sprintf("restarting (%d)", dest.Container.RestartCount) + } + a.destView.SetCell(i+1, 1, tview.NewTableCell("[white]"+label)) + case domain.DestinationStateOffAir: a.destView.SetCell(i+1, 1, tview.NewTableCell("[white]off-air")) + default: + panic("unknown destination state") } a.destView.SetCell(i+1, 2, tview.NewTableCell("[white]"+cmp.Or(dest.Container.State, dash))) healthState := dash - if dest.Container.State == "running" { + if dest.State == domain.DestinationStateLive { healthState = "healthy" } a.destView.SetCell(i+1, 3, tview.NewTableCell("[white]"+healthState)) diff --git a/testhelpers/channel.go b/testhelpers/channel.go index 9a9ec96..fb020ce 100644 --- a/testhelpers/channel.go +++ b/testhelpers/channel.go @@ -1,6 +1,7 @@ package testhelpers import ( + "context" "log/slog" "testing" @@ -17,11 +18,19 @@ func ChanDiscard[T any](ch <-chan T) { } // ChanRequireNoError consumes a channel and asserts that no error is received. -func ChanRequireNoError(t testing.TB, ch <-chan error) { +func ChanRequireNoError(ctx context.Context, t testing.TB, ch <-chan error) { t.Helper() go func() { - require.NoError(t, <-ch) + for { + select { + case err := <-ch: + require.NoError(t, err) + return + case <-ctx.Done(): + return + } + } }() }