17.13. 統(tǒng)計信息

2018-02-24 15:50 更新

17.13.?統(tǒng)計信息

驅(qū)動需要的最后一個方法是 get_stats. 這個方法返回一個指向給設(shè)備的統(tǒng)計的指針. 它的實現(xiàn)非常簡單; 展示過的這個即便在幾個接口由同一個驅(qū)動管理時都好用, 因為統(tǒng)計量駐留于設(shè)備數(shù)據(jù)結(jié)構(gòu)內(nèi)部.


struct net_device_stats *snull_stats(struct net_device *dev)
{
    struct snull_priv *priv = netdev_priv(dev);
    return &priv->stats;
}

需要返回有意義統(tǒng)計的真正工作是分布在整個驅(qū)動中的, 有各種成員量被更新. 下列列表展示了最有趣的結(jié)構(gòu) net_device_stats 中的成員:

unsigned long rx_packets;unsigned long tx_packets;
接口成功傳送的進入和出去報文的總和.

unsigned long rx_bytes;unsigned long tx_bytes;
接口接收和發(fā)送的字節(jié)數(shù).

unsigned long rx_errors;unsigned long tx_errors;
接收和發(fā)送的錯誤數(shù). 報文發(fā)送可能出錯的事情是沒有結(jié)束的, net_device_stats 結(jié)構(gòu)包括 6 個計數(shù)器給特定的接收錯誤以及有 5 個給發(fā)送錯誤. 完整列表看 <<linux/netdevice.h>. 如果可能, 你的驅(qū)動調(diào)用維護詳細的錯誤統(tǒng)計, 因為它們是對系統(tǒng)管理員試圖追蹤問題的最大幫助.

unsigned long rx_dropped;unsigned long tx_dropped;
在接收和發(fā)送中丟失的報文數(shù)目. 當(dāng)沒有可用內(nèi)存給報文數(shù)據(jù)時丟棄報文. tx_dropped 極少使用.

unsigned long collisions;
由于介質(zhì)擁塞引起的沖突數(shù)目.

unsigned long multicast;
收到的多播報文數(shù)目.

值得重復(fù)一下, get_stats 方法可以在任何時候調(diào)用 -- 即便在接口關(guān)閉時 -- 因此只要 net_device 結(jié)構(gòu)存在驅(qū)動必須保持統(tǒng)計信息.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號