@@ -292,6 +292,8 @@ class PhysicalLowbarSessionTest {
292292 .put(" dnsBytes" , tracked.dnsByteCount)
293293 .put(" clientSendBytes" , tracked.clientSendByteCount)
294294 .put(" clientReceiveBytes" , tracked.clientReceiveByteCount)
295+ .put(" packQueueUsedBytes" , tracked.packQueueUsedByteCount)
296+ .put(" packQueueCapacityBytes" , tracked.packQueueCapacityByteCount)
295297 .put(" providerSendBytes" , tracked.providerSendByteCount)
296298 .put(" providerReceiveBytes" , tracked.providerReceiveByteCount)
297299 .put(" totalBytes" , tracked.totalByteCount))
@@ -339,13 +341,53 @@ class PhysicalLowbarSessionTest {
339341 .put(" goForcedGcCycles" , sample.optLong(" forced_gc" ))
340342 .put(" goroutines" , sample.optLong(" goroutines" ))
341343 .put(" poolOutstanding" , sample.optLong(" pool_outstanding" ))
344+ .put(" packetPoolOutstandingBytes" , sample.optLong(" packet_pool_outstanding_bytes" ))
345+ .put(" deviceTunEgressOutstandingBytes" , sample.optLong(" device_tun_egress_outstanding_bytes" ))
342346 .put(" poolRetainedBytes" , sample.optLong(" pool_retained_bytes" ))
347+ .put(" packetPoolRetainedBytes" , sample.optLong(" packet_pool_retained_bytes" ))
348+ .put(" largeObjectPoolRetainedBytes" , sample.optLong(" large_object_pool_retained_bytes" ))
343349 .put(" poolCapacityBytes" , sample.optLong(" pool_capacity_bytes" ))
344350 .put(" packetPressureDropCount" , sample.optLong(" packet_pressure_drops" ))
351+ .put(" packetPressureDropBytes" , sample.optLong(" packet_pressure_drop_bytes" ))
352+ .put(" packetPressureH1AckAdmitCount" , sample.optLong(" packet_pressure_h1_ack_admits" ))
353+ .put(" packetPressureAckDropCount" , sample.optLong(" packet_pressure_ack_drops" ))
354+ .put(" packetPressureOtherDropCount" , sample.optLong(" packet_pressure_other_drops" ))
345355 .put(" trackedMemoryBytes" , sample.optLong(" device_tracked_bytes" ))
356+ .put(" resendQueueUsedBytes" , sample.optLong(" resend_queue_used_bytes" ))
357+ .put(" resendQueueCapacityBytes" , sample.optLong(" resend_queue_capacity_bytes" ))
358+ .put(" receiveQueueUsedBytes" , sample.optLong(" receive_queue_used_bytes" ))
359+ .put(" receiveQueueCapacityBytes" , sample.optLong(" receive_queue_capacity_bytes" ))
360+ .put(" packQueueUsedBytes" , sample.optLong(" pack_queue_used_bytes" ))
361+ .put(" packQueueCapacityBytes" , sample.optLong(" pack_queue_capacity_bytes" ))
346362 .put(" qualityClientCount" , sample.optLong(" quality_clients" ))
347363 .put(" speedClientCount" , sample.optLong(" speed_clients" ))
348364 .put(" flowCount" , sample.optLong(" flows" ))
365+ .put(" packHandoffDropCount" , sample.optLong(" pack_handoff_drops" ))
366+ .put(" packHandoffDropBytes" , sample.optLong(" pack_handoff_drop_bytes" ))
367+ .put(" packHandoffWaitCount" , sample.optLong(" pack_handoff_waits" ))
368+ .put(" packHandoffWaitSuccessCount" , sample.optLong(" pack_handoff_wait_successes" ))
369+ .put(" packHandoffMaxCount" , sample.optLong(" pack_handoff_max_count" ))
370+ .put(" packHandoffMaxBytes" , sample.optLong(" pack_handoff_max_bytes" ))
371+ .put(" ackHandoffDropCount" , sample.optLong(" ack_handoff_drops" ))
372+ .put(" ackHandoffQueueFullDropCount" , sample.optLong(" ack_handoff_queue_full_drops" ))
373+ .put(" ackHandoffMissCount" , sample.optLong(" ack_handoff_misses" ))
374+ .put(" ackHandoffWaitCount" , sample.optLong(" ack_handoff_waits" ))
375+ .put(" ackHandoffWaitSuccessCount" , sample.optLong(" ack_handoff_wait_successes" ))
376+ .put(" ackRouteWriteCount" , sample.optLong(" ack_route_writes" ))
377+ .put(" ackRoutePriorityWriteCount" , sample.optLong(" ack_route_priority_writes" ))
378+ .put(" ackRouteWriteBlockedCount" , sample.optLong(" ack_route_write_blocks" ))
379+ .put(" ackRouteWriteErrorCount" , sample.optLong(" ack_route_write_errors" ))
380+ .put(" ackRouteWriteWaitNanos" , sample.optLong(" ack_route_write_wait_nanos" ))
381+ .put(" ackRouteWriteMaxWaitNanos" , sample.optLong(" ack_route_write_max_wait_nanos" ))
382+ .put(" initialWriteCount" , sample.optLong(" initial_writes" ))
383+ .put(" initialFrameCount" , sample.optLong(" initial_frames" ))
384+ .put(" initialMessageBytes" , sample.optLong(" initial_message_bytes" ))
385+ .put(" timeoutResendWriteCount" , sample.optLong(" timeout_resend_writes" ))
386+ .put(" carrierChangeWriteCount" , sample.optLong(" carrier_change_writes" ))
387+ .put(" selectiveGapWriteCount" , sample.optLong(" selective_gap_writes" ))
388+ .put(" ackTailProbeWriteCount" , sample.optLong(" ack_tail_probe_writes" ))
389+ .put(" cumulativeProbeWriteCount" , sample.optLong(" cumulative_probe_writes" ))
390+ .put(" recoveryWriteErrorCount" , sample.optLong(" recovery_write_errors" ))
349391 .put(" platformTransportBudgetUsedBytes" , sample.optLong(" transport_budget_used_bytes" ))
350392 .put(" platformTransportBudgetUsedCount" , sample.optLong(" transport_budget_used_count" ))
351393 .put(" platformTransportBudgetPendingH1Count" , sample.optLong(" transport_budget_pending_h1" ))
@@ -375,7 +417,16 @@ class PhysicalLowbarSessionTest {
375417 val peakAndroidPssKib = AtomicLong ()
376418 val peakGoroutines = AtomicLong ()
377419 val peakPoolOutstanding = AtomicLong ()
420+ val peakPacketPoolOutstandingBytes = AtomicLong ()
421+ val peakDeviceTunEgressOutstandingBytes = AtomicLong ()
422+ val peakPacketPoolRetainedBytes = AtomicLong ()
423+ val peakLargeObjectPoolRetainedBytes = AtomicLong ()
424+ val peakPackQueueUsedBytes = AtomicLong ()
425+ val packQueueCapacityBytes = AtomicLong ()
426+ val peakReceiveQueueUsedBytes = AtomicLong ()
427+ val receiveQueueCapacityBytes = AtomicLong ()
378428 val packetPressureDropCount = AtomicLong ()
429+ val ackRoutePriorityWriteCount = AtomicLong ()
379430
380431 fun observe (sample : JSONObject ) {
381432 count.incrementAndGet()
@@ -384,7 +435,28 @@ class PhysicalLowbarSessionTest {
384435 updateMax(peakAndroidPssKib, sample.optLong(" androidPssKib" ))
385436 updateMax(peakGoroutines, sample.optLong(" goroutines" ))
386437 updateMax(peakPoolOutstanding, sample.optLong(" poolOutstanding" ))
438+ updateMax(
439+ peakPacketPoolOutstandingBytes,
440+ sample.optLong(" packetPoolOutstandingBytes" ),
441+ )
442+ updateMax(
443+ peakDeviceTunEgressOutstandingBytes,
444+ sample.optLong(" deviceTunEgressOutstandingBytes" ),
445+ )
446+ updateMax(peakPacketPoolRetainedBytes, sample.optLong(" packetPoolRetainedBytes" ))
447+ updateMax(
448+ peakLargeObjectPoolRetainedBytes,
449+ sample.optLong(" largeObjectPoolRetainedBytes" ),
450+ )
451+ updateMax(peakPackQueueUsedBytes, sample.optLong(" packQueueUsedBytes" ))
452+ updateMax(packQueueCapacityBytes, sample.optLong(" packQueueCapacityBytes" ))
453+ updateMax(peakReceiveQueueUsedBytes, sample.optLong(" receiveQueueUsedBytes" ))
454+ updateMax(receiveQueueCapacityBytes, sample.optLong(" receiveQueueCapacityBytes" ))
387455 updateMax(packetPressureDropCount, sample.optLong(" packetPressureDropCount" ))
456+ updateMax(
457+ ackRoutePriorityWriteCount,
458+ sample.optLong(" ackRoutePriorityWriteCount" ),
459+ )
388460 if (sample.optLong(" goRuntimeBytes" ) > GO_RUNTIME_SPIKE_BYTES ) {
389461 thresholdBreaches.incrementAndGet()
390462 }
@@ -399,7 +471,16 @@ class PhysicalLowbarSessionTest {
399471 .put(" peakAndroidPssKib" , peakAndroidPssKib.get())
400472 .put(" peakGoroutines" , peakGoroutines.get())
401473 .put(" peakPoolOutstanding" , peakPoolOutstanding.get())
474+ .put(" peakPacketPoolOutstandingBytes" , peakPacketPoolOutstandingBytes.get())
475+ .put(" peakDeviceTunEgressOutstandingBytes" , peakDeviceTunEgressOutstandingBytes.get())
476+ .put(" peakPacketPoolRetainedBytes" , peakPacketPoolRetainedBytes.get())
477+ .put(" peakLargeObjectPoolRetainedBytes" , peakLargeObjectPoolRetainedBytes.get())
478+ .put(" peakPackQueueUsedBytes" , peakPackQueueUsedBytes.get())
479+ .put(" packQueueCapacityBytes" , packQueueCapacityBytes.get())
480+ .put(" peakReceiveQueueUsedBytes" , peakReceiveQueueUsedBytes.get())
481+ .put(" receiveQueueCapacityBytes" , receiveQueueCapacityBytes.get())
402482 .put(" packetPressureDropCount" , packetPressureDropCount.get())
483+ .put(" ackRoutePriorityWriteCount" , ackRoutePriorityWriteCount.get())
403484
404485 private fun updateMax (target : AtomicLong , value : Long ) {
405486 var current = target.get()
0 commit comments