diff --git a/command/ethtool.md b/command/ethtool.md index b25559054a..2cf3a4ff27 100644 --- a/command/ethtool.md +++ b/command/ethtool.md @@ -54,144 +54,75 @@ Ethtool命令显示的信息来源于网卡驱动层,即TCP/ip协议的链路 网卡驱动负责实现(部分)这些函数,并将其封装入`ethtool_ops`结构体,为网络核心层提供统一的调用接口。因此,不同的网卡驱动会给应用层返回不同的信息。`Ethtool命令选项`、`struct ethtool_ops成员函数`、`Ethtool命令显示参数的来源`,三者间的对应关系如下表所示:
| 命令选项 | -struct ethtool_ops成员函数 | - -Ethtool命令显示参数的来源(以网卡驱动BNX2为例) | - -Ethtool命令显示参数的来源(以网卡驱动BNX2为例) |
|---|---|---|
| 无 -s | -get_settingsget_wol get_msglevel get_link set_settings set_wol set_msglevel | -从网卡寄存器中获得网卡速度等信息,可配置。 | -
| -a -A | -get_pauseparam set_pauseparam | -从网卡寄存器中获得Autonegotiate/RX/TX模块的状态:on oroff,可配置。 | -
| -c -C | -get_coalesceset_coalesce | -从网卡寄存器中获得coalescing参数:TX/RX一个数据包后,推迟发生TX/RX中断的时间(us)/数据包个数。—减小该值可以提高网卡的响应时间。 当rx-usecs&rx-frames同时被设为0时,RX中断停止。 当tx-usecs&tx-frames同时被设为0时,TX中断停止。 | -
| -g -G | -get_ringparam set_ringparam | -除当前TX/RX ring的值(从网卡寄存器中读取得到,可配置)外,其它为网卡bnx2自己固定的信息。 | -
| -k -K | -get_rx_csumget_tx_csum get_sg get_tso set_rx_csum set_tx_csum set_sg set_tso | -显示信息从保存该状态的变量中读取得到,没有对应的寄存器。因此,TX/RX校验等模块一直处于on状态,实际上是无法修改的。 | -
| -i | -get_drvinfo[self_test_count, get_stats_coun,t get_regs_len, get_eeprom_len] | -网卡bnx2自己固定的信息,如: ——————————————————– driver: bnx2 version: 1.4.30 firmware-version: 1.8.0.5 bus-info: 0000:09:00.0 ——————————————————– | -
| -d | -get_drvinfoget_regs | -不支持,即bnx2中没有实现函数get_regs。 | -
| -e -E | -get_eepromset_eeprom | -不支持,即bnx2中没有实现函数get_eeprom。 | -
| -r | -nway_reset | -配置网卡MII_BMCR寄存器,重启Auto negotiation模块。 | -
| -p | -phys_id | -配置网卡BNX2_EMAC_LED寄存器,实现LED闪功能。 | -
| -t | -self_test | -通过配置网卡寄存器,逐一测试网卡的硬件模块:registers,memory,loopback,Link stat,interrupt。 | -
| -S | -get_ethtool_stats | -显示信息来源于网卡驱动中的结构体变量stats_blk。(网卡通过DMA方式,将寄存器BNX2_HC_STATISTICS _ADDR_L和BNX2_HC_STATISTICS_ADDR_H中的数据实时地读取到结构体变量struct statistics_block *stats_blk中。) —显示的数据都是从网卡寄存器中统计得到的,各项的含义需查询网卡(芯片)手册。 | -
| 命令 | -解释 | -示例 | -
|---|---|---|
| file <文件名> | -加载被调试的可执行程序文件。 -因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。 | -(gdb) file gdb-sample | -
| r | -Run的简写,运行被调试的程序。 -如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。 | -(gdb) r | -
| c | -Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。 | -(gdb) c | -
| b <行号> -b <函数名称> -b *<函数名称> -b *<代码地址> d [编号] | - -b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。 -其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。 d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。 | -(gdb) b 8 -(gdb) b main -(gdb) b *main -(gdb) b *0x804835c (gdb) d | -
| s, n | -s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数; -n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s 相当于其它调试器中的“Step Into (单步跟踪进入)”; -n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。 | -(gdb) s -(gdb) n | -
| si, ni | -si命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。 | -(gdb) si -(gdb) ni | -
| p <变量名称> | -Print的简写,显示指定变量(临时变量或全局变量)的值。 | -(gdb) p i -(gdb) p nGlobalVar | -
| display ... undisplay <编号> | -display,设置程序中断后欲显示的数据及其格式。 -例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令 -“display /i $pc” -其中 $pc 代表当前汇编指令,/i 表示以十六进行显示。当需要关心汇编代码时,此命令相当有用。 undispaly,取消先前的display设置,编号从1开始递增。 | -(gdb) display /i $pc (gdb) undisplay 1 | -
| i | -info的简写,用于显示各类信息,详情请查阅“help i”。 | -(gdb) i r | -
| q | -Quit的简写,退出GDB调试环境。 | -(gdb) q | -
| help [命令名称] | -GDB帮助命令,提供对GDB名种命令的解释说明。 -如果指定了“命令名称”参数,则显示该命令的详细说明;如果没有指定参数,则分类显示所有GDB命令,供用户进一步浏览和查询。 | -(gdb) help | -
| 事件 | -描述 | -
|---|---|
| access | -**访问** ,读取文件。 | -
| modify | -**修改** ,文件内容被修改。 | -
| attrib | -**属性** ,文件元数据被修改。 | -
| move | -**移动** ,对文件进行移动操作。 | -
| create | -**创建** ,生成新文件 | -
| open | -**打开** ,对文件进行打开操作。 | -
| close | -**关闭** ,对文件进行关闭操作。 | -
| delete | -**删除** ,文件被删除。 | -
| 标示 | -说明 | -
|---|---|
| Device | -监测设备名称 | -
| rrqm/s | -每秒需要读取需求的数量 | -
| wrqm/s | -每秒需要写入需求的数量 | -
| r/s | -每秒实际读取需求的数量 | -
| w/s | -每秒实际写入需求的数量 | -
| rsec/s | -每秒读取区段的数量 | -
| wsec/s | -每秒写入区段的数量 | -
| rkB/s | -每秒实际读取的大小,单位为KB | -
| wkB/s | -每秒实际写入的大小,单位为KB | -
| avgrq-sz | -需求的平均大小区段 | -
| avgqu-sz | -需求的平均队列长度 | -
| await | -等待I/O平均的时间(milliseconds) | -
| svctm | -I/O需求完成的平均时间 | -
| %util | -被I/O需求消耗的CPU百分比 | -
| 参数名 | -输出样式 | -说明 | -
|---|---|---|
| -t | -10:33:04 exit_group(0) | -输出结果精确到秒 | -
| -tt | -10:33:48.159682 exit_group(0) | -输出结果精确到微妙 | -
| -ttt | -1262169244.788478 exit_group(0) | -精确到微妙,而且时间表示为unix时间戳 | -