프로세스가 시작된 이후 프로세스에서 사용한 총 대역폭을 어떻게 확인할 수 있습니까?

프로세스가 시작된 이후 프로세스에서 사용한 총 대역폭을 어떻게 확인할 수 있습니까?

현재 내 서버의 일부 프로세스를 관찰하고 있으며 대역폭이 얼마나 되는지 알고 싶습니다.전체적으로 사용됨시작된 이래로. 나는 그것의 현재 사용법을 알고 싶지 않으며 nethogs/도 나에게 도움이 되지 않습니다 nload.

답변1

날 봐여기에 대답하세요.

nethog를 사용하면 다음과 같이 시작하여 MB당 총 대역폭을 모니터링할 수 있습니다.

sudo nethogs -v 3

답변2

흥미로운 질문입니다. 최소한 IP6 프로세스의 snmp 값을 볼 수 있는 것 같습니다 /proc/[pid]/net/dev_snmp6/[DEV].

ifIndex                             4
Ip6InReceives                       4
Ip6InHdrErrors                      0
Ip6InTooBigErrors                   0
Ip6InNoRoutes                       0
Ip6InAddrErrors                     0
Ip6InUnknownProtos                  0
Ip6InTruncatedPkts                  0
Ip6InDiscards                       0
Ip6InDelivers                       4
Ip6OutForwDatagrams                 0
Ip6OutRequests                      24
Ip6OutDiscards                      0
Ip6OutNoRoutes                      0
Ip6ReasmTimeout                     0
Ip6ReasmReqds                       0
Ip6ReasmOKs                         0
Ip6ReasmFails                       0
Ip6FragOKs                          0
Ip6FragFails                        0
Ip6FragCreates                      0
Ip6InMcastPkts                      2
Ip6OutMcastPkts                     34
Ip6InOctets                         618
Ip6OutOctets                        1946
Ip6InMcastOctets                    304
Ip6OutMcastOctets                   2786
Ip6InBcastOctets                    0
Ip6OutBcastOctets                   0
Ip6InNoECTPkts                      4
Ip6InECT1Pkts                       0
Ip6InECT0Pkts                       0
Ip6InCEPkts                         0
Icmp6InMsgs                         2
Icmp6InErrors                       0
Icmp6OutMsgs                        22
Icmp6OutErrors                      0
Icmp6InCsumErrors                   0
Icmp6InDestUnreachs                 0
Icmp6InPktTooBigs                   0
Icmp6InTimeExcds                    0
Icmp6InParmProblems                 0
Icmp6InEchos                        0
Icmp6InEchoReplies                  0
Icmp6InGroupMembQueries             0
Icmp6InGroupMembResponses           0
Icmp6InGroupMembReductions          0
Icmp6InRouterSolicits               0
Icmp6InRouterAdvertisements         2
Icmp6InNeighborSolicits             0
Icmp6InNeighborAdvertisements       0
Icmp6InRedirects                    0
Icmp6InMLDv2Reports                 0
Icmp6OutDestUnreachs                0
Icmp6OutPktTooBigs                  0
Icmp6OutTimeExcds                   0
Icmp6OutParmProblems                0
Icmp6OutEchos                       0
Icmp6OutEchoReplies                 0
Icmp6OutGroupMembQueries            0
Icmp6OutGroupMembResponses          0
Icmp6OutGroupMembReductions         0
Icmp6OutRouterSolicits              9
Icmp6OutRouterAdvertisements        0
Icmp6OutNeighborSolicits            3
Icmp6OutNeighborAdvertisements      0
Icmp6OutRedirects                   0
Icmp6OutMLDv2Reports                10
Icmp6InType134                      2
Icmp6OutType133                     9
Icmp6OutType135                     3
Icmp6OutType143                     10

그러나 이것은 아마도 내가 컴파일하게 된 특별한 커널 기능일 가능성이 높습니다.

cat /proc/3553/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
  eth0: 23650521  158896    0    0    0     0          0      9457   720802    4696    0    0    0     0       0          0
    lo:   53621     490    0    0    0     0          0         0    53621     490    0    0    0     0       0          0

net/dev쿼리 문서 별 /proc/[pid]. 사용된 각 인터페이스에 대한 IO 바이트를 읽을 수 있습니다.

대역폭은 프로세스의 가동 시간으로 나누어야 하며, 이는 에서 확인할 수 있습니다 clock(3). 그러나 프로세스의 시작 시간을 찾는 다른 방법이 있을 수 있습니다.

내 생각에는 이 값이 stat /proc/[pid]꽤 정확할 것이며 /proc/[pid]/stat시스템이 시작된 이후의 시계 틱 시간도 포함되어 있는 것 같습니다.

관련 정보