跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:网络接口和网络虚拟化 Oracle Solaris 11 Information Library (简体中文) |
本节介绍了为了提高物理网络或虚拟网络的网络性能,您可以设置的选定链路属性。
在 NIC 上,接收 (Rx) 环和传送 (Tx) 环是硬件资源,系统分别通过它们来接收和传送网络数据包。以下各节提供环的概述,然后介绍用于为网络处理分配环的过程。还提供了示例,显示在发出命令以分配环时的工作原理。
MAC 客户端(如 VNIC)和其他数据链路是在 NIC 上配置的,用于支持系统与其他网络节点之间的通信。配置客户端后,它同时使用 Rx 和 Tx 环来分别接收或传送网络数据包。MAC 客户端可以是基于硬件的或基于软件的。基于硬件的客户端需要满足以下任一条件:
有一个或多个专用 Rx 环。
有一个或多个专用 Tx 环。
有一个或多个专用 Rx 环和一个或多个专用 Tx 环。
不能满足上述任一条件的客户端称为基于软件的 MAC 客户端。
根据具体的 NIC,可以为基于硬件的客户端指定专用环。一些 NIC(如 nxge)支持动态环分配。在此类 NIC 上,您不仅可以配置基于硬件的客户端,还可以灵活地确定要分配给此类客户端的环的数量(假定环仍可供分配)。环的使用始终针对主接口进行优化,例如 nxge0。主接口也称为主客户端。任何尚未被其他客户端指定为可用的专用环会自动指定给主接口。
其他 NIC(如 ixge)仅支持静态环分配。对于这些 NIC,您只能创建基于硬件的客户端。这些客户端会自动配置为每个客户端有一组固定的环。NIC 驱动程序的初始配置过程中会确定固定的环组。有关静态环分配的驱动程序初始配置的更多信息,请参阅《Oracle Solaris 可调参数参考手册》。
使用 VLAN 时,环的分配情况视 VLAN 的创建方式而异。VLAN 通过以下两种方式之一创建:
使用 dladm create-vlan 子命令:
# dladm create-vlan -l link -v VID vlan
使用 dladm create-vnic 子命令:
# dladm create-vnic -l link -v VID vnic
使用 dladm create-vlan 子命令创建的 VLAN 与底层接口共享相同的 MAC 地址。因此,该 VLAN 还共享底层接口的 Rx 和 Tx 环。对于使用 dladm create-vnic 命令作为 VNIC 创建的 VLAN,其 MAC 地址与底层接口的不同。这种 VLAN 的环分配独立于底层链路的分配。因此,可以对该 VLAN 指定它自己的专用环(假定 NIC 支持基于硬件的客户端)。
要管理环,可以通过使用 dladm 命令设置两个环属性:
rxrings 指分配给指定链路的 Rx 环的数量。
txrings 指分配给指定链路的 Tx 环的数量。
可以将每个属性设置为三个可能的值之一:
sw 指示您正在配置基于软件的客户端。客户端没有专用环。相反,客户端与类似配置的任何其他现有客户端共享环。
n > 0(数大于零)仅适用于基于硬件的客户端的配置。数字指分配给客户端的专用环的数量。仅当底层 NIC 支持动态环分配时,才可以指定数量。
hw 也适用于基于硬件的客户端的配置。然而,对于这种客户端,不能指定专用环的实际数量。相反,根据 NIC 驱动程序的初始配置,已经为每个客户端设置固定的环数。如果底层 NIC 仅支持静态环分配,则将 *rings 属性设置为 hw。
要提供有关当前环的指定和使用的信息,可以使用以下附加的只读环属性:
rxrings-available 和 txrings-available 指可供分配的 Rx 和 Tx 环的数量。
rxhwclnt-available 和 txhwclnt-available 指在 NIC 上可配置的 Rx 和 Tx 基于硬件的客户端的数量。
在配置基于硬件的客户端之前,您必须知道系统中 NIC 的环分配功能。要获得所需的信息,请使用以下命令:
# dladm show-linkprop link
其中 link 指您的特定 NIC 的数据链路。
要显示特定属性,请使用以下命令:
# dladm show-linkprop -p property[,property,...] link
要正确配置基于硬件的客户端,必须确定以下事项:
NIC 是否支持基于硬件的客户端
命令输出中的 rxrings 和 txrings 属性指示 NIC 是否支持基于硬件的客户端。从这些数据,您还可以确定 NIC 所支持的环分配的类型。
要分配给基于硬件的客户端的环的可用性
命令输出中的 rxrings-available 和 txrings-available 属性指示可分配给基于硬件的客户端的可用 Rx 环和 Tx 环。
您可以在链路上配置的基于硬件的客户端的可用性
环是按组来分配的。可用环的数量和可以使用专用环的客户端的数量之间不存在一对一的对应关系。因此,要分配环,您不仅必须检查环的可用性,还要检查仍可配置为使用专用环的其他基于硬件的客户端的数量。仅当环和基于硬件的客户端都可用时,您才可以分配环。
命令输出中的 rxhwclnt-available 和 txhwclnt-available 属性显示您可以配置的可使用专用 Rx 和 Tx 环的基于硬件的客户端数量。
如果 NIC 支持环分配并且环和基于硬件的客户端可用,则您可以在系统上配置这种类型的客户端,如如何配置基于硬件的客户端中所述。另外,您也可以配置基于软件的客户端,如如何创建基于软件的客户端中所述。
以下示例显示了为 nxge NIC、ixgbe NIC 和 e1000g NIC 的与环相关的链路属性显示的不同信息。
示例 21-1 nxge NIC 环信息
以下示例显示 nxge NIC 的环信息。
# dladm show-linkprop nxge0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... nxge0 rxrings rw -- -- sw,<1-7> ... nxge0 txrings rw -- -- sw,<1-7> ... nxge0 rxrings-available r- 5 -- -- nxge0 txrings-available r- 5 -- -- nxge0 rxhwclnt-available r- 2 -- -- nxge0 txhwclnt-available r- 2 -- -- ...
POSSIBLE 字段将 sw 和 <1-7> 列为 rxrings 和 txrings 属性的可接受值。这些值指示 nxge 支持基于硬件的客户端以及基于软件的客户端。范围 <1-7> 指示您设置的 Rx 环或 Tx 环的数量必须在指定范围内。您也可以从该范围推断出 NIC 支持动态环分配同时用于接收端和传送端。
此外,*rings-available 属性指示有五个 Rx 环和五个 Tx 环可分配给基于硬件的客户端。
然而,根据 *clnt-available 属性,您只能配置两个具有可用的专用 Rx 环的客户端。同样,您只能配置两个具有可用的专用 Tx 环的客户端。
示例 21-2 ixgbe NIC 环信息
以下示例显示 ixgbe NIC 的环信息。
# dladm show-linkprop ixgbe0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... ixgbe0 rxrings rw -- -- sw,hw ... ixgbe0 txrings rw -- -- sw,hw,<1-7> ... ixgbe0 rxrings-available r- 0 -- -- ixgbe0 txrings-available r- 5 -- -- ixgbe0 rxhwclnt-available r- 0 -- -- ixgbe0 txhwclnt-available r- 7 -- -- ...
rxrings 和 txrings 属性的 POSSIBLE 字段指示基于硬件的客户端和基于软件的客户端都可以在 ixgbe0 上配置。仅对 Rx 环支持静态环分配,其中硬件将一组固定的 Rx 环指定给每个基于硬件的客户端。但是,您可以动态分配 Tx 环,这意味着您可以确定要指定给基于硬件的客户端的 Tx 环的数量(在本示例中,最多七个环)。
此外,*rings-available 属性指示有五个 Tx 环可分配给基于硬件的客户端,但没有可指定的 Rx 环。
最后,根据 *hwclnt-available 属性,您可以配置七个基于硬件的 Tx 客户端专用 Tx 环。但是,在 ixgbe 卡中不支持动态 Rx 环分配。因此,您无法创建一个具有一组指定的专用 Rx 环的基于硬件的客户端。
任一 *rings-available 属性的 VALUE 字段下的零 (0) 表示以下各项之一:
再没有环可分配给客户端。
不支持动态环分配。
您可以通过将 rxrings 和 txrings 的 POSSIBLE 字段与 rxrings-available 和 txrings-available 的 VALUE 字段进行比较来验证零的含义。
例如,假定 txrings-available 为 0,如下所示:
# dladm show-linkprop ixgbe0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... ixgbe0 rxrings rw -- -- sw,hw ixgbe0 txrings rw -- -- sw,hw,<1-7> ixgbe0 rxrings-available r- 0 -- -- ixgbe0 txrings-available r- 0 -- -- ...
在此输出中,rxrings-available 的 VALUE 字段为 0,而 rxrings 的 POSSIBLE 字段为 sw,hw。这些信息结合起来,意味着由于 NIC 不支持动态环分配而没有可用的 Rx 环。在传送端,txrings-available 的 VALUE 字段为 0,而 txrings 的 POSSIBLE 字段为 sw,hw,<1-7>。这些信息结合起来,表示由于所有 Tx 环均已分配而没有可用的 Tx 环。但是,txrings 的 POSSIBLE 字段表示支持动态环分配。因此,您可以在 Tx 环变得可用时分配这些环。
示例 21-3 e1000g NIC 环信息
以下示例显示 e1000g NIC 的环信息。
# dladm show-linkprop e1000g0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... e1000g0 rxrings rw -- -- -- ... e1000g0 txrings rw -- -- -- ... e1000g0 rxrings-available r- 0 -- -- e1000g0 txrings-available r- 0 -- -- e1000g0 rxhwclnt-available r- 0 -- -- e1000g0 txhwclnt-available r- 0 -- -- ...
输出指示环和基于硬件的客户端均无法配置,因为 e1000g NIC 中不支持环分配。
此过程显示如何在支持动态环分配的 NIC 上或在支持静态环分配的 NIC 上配置基于硬件的客户端。
开始之前
确保您获得了关于系统上 NIC 的以下信息:
NIC 是否支持基于硬件的客户端
NIC 支持的环分配的类型
要分配给基于硬件的客户端的环的可用性
您可以在链路上配置的基于硬件的客户端的可用性
要获取信息,请参阅准备配置基于硬件的客户端。
如果 NIC 支持动态环分配,请使用以下语法:
# dladm create-vnic -p rxrings=number[,txrings=number] -l link vnic
指分配给客户端的 Rx 环和 Tx 环的数量。该数量必须在可供分配的环的数量范围内。
注 - 一些 NIC 支持 Rx 环或 Tx 环上的动态分配,但不同时支持这两种类型。您在支持动态环分配的环类型上指定 number。
指您在其上创建客户端的数据链路。
指您所配置的客户端。
如果 NIC 支持静态环分配,请使用以下语法:
# dladm create-vnic -p rxrings=hw[,txrings=hw] -l link vnic
注 - 一些 NIC 支持 Rx 环或 Tx 环上的静态分配,但不同时支持这两种类型。您在支持静态环分配的环类型上指定 hw。
# dladm show-linkprop vnic
基于软件的客户端没有专用环。相反,该客户端与其他现有的基于软件的客户端共享具有主客户端或接口的环的使用。基于软件的客户端的环数量取决于现有的基于硬件的客户端数量。
要创建新的基于软件的客户端,请键入以下命令:
# dladm create-vnic -p rxrings=sw[,txrings=sw] -l link vnic
指您在其上创建客户端的数据链路。
指您所配置的客户端。
要配置现有的客户端以与其他客户端共享环,请键入以下命令:
# dladm set-linkprop -p rxrings=sw[,txrings=sw] vnic
示例 21-4 配置基于硬件的客户端和基于软件的客户端
本示例说明如何在具有 ixgbe NIC 的系统上同时配置基于硬件的客户端和基于软件的客户端。为了说明如何实现环分配,该示例分为几个部分。在配置过程的每个步骤,显示和解释与环相关的信息。配置过程如下所示:
在配置客户端之前,显示系统上的链路和环使用情况。
配置主客户端。
配置基于软件的客户端。
配置另一个没有任何专用环的客户端。
为新配置的客户端静态分配环。
使用动态分配的专用环配置第三个客户端。
首先,显示链路、环使用情况和与环相关的属性。
# dladm show-link LINK CLASS MTU STATE BRIDGE OVER ixgbe0 phys 1500 down -- -- # dladm show-phys -H ixgbe0 LINK RINGTYPE RINGS CLIENTS ixgbe0 RX 0-1 <default,mcast> ixgbe0 TX 0-7 <default> ixgbe0 RX 2-3 -- ixgbe0 RX 4-5 -- ixgbe0 RX 6-7 -- # dladm show-linkprop ixgbe0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... ixgbe0 rxrings rw -- -- sw,hw ixgbe0 rxrings-effective r -- -- -- ixgbe0 txrings rw -- -- sw,hw,<1-7> ixgbe0 txrings-effective r -- -- -- ixgbe0 txrings-available r- 7 -- -- ixgbe0 rxrings-available r- 0 -- -- ixgbe0 rxhwclnt-available r- 3 -- -- ixgbe0 txhwclnt-available r- 7 -- -- ...
命令输出显示系统上的单个链路 ixgbe0,但没有现有的客户端。此外,此输出还包含以下信息:
NIC 有八个 Rx 环和八个 Tx 环(环 0 到 7)。
对于基于硬件的客户端,Rx 环仅支持静态环分配,而 Tx 环同时支持静态和动态环分配。
可以为 Rx 环和 Tx 环配置基于软件的客户端。
七个 Tx 环(1 到 7)可用于动态分配给其他客户端(环 0 通常为主客户端保留)。由于 Rx 环不支持动态环分配,所有没有可用的 Rx 环。
可以将三个基于硬件的客户端配置为使用 Rx 环,而将七个基于硬件的客户端配置为使用 Tx 环。
有关 *rings-effective 属性的解释,请参见如何确定静态环分配中的环指定。
接下来,配置主客户端。
# ipadm create-ip ixgbe0 # ipadm create-addr -T static -a 192.168.10.10/24 ixgbe0/v4 # dladm show-phys -H ixgbe0 LINK RINGTYPE RINGS CLIENTS ixgbe0 RX 0-1 <default,mcast> ixgbe0 TX 0-7 <default>ixgbe0 ixgbe0 RX 2-3 ixgbe0 ixgbe0 RX 4-5 -- ixgbe0 RX 6-7 -- # dladm show-linkprop ixgbe0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... ixgbe0 rxrings rw -- -- sw,hw ixgbe0 rxrings-effective r 2 -- -- ixgbe0 txrings rw -- -- sw,hw,<1-7> ixgbe0 txrings-effective r 8 -- -- ixgbe0 txrings-available r- 7 -- -- ixgbe0 rxrings-available r- 0 -- -- ixgbe0 rxhwclnt-available r- 3 -- -- ixgbe0 txhwclnt-available r- 7 -- -- ...
输出提供以下信息:
ixgbe0,即主客户端,自动接收两个 Rx 环(环 2 和 3)为专用环。然而,ixgbe0 使用所有 Tx 环。缺省情况下,所有未使用的环会自动指定给主客户端。
可以分配给其他客户端的可用 Tx 环数量仍为七个。
可使用 Rx 环配置的可用的基于硬件的客户端数量仍为三个。可使用 Tx 环动态配置的可用的基于硬件的客户端数量仍为七个。
接下来,将一个 VNIC 创建为基于软件的客户端。
# dladm create-vnic -l ixgbe0 -p rxrings=sw,txrings=sw vnic0 # dladm show-phys -H ixgbe0 LINK RINGTYPE RINGS CLIENTS ixgbe0 RX 0-1 <default,mcast>,vnic0 ixgbe0 TX 0-7 <default>vnic0,ixgbe0 ixgbe0 RX 2-3 ixgbe0 ixgbe0 RX 4-5 -- ixgbe0 RX 6-7 -- # dladm show-linkprop vnic0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... vnic0 rxrings rw sw -- sw,hw ... vnic0 txrings rw sw -- sw,hw,<1-7> ... # dladm show-linkprop ixgbe0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... ixgbe0 rxrings rw -- -- -- ixgbe0 rxrings-effective r 2 -- -- ixgbe0 txrings rw -- -- sw,hw,<1-7> ixgbe0 txrings-effective r -- -- -- ixgbe0 txrings-available r- 7 -- -- ixgbe0 rxrings-available r- 0 -- -- ixgbe0 rxhwclnt-available r- 3 -- -- ixgbe0 txhwclnt-available r- 7 -- -- ...
输出提供以下信息:
作为基于软件的客户端,vnic0 被自动指定为使用 Rx 环 0 和 1。缺省情况下,随后创建的具有 Rx 环的其他基于软件的客户端将被指定为使用这一对环。缺省情况下,vnic0 也被指定为使用所有八个 Tx 环(环 0 到 7)。缺省情况下,随后创建的具有 Tx 环的其他基于软件的客户端将被指定为使用这一组环。
作为基于软件的客户端,vnic0 的 rxrings 和 txrings 属性相应地设置为 sw。
没有指定 Tx 环。因此,可分配给其他客户端的可用 Tx 环的数量仍为七个。
可使用 Rx 环配置的可用的基于硬件的客户端数量仍为三个。可使用 Tx 环配置的可用的基于硬件的客户端数量仍为七个。
接下来,配置另一个客户端而不使用任何环分配。
# dladm create-vnic -l ixgbe0 vnic1 # dladm show-phys -H ixgbe0 LINK RINGTYPE RINGS CLIENTS ixgbe0 RX 0-1 <default,mcast>,vnic0 ixgbe0 TX 0,2-7 <default>vnic0,ixgbe0 ixgbe0 RX 2-3 ixgbe0 ixgbe0 RX 4-5 vnic1 ixgbe0 RX 6-7 -- ixgbe0 TX 1 vnic1 # dladm show-linkprop vnic1 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... vnic1 rxrings rw -- -- sw,hw vnic1 rxrings-effective r- 2 -- -- vnic1 txrings rw -- -- sw,hw,<1-7> vnic1 txrings-effective r- -- -- -- ... # dladm show-linkprop ixgbe0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... ixgbe0 rxrings rw -- -- sw,hw ixgbe0 rxrings-effective r- 2 -- -- ixgbe0 txrings rw -- -- sw,hw,<1-7> ixgbe0 txrings-effective r- -- -- -- ixgbe0 txrings-available r- 7 -- -- ixgbe0 rxrings-available r- 0 -- -- ixgbe0 rxhwclnt-available r- 3 -- -- ixgbe0 txhwclnt-available r- 7 -- -- ...
输出提供以下信息:
如果支持环分配,则配置的客户端被视为基于硬件的客户端,即使未设置 rxrings 和 txrings 属性。因此,vnic1 自动接收两个专用的 Rx 环(环 4 和 5)供其使用。同样,vnic1 也接收一个专用的 Tx 环(环 1)。
在八个 Tx 环中,ixgbe0 和 vnic0 现在共享七个环(环 0 和环 2 到 7)。环 1 已成为 vnic1 的专用 Tx 环。
没有指定 Tx 环。因此,可分配给其他客户端的可用 Tx 环的数量仍为七个。
可使用 Rx 环配置的可用的基于硬件的客户端数量仍为三个。可使用 Tx 环配置的可用的基于硬件的客户端数量仍为七个。
接下来,将环静态分配给新配置的客户端 vnic1。
# dladm set-linkprop -p rxrings=hw,txrings=hw vnic1 # dladm show-phys -H ixgbe0 LINK RINGTYPE RINGS CLIENTS ixgbe0 RX 0-1 <default,mcast>,vnic0 ixgbe0 TX 0,2-7 <default>vnic0,ixgbe0 ixgbe0 RX 2-3 ixgbe0 ixgbe0 RX 4-5 vnic1 ixgbe0 RX 6-7 -- ixgbe0 TX 1 vnic1 # dladm show-linkprop vnic1 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... vnic1 rxrings rw hw -- sw,hw vnic1 rxrings-effective r- 2 -- -- vnic1 txrings rw hw -- sw,hw,<1-7> vnic1 txrings-effective r- -- -- -- ... # dladm show-linkprop ixgbe0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... ixgbe0 rxrings rw -- -- sw,hw ixgbe0 rxrings-effective r- 2 -- -- ixgbe0 txrings rw -- -- sw,hw,<1-7> ixgbe0 txrings-effective r- -- -- -- ixgbe0 txrings-available r- 6 -- -- ixgbe0 rxrings-available r- 0 -- -- ixgbe0 rxhwclnt-available r- 3 -- -- ixgbe0 txhwclnt-available r- 6 -- -- ...
输出提供以下信息:
vnic1 的 Rx 和 Tx 环的分发情况仍与创建 vnic1 后但没有环分配时相同。
同样,环信息仍与创建 vnic1 后但没有环分配时相同。
vnic1 的 rxrings 和 txrings 属性已显式设置为 hw。因此,可用于动态分配的 Tx 环的数量减少为六个。同样,可配置的可用的基于硬件的客户端数量减少为六个。
接下来,使用动态分配的 Tx 环配置基于硬件的客户端。
# dladm create-vnic -l ixgbe0 -p txrings=2 vnic2 # dladm show-phys -H ixgbe0 LINK RINGTYPE RINGS CLIENTS ixgbe0 RX 0-1 <default,mcast>,vnic0 ixgbe0 TX 0,4-7 <default>vnic0,ixgbe0 ixgbe0 RX 2-3 ixgbe0 ixgbe0 RX 4-5 vnic1 ixgbe0 RX 6-7 vnic2 ixgbe0 TX 1 vnic1 ixgbe0 TX 2-3 vnic2 # dladm show-linkprop vnic2 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... vnic2 rxrings rw -- -- sw,hw vnic2 rxrings-effective r- 2 -- -- vnic2 txrings rw 2 -- sw,hw,<1-7> vnic2 txrings-effective r- 2 -- -- ... # dladm show-linkprop ixgbe0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... ixgbe0 rxrings rw -- -- sw,hw ixgbe0 rxrings-effective r- 2 -- -- ixgbe0 txrings rw -- -- sw,hw,<1-7> ixgbe0 txrings-effective r- -- -- -- ixgbe0 txrings-available r- 4 -- -- ixgbe0 rxrings-available r- 0 -- -- ixgbe0 rxhwclnt-available r- 3 -- -- ixgbe0 txhwclnt-available r- 5 -- -- ...
输出提供以下信息:
硬件自动将一对 Rx 环(环 6 和 7)指定为 vnic2 的专用环。然而,vnic2 的两个专用 Tx 环(环 2 和 3)已由管理员指定。
由于管理员已经将两个 Tx 环分配给 vnic2,可供分配给其他客户端的可用 Tx 环的数量已减少到四个。
由于 vnic2 被配置为具有两个 Tx 环的基于硬件的客户端,可配置的可用客户端的数量已减少到五个。
使用静态环分配配置基于硬件的客户端时,硬件确定要指定的环的数量。然而,rxrings 和 txrings 属性设置为 hw,并不指示实际分配的环的数量。相反,可以通过检查 rxrings-effective 和 txrings-effective 属性获得该数量。
要使用静态环分配创建客户端,请键入以下命令:
# dladm create-vnic -l link -p rxrings=hw[,txrings=hw] vnic
指您在其上创建客户端的数据链路。
指您所配置的客户端。
要将环静态分配给现有的客户端,请键入以下命令:
# dladm set-linkprop -p rxrings=hw[,txrings=hw] vnic
# dladm show-linkprop link
其中 link 指基于硬件的客户端或 VNIC。
例如,如果您静态分配了 Rx 环,检查 rxrings-effective 属性。如果您静态分配了 Tx 环,检查 txrings-effective 属性。数字指示由硬件分配的环的数量。
# dladm show-phys -H link
其中 link 指主客户端。
示例 21-5 确定静态分配的环
本示例显示 Rx 环如何静态分配给在 ixgbe NIC 上配置的客户端。在此类 NIC 上,仅支持静态分配 Rx 环。本示例的过程如下所示:
显示系统上的链路。在本示例中,系统只有一个链路,即 ixgbe0。
将 vnic1 创建为具有静态分配的 Rx 环的基于硬件的客户端。
显示环信息以了解硬件所分配的环的数量。
显示环使用情况以确定已分配哪些环。
# dladm show-link LINK CLASS MTU STATE BRIDGE OVER ixgbe0 phys 1500 down -- -- # dladm create-vnic -l ixgbe0 -p rxrings=hw vnic1 # dladm show-linkprop vnic1 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE ... vnic1 rxrings rw hw -- sw,hw vnic1 rxrings-effective r- 2 -- -- vnic1 txrings rw -- -- sw,hw,<1-7> vnic1 txrings-effective r- -- -- -- # dladm show-phys -H ixgbe0 LINK RINGTYPE RINGS CLIENTS ixgbe0 RX 0-1 <default,mcast> ixgbe0 TX 0,2-7 <default> ixgbe0 RX 2-3 vnic1 ixgbe0 RX 4-5 -- ixgbe0 RX 6-7 -- ixgbe0 TX 1 vnic1 ...
输出指示在使用 Rx 环配置 vnic1 后硬件分配了两个专用的 Rx 环,由 rxrings-effective 属性反映。根据 dladm show-phys -H 命令的输出,Rx 环 2 和 3 是 vnic1 的专用环。
将 vnic1 配置为客户端后,它还会自动接收 Tx 环 1 作为其专用环。但是,txrings-effective 属性不显示值,因为未显式设置 txrings 属性。
pool 是一个链路属性,它使您能够将网络处理绑定到 CPU 池。使用此属性,您可以更好地整合区域中的网络资源管理与 CPU 绑定和管理。在 Oracle Solaris 中,区域管理包括使用 zonecfg 或 poolcfg 命令绑定非网络处理与 CPU 资源池。要绑定该相同的资源池以便同时管理网络处理,您使用 dladm set-linkprop 命令来配置链路的 pool 属性。然后您将该链路指定给该区域。
通过设置链路的 pool 属性并将该链路指定为区域的网络接口,该链路将同时绑定到一个区域的池。如果该区域被设置为专用区域,则未指定给该区域的其他数据链路不再能够使用池中的 CPU 资源。
注 - 可以设置一个单独的属性 cpu 来将特定 CPU 指定给数据链路。cpu 和 pool 这两个属性是互斥的。您不能为给定数据链路同时设置这两个属性。要通过使用 cpu 属性将 CPU 资源指定给数据链路,请参见如何将 CPU 分配给链路。
关于区域内池的更多信息,请参见《Oracle Solaris 管理:Oracle Solaris Zones、Oracle Solaris 10 Zones 和资源管理》中的第 13 章 "创建和管理资源池(任务)"。有关创建池和将 CPU 集指定给池的更多信息,请参阅 poolcfg(1M) 手册页。
下图显示将 pool 属性指定给数据链路时池的工作原理。
图 21-1 指定给一个区域的 VNIC 的 pool 属性
在图中,系统有八个 CPU。如果系统上没有配置池,则所有 CPU 都属于缺省池并由全局区域使用。不过,在本示例中,已创建 pool99 池,其中包含 CPU 3 和 CPU 4。该池与专用区域 zone1 相关联。如果 pool99 被设置为 vnic1 的一个属性,则 pool99 变为专用于管理 vnic1 的网络处理。在将 vnic1 指定为 zone1 的网络接口后,pool99 中的 CPU 将被保留,专用于管理 zone1 的网络处理和非网络处理。
pool 属性在本质上是动态的。可以使用一个 CPU 范围配置区域池,内核确定将哪些 CPU 指定给该池的 CPU 集。对池的更改会自动针对数据链路实现,从而简化了该链路的池管理。相反,通过使用 cpu 属性将特定 CPU 指定给链路会要求您指定要分配的 CPU。每次要更改池的 CPU 组成时,您必须设置 cpu 属性。
例如,假定在图 21-1所示的系统中,使 CPU 4 处于脱机状态。由于 pool 属性是动态的,软件会自动将另一个 CPU 与池相关联。因此,会保留池的两个 CPU 的初始配置。对于 vnic1,该变化是透明的。调整后的配置如下图所示。
图 21-2 pool 属性的自动重新配置
与另一个池相关的属性显示有关数据链路的 CPU 使用或 CPU 池的信息。这些属性是只读属性,不能由管理员设置。
pool-effective 显示正用于网络处理的池。
cpus-effective 显示正用于网络处理的 CPU 的列表。
为了管理区域的 CPU 资源,设置数据链路的 pool 属性通常不作为初始步骤执行。更常见的是使用命令(如 zonecfg 和 poolcfg)将区域配置为使用资源池。cpu 和 pool 链路属性本身并未设置。在这种情况下,当引导区域时,会根据这些区域配置自动设置这些数据链路的 pool-effective 和 cpus-effective 属性。缺省池显示在 pool-effective 下,同时由系统选择 cpus-effective 的值。因此,如果您使用 dladm show-linkprop 命令,则 pool 和 cpu 属性将为空,而 pool-effective 和 cpus-effective 属性将包含值。
要为网络处理绑定区域的 CPU 池,您还可以直接设置数据链路的 pool 和 cpu 属性。配置这些属性后,它们的值也会反映在 pool-effective 和 cpus-effective 属性中。但是请注意,通常不使用此替代步骤来管理区域的网络资源。
与其他链路属性一样,数据链路的 pool 属性可以在创建链路时设置,也可以稍后在链路需要进一步配置时设置。例如:
# dladm create-vnic -p pool=pool-name -l link vnic
在您创建 VNIC 时设置 pool 属性。要设置现有 VNIC 的 pool 属性,使用以下语法:
# dladm setlinkprop -p pool=pool-name vnic
以下过程提供了为 VNIC 配置 CPU 池的步骤。
开始之前
您必须完成以下事项:
使用为其指定的 CPU 数量创建一个处理器集。
创建一个将与处理器集相关联的池。
将池与处理器集相关联。
注 - 有关完成这些先决条件的说明,请参见《Oracle Solaris 管理:Oracle Solaris Zones、Oracle Solaris 10 Zones 和资源管理》中的"如何修改配置"
如果尚未创建 VNIC,使用以下语法:
# dladm create-vnic -l link -p pool=pool vnic
其中 pool 指为区域创建的池的名称。
如果 VNIC 存在,请使用以下语法:
# dladm setlinkprop -p pool=pool vnic
zonecfg>zoneid:net> set physical=vnic
注 - 有关解释如何将网络接口指定给某个区域的完整步骤,请参阅《Oracle Solaris 管理:Oracle Solaris Zones、Oracle Solaris 10 Zones 和资源管理》中的"配置、检验并提交区域"
示例 21-6 将链路的 CPU 池指定给具有专用 IP 类型的区域
本示例说明如何将池指定给区域的数据链路。该方案基于 图 21-1中的配置。本示例假定已为区域配置一个名为 pool99 的 CPU 池。然后将该池指定给一个 VNIC。最后,将非全局区域 zone1 设置为使用该 VNIC 作为网络接口。
# dladm create-vnic -l e1000g0 -p pool99 vnic0 # zonecfg -c zone1 zonecfg:zone1> set ip-type=exclusive zonecfg:zone1> add net zonecfg:zone1>net> set physical=vnic0 zonecfg:zone1>net> end zonecfg:zone1> exit
以下过程说明如何通过配置 cpu 属性,指定特定 CPU 来处理数据链路上的通信流量。
# dladm show-linkprop -p cpus link
缺省情况下,没有将 CPU 指定给任何特定接口。因此,命令输出中的参数 VALUE 将不包含任何条目。
# echo ::interrupts | mdb -k
输出将列出系统中每个链路的参数,包括 CPU 数量。
这些 CPU 可以包括与链路的中断相关联的 CPU。
# dladm set-linkprop -p cpus=cpu1,cpu2,... link
其中 cpu1 是要指定给该链路的 CPU 编号。您可以为链路指定多个专用 CPU。
# echo ::interrupts | mdb -k
# dladm show-linkprop -p cpus link
示例 21-7 将 CPU 分配给接口
本示例说明如何将特定 CPU 作为专用 CPU 指定给图 18-3 中的 internal0 接口。
请注意由不同的命令生成的输出中的以下信息。为清楚起见,重要信息在输出中强调显示。
缺省情况下,internal0 没有专用 CPU。因此 VALUE 为 --。
internal0 的中断与 CPU 18 相关联。
分配 CPU 后,internal0 在 VALUE 下显示新的 CPU 列表。
# dladm show-linkprop -p cpus internal0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE internal0 cpus rw -- -- -- # echo ::interrupts | mdb -k Device Shared Type MSG # State INO Mondo Pil CPU external#0 no MSI 3 enbl 0x1b 0x1b 6 0 internal#0 no MSI 2 enbl 0x1a 0x1a 6 18 # dladm set-linkprop -p cpus=14,18,19,20 internal0 # dladm show-linkprop -p cpus internal0 LINK PROPERTY PERM VALUE DEFAULT POSSIBLE internal0 cpus rw 14,18,19,20 -- --
所有支持线程(包括中断)现在只限于新指定的 CPU 集。