blob: 5f10d126347f866af9dc7c0220454cc03476a721 [file] [log] [blame]
/*
* 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;
}