Demonstrations of trace_virtio_net.bt, for kylin server sp1/2/3.

Track the process of virtio_net driver sending and receiving data, 
as well as the relevant parameters of virtual queues, to facilitate 
analysis and troubleshooting, especially data transmission latency 
and packet loss issues between the host and vm.


Requirements:
1. install bpftrace or static builded bpftrace.


Example:
#./bpftrace-x86 trace_virtio_net.bt > log

6558.409260163 skb_recv_done Cpu:7
6558.409284786 virtnet_poll Cpu:7 budget:64
6558.409313169 RX Cpu:7 input.0 vring_len:256 num_free:31 num:1 Durate:24546 type:unkown seq:0 ack_seq:0 avail_flags:0 avail_idx:43981 avail_flags_shadow:1 avail_idx_shadow:43981 used_flags:0 used_idx:43756 last_used_idx:43756
6559.113272772 skb_recv_done Cpu:7
6559.113295919 virtnet_poll Cpu:7 budget:64
6559.113315402 RX Cpu:7 input.0 vring_len:256 num_free:32 num:1 Durate:16087 type:ICMP seq:0 ack_seq:0 avail_flags:0 avail_idx:43981 avail_flags_shadow:1 avail_idx_shadow:43981 used_flags:0 used_idx:43757 last_used_idx:43757
6559.113389252 TX Cpu:7 output.0 vring_len:256 num_free:255 type: seq:0 ack_seq:0 avail_flags:0 avail_idx:47135 avail_flags_shadow:0 avail_idx_shadow:47135 used_flags:0 used_idx:47134 last_used_idx:47134
6559.113449417 skb_xmit_done Cpu:3
6560.457267298 skb_recv_done Cpu:7


Parameter Explanation:
input.2: virtual queue name
vring_len: virtual queue size
num_free: virtual queue idle descriptor numbers
num: the packet seq received in each virtnet_poll polling.
Durate: the time taken to receive this data packet
type: UDP/ICMP/TCP...
seq: absolute seqs
avail_flags: vring.avail->flags
avail_idx: vring.avail->idx
avail_flags_shadow: vring_virtqueue->avail_flags_shadow
avail_idx_shadow: vring_virtqueue->avail_idx_shadow
used_flags: vring.used->flags
used_idx: vring.used->idx
last_used_idx: vring_virtqueue->last_used_idx


Issues:
1. When traffic is high, it is possible to lose track of some packets.
2. seqs of receiced ICMP packet is error.
