The network devices, like eth2, are settled in another network namespace via ip netns add in some scenarios in the production environment. In this case, we have to switch to that new netns to get network related statistics, e.g. reading from /proc/net/dev, /proc/net/snmp, /proc/net/snmp6.
Add a 'netns' indicator to indicate which netns the network is belong to. And collect statistics for other netns by using setns to switch to another netns to read /proc files, and then use shared memory for parent-child IPC.
Combined with actual needs and performance considerations, this patch only collects other netns's physical network devices stats. Virtual devices are ignored except the 'lo'.
To pass the compiling, also update for atopsar, parsable and json.
The network devices, like eth2, are settled in another network namespace via
ip netns add
in some scenarios in the production environment. In this case, we have to switch to that new netns to get network related statistics, e.g. reading from /proc/net/dev, /proc/net/snmp, /proc/net/snmp6.Add a 'netns' indicator to indicate which netns the network is belong to. And collect statistics for other netns by using
setns
to switch to another netns to read /proc files, and then use shared memory for parent-child IPC.Combined with actual needs and performance considerations, this patch only collects other netns's physical network devices stats. Virtual devices are ignored except the 'lo'.
To pass the compiling, also update for atopsar, parsable and json.
Also format some lines according to astyle.