プロセスが開始された後、プロセスで使用された総帯域幅をどのように確認できますか?

プロセスが開始された後、プロセスで使用された総帯域幅をどのように確認できますか?

私は現在私のサーバーのいくつかのプロセスを観察しており、帯域幅がどれくらいになるかを知りたいです。全体的に使用始まって以来。私はその現在の使い方を知りたくないし、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システムが起動してからのクロックティックタイムも含まれているようです。

関連情報