Open
Conversation
We already get the attibutes of ifprop during getifprop() after reading /proc/net/dev, thus remove the unnecessary second getter in deviatsyst(). Signed-off-by: Fei Li <lifei.shirley@bytedance.com>
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. This patch firstly adds the needed attributes, like 'netns', for collecting and displaying network namespace statistics. Then the following patches will do the real implementation. To pass the compiling, also update for atopsar, parsable and json. Also format some lines according to astyle. Signed-off-by: Fei Li <lifei.shirley@bytedance.com>
Signed-off-by: Fei Li <lifei.shirley@bytedance.com>
For linux kernel, it exposes almost 100 lines for /proc/net/snmp6 file. Considering multiple-netns situations, too many lines had to be read and transferred, which is quite time consuming and space consuming. Let's optimize this by adding 'idx' to mark the needed indicators' position in struct v6tab. During the first time reading, e.i. the init_net namespace, we record the positions. Then in the following other netns, we only need to store and transfer indicators' values according to their positions. Signed-off-by: Fei Li <lifei.shirley@bytedance.com>
This patch implements how to 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'. Signed-off-by: Fei Li <lifei.shirley@bytedance.com>
The default rule is splitting netns by blank space. And make sure the netns path exits. Signed-off-by: Fei Li <lifei.shirley@bytedance.com>
3b76537 to
63fc86c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The network devices, like eth2, are settled in another network namespace via
ip netns addin 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
setnsto 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.