Android TrafficStats之setThreadStatsTag()


一. stats文件
抓取/proc/net/xt_qtaguid/stats文件:

idx iface acct_tag_hex uid_tag_int cnt_set rx_bytes rx_packets tx_bytes tx_packets rx_tcp_bytes rx_tcp_packets rx_udp_bytes rx_udp_packets rx_other_bytes rx_other_packets tx_tcp_bytes tx_tcp_packets tx_udp_bytes tx_udp_packets tx_other_bytes tx_other_packets
2 wlan0 0x0 0 0 73557 400 1515 22 0 0 72801 378 756 22 364 7 213 3 938 12
3 wlan0 0x0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
4 wlan0 0x0 1000 0 2551 18 2361 18 663 11 1888 7 0 0 957 13 1404 5 0 0
5 wlan0 0x0 1000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6 wlan0 0x0 10046 0 0 0 60 1 0 0 0 0 0 0 60 1 0 0 0 0
7 wlan0 0x0 10046 1 0 0 1140 19 0 0 0 0 0 0 1140 19 0 0 0 0
8 p2p0 0x0 0 0 0 0 216 3 0 0 0 0 0 0 0 0 0 0 216 3
9 p2p0 0x0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
10 lo 0x0 0 0 965652 963 18720 330 961572 915 1704 24 2376 24 14640 282 1704 24 2376 24
11 lo 0x0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
12 lo 0x0 10046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
13 lo 0x0 10046 1 2324364 4369 3271296 5002 2324364 4369 0 0 0 0 3271296 5002 0 0 0 0
14 lo 0x4200000000 10046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
15 lo 0x4200000000 10046 1 120016 2308 3164120 2942 120016 2308 0 0 0 0 3164120 2942 0 0 0 0
16 lo 0x4300000000 10046 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
17 lo 0x4300000000 10046 1 2201600 2048 106392 2046 2201600 2048 0 0 0 0 106392 2046 0 0 0 0

iface指端口,acct_tag_hex是指TrafficStats为统计特别socket而下设的tag。上面数据的最后四项中的0x42,0x43就是我们设下去的tag。
uid_tag_int是指app的UID,例如最后的10046,就表示这应用的uid。
cnt_set指前后台。

二. 对socket设置tag
为了统计线程中某个socket的数据流量,可以通过下面的方法进行:
TrafficStats.setThreadStatsTag(int tag);
TrafficStats .tagSocket(sockt outputSocket);
// Transfer data using socket
TrafficStats.untagSocket(socket outputSocket);

setThreadStatsTag()后面要使用tagSocket(),否则是无效的。

三. 调用流程
SetThreadStatsTag()和tagSocket()的调用流程如下:

需要注意的是setThreadStatsTag()最终只是设置了tag到NetworkManagementSocketTagger里,需要调用tagSocket()把socket设置下去,最终触发tag,把socket和tag设置到kernel里。
最终调用到kernel xt_qtaguid.c的ctrl_cmd_tag()里,这里的命令是“t”。
同时有命令“u”,untag。“s”,counter_set。“d”,delete。

四. 总结
在xt_qtaguid里还有对/proc/net/xt_qtaguid/iface_stat_all,iface_stat_fmt文件的操作。iface_stat_all仅简单包含所有的数据流量统计。iface_stat_fmt是按照一定格式整理的。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值