簡體   English   中英

如何在Linux中獲取NIC RX環的數量

[英]How to get number of NIC RX rings in Linux

我試圖通過ETHTOOL API和命令ETHTOOL_GCHANNELS來計算我的程序中的NIC RX響應,但是程序返回錯誤:“不支持操作”。 示例代碼:

echannels.cmd = ETHTOOL_GCHANNELS;
req.ifr_data = (void*)&echannels;

    if (ioctl(sock, SIOCETHTOOL, &req) != 0)
        ERR("Can't get %s channels info! %s", nic, strerror(errno));
    else
        rx_no = echannels.rx_count;

我也嘗試從ethtool“ethtool -l eth0”獲得相同的結果:

#ethtool -l eth0
Channel parameters for eth0:
Cannot get device channel parameters
: Operation not supported

,但在/ proc / interrupts中我看到NIC有多個綁定到不同CPU核心的RX環。 有人能告訴我從C代碼獲取RX環數的正確方法嗎?

我也希望獲得我的NIC的環數。 在與一個比我更了解情況的人(他也沒有搞清楚)之后,我們達成協議,你可能需要檢查你的NIC的規格; 它似乎不是通過ethtool直接提供的東西。

但是, 這篇文章還表明,通過檢查間接表,它可以顯示RX環(但不是TX環)計數:

$ sudo ethtool -x eth0
RX flow hash indirection table for eth3 with 2 RX ring(s):
0: 0 1 0 1 0 1 0 1
8: 0 1 0 1 0 1 0 1
16: 0 1 0 1 0 1 0 1
24: 0 1 0 1 0 1 0 1

但是,在我的一台機器上,我看到:

$ sudo ethtool -x enp9s0
Cannot get RX ring count: Operation not supported

盡管NIC文檔都說:

  • “82574L支持兩個發送描述符環”
  • “圖26顯示了兩個接收描述符環的結構。”

希望-x選項或檢查NIC的文檔都會有所幫助。 它似乎不是通過ethtool始終如一地直接訪問。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM