| /* |
| * Copyright (C) 2020 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| syntax = "proto2"; |
| |
| package perfetto.protos; |
| |
| message AndroidNetworkMetric { |
| message PacketStatistic { |
| // Packet count. |
| optional int64 packets = 1; |
| |
| // Packet Bytes. |
| optional int64 bytes = 2; |
| |
| // Timestamp when first packet received or transmitted. |
| optional int64 first_packet_timestamp_ns = 3; |
| |
| // Timestamp when last packet received or transmitted. |
| optional int64 last_packet_timestamp_ns = 4; |
| |
| // Interval between first & last packet. The minimum interval is 10ms. |
| optional int64 interval_ns = 5; |
| |
| // Data Speed. |
| optional double data_rate_kbps = 6; |
| } |
| |
| message CorePacketStatistic { |
| optional uint32 id = 1; |
| optional PacketStatistic packet_statistic = 2; |
| } |
| |
| message Rx { |
| // Total packets statistic. |
| optional PacketStatistic total = 1; |
| |
| // Per core packets statistic. |
| repeated CorePacketStatistic core = 2; |
| |
| // GRO aggregation ratio. |
| optional string gro_aggregation_ratio = 3; |
| } |
| |
| message Tx { |
| // Total packets statistic. |
| optional PacketStatistic total = 1; |
| |
| // Per core packets statistic. |
| repeated CorePacketStatistic core = 2; |
| } |
| |
| message NetDevice { |
| // Network device name. |
| optional string name = 1; |
| |
| // Ingress traffic statistic. |
| optional Rx rx = 2; |
| |
| // Egress traffic statistic |
| optional Tx tx = 3; |
| } |
| |
| message NetRxActionStatistic { |
| // SoftIrq NET_RX action count. |
| optional int64 count = 1; |
| |
| // SoftIrq NET_RX action was running in millisecond. |
| optional double runtime_ms = 2; |
| |
| // SoftIrq NET_RX action average running time. |
| optional double avg_runtime_ms = 3; |
| |
| // CPU megacycles (i.e. cycles divided by 1e6). |
| optional int64 mcycles = 4; |
| |
| // Average weighted CPU frequency by the time the NET_RX Action |
| // running at each frequency. |
| optional int64 avg_freq_khz = 5; |
| } |
| |
| message NetTxActionStatistic { |
| // SoftIrq NET_TX action count. |
| optional int64 count = 1; |
| |
| // SoftIrq NET_TX action was running in millisecond. |
| optional double runtime_ms = 2; |
| |
| // SoftIrq NET_TX action average running time. |
| optional double avg_runtime_ms = 3; |
| |
| // CPU megacycles (i.e. cycles divided by 1e6). |
| optional int64 mcycles = 4; |
| |
| // Average weighted CPU frequency by the time the NET_TX Action |
| // running at each frequency. |
| optional int64 avg_freq_khz = 5; |
| } |
| |
| message IpiActionStatistic { |
| // SoftIrq IPI action count. |
| optional int64 count = 1; |
| |
| // SoftIrq IPI action was running in millisecond. |
| optional double runtime_ms = 2; |
| |
| // SoftIrq IPI action average running time. |
| optional double avg_runtime_ms = 3; |
| } |
| |
| message CoreNetRxActionStatistic { |
| optional uint32 id = 1; |
| optional NetRxActionStatistic net_rx_action_statistic = 2; |
| } |
| |
| message CoreNetTxActionStatistic { |
| optional uint32 id = 1; |
| optional NetTxActionStatistic net_tx_action_statistic = 2; |
| } |
| |
| message NetRxAction { |
| // Total NET_RX action statistics. |
| optional NetRxActionStatistic total = 1; |
| |
| // Per core NET_RX action statistics. |
| repeated CoreNetRxActionStatistic core = 2; |
| |
| // The average packet time moves through the kernel stack. |
| optional double avg_interstack_latency_ms = 3; |
| } |
| |
| message NetTxAction { |
| // Total NET_TX action statistics. |
| optional NetTxActionStatistic total = 1; |
| |
| // Per core NET_TX action statistics. |
| repeated CoreNetTxActionStatistic core = 2; |
| } |
| |
| message IpiAction { |
| // Total IPI action statistics. |
| optional IpiActionStatistic total = 1; |
| } |
| |
| // Network device metrics. |
| repeated NetDevice net_devices = 1; |
| |
| // SoftIrq NET_RX action metrics. |
| optional NetRxAction net_rx_action = 2; |
| |
| // Packet retransmission rate. |
| optional double retransmission_rate = 3; |
| |
| // Kfree Skb rate (i.e. kfree_skb count divided by the packet count from all |
| // net devices). |
| optional double kfree_skb_rate = 4; |
| |
| // SoftIrq NET_TX action metrics. |
| optional NetTxAction net_tx_action = 5; |
| |
| // SoftIrq IPI action metrics. |
| optional IpiAction ipi_action = 6; |
| } |