JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:网络接口和网络虚拟化     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  网络栈概述

此 Oracle Solaris 发行版中的网络配置

Oracle Solaris 中的网络栈

网络设备和数据链路名称

其他链路类型的管理

第 1 部分网络自动配置

2.  NWAM 简介

3.  NWAM 配置和管理(概述)

4.  NWAM 配置文件配置(任务)

5.  NWAM 配置文件管理(任务)

6.  关于 NWAM 图形用户界面

第 2 部分数据链路和接口配置

7.  使用配置文件上的数据链路和接口配置命令

8.  数据链路配置和管理

9.  配置 IP 接口

10.  在 Oracle Solaris 上配置无线接口通信

11.  管理网桥

12.  管理链路聚合

13.  管理 VLAN

14.  IPMP 简介

15.  管理 IPMP

16.  使用 LLDP 交换网络连接信息

第 3 部分网络虚拟化和资源管理

17.  网络虚拟化和资源控制简介(概述)

18.  规划网络虚拟化和资源控制

19.  配置虚拟网络(任务)

20.  在虚拟化环境中使用链路保护

21.  管理网络资源

网络资源管理概述

资源控制的数据链路属性

通过使用流管理网络资源

用于网络资源管理的命令

网络资源管理(任务列表)

管理数据链路上的资源

传送和接收环

MAC 客户端和环分配

环分配的属性

准备配置基于硬件的客户端

如何配置基于硬件的客户端

如何创建基于软件的客户端

如何确定静态环分配中的环指定

池和 CPU

如何为数据链路配置 CPU 池

如何将 CPU 分配给链路

管理流上的资源

在网络上配置流

如何配置流

22.  监视网络通信流量和资源使用情况

词汇表

索引

管理数据链路上的资源

本节介绍了为了提高物理网络或虚拟网络的网络性能,您可以设置的选定链路属性。

传送和接收环

在 NIC 上,接收 (Rx) 环和传送 (Tx) 环是硬件资源,系统分别通过它们来接收和传送网络数据包。以下各节提供环的概述,然后介绍用于为网络处理分配环的过程。还提供了示例,显示在发出命令以分配环时的工作原理。

MAC 客户端和环分配

MAC 客户端(如 VNIC)和其他数据链路是在 NIC 上配置的,用于支持系统与其他网络节点之间的通信。配置客户端后,它同时使用 Rx 和 Tx 环来分别接收或传送网络数据包。MAC 客户端可以是基于硬件的或基于软件的。基于硬件的客户端需要满足以下任一条件:

不能满足上述任一条件的客户端称为基于软件的 MAC 客户端。

根据具体的 NIC,可以为基于硬件的客户端指定专用环。一些 NIC(如 nxge)支持动态环分配。在此类 NIC 上,您不仅可以配置基于硬件的客户端,还可以灵活地确定要分配给此类客户端的环的数量(假定环仍可供分配)。环的使用始终针对主接口进行优化,例如 nxge0。主接口也称为主客户端。任何尚未被其他客户端指定为可用的专用环会自动指定给主接口。

其他 NIC(如 ixge)仅支持静态环分配。对于这些 NIC,您只能创建基于硬件的客户端。这些客户端会自动配置为每个客户端有一组固定的环。NIC 驱动程序的初始配置过程中会确定固定的环组。有关静态环分配的驱动程序初始配置的更多信息,请参阅《Oracle Solaris 可调参数参考手册》

VLAN 中的环分配

使用 VLAN 时,环的分配情况视 VLAN 的创建方式而异。VLAN 通过以下两种方式之一创建:

使用 dladm create-vlan 子命令创建的 VLAN 与底层接口共享相同的 MAC 地址。因此,该 VLAN 还共享底层接口的 Rx 和 Tx 环。对于使用 dladm create-vnic 命令作为 VNIC 创建的 VLAN,其 MAC 地址与底层接口的不同。这种 VLAN 的环分配独立于底层链路的分配。因此,可以对该 VLAN 指定它自己的专用环(假定 NIC 支持基于硬件的客户端)。

环分配的属性

要管理环,可以通过使用 dladm 命令设置两个环属性:

可以将每个属性设置为三个可能的值之一:

要提供有关当前环的指定和使用的信息,可以使用以下附加的只读环属性:

准备配置基于硬件的客户端

在配置基于硬件的客户端之前,您必须知道系统中 NIC 的环分配功能。要获得所需的信息,请使用以下命令:

# dladm show-linkprop link

其中 link 指您的特定 NIC 的数据链路。

要显示特定属性,请使用以下命令:

# dladm show-linkprop -p property[,property,...] link

要正确配置基于硬件的客户端,必须确定以下事项:

如果 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) 表示以下各项之一:

您可以通过将 rxringstxringsPOSSIBLE 字段与 rxrings-availabletxrings-available VALUE 字段进行比较来验证零的含义。

例如,假定 txrings-available0,如下所示:

# 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,而 rxringsPOSSIBLE 字段为 sw,hw。这些信息结合起来,意味着由于 NIC 不支持动态环分配而没有可用的 Rx 环。在传送端,txrings-availableVALUE 字段为 0,而 txringsPOSSIBLE 字段为 sw,hw,<1-7>。这些信息结合起来,表示由于所有 Tx 环均已分配而没有可用的 Tx 环。但是,txringsPOSSIBLE 字段表示支持动态环分配。因此,您可以在 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 的以下信息:

要获取信息,请参阅准备配置基于硬件的客户端

  1. 根据您的 NIC 支持的环分配的类型,执行以下步骤之一:
    • 如果 NIC 支持动态环分配,请使用以下语法:

      # dladm create-vnic -p rxrings=number[,txrings=number] -l link vnic
      number

      指分配给客户端的 Rx 环和 Tx 环的数量。该数量必须在可供分配的环的数量范围内。


      注 - 一些 NIC 支持 Rx 环或 Tx 环上的动态分配,但不同时支持这两种类型。您在支持动态环分配的环类型上指定 number


      link

      指您在其上创建客户端的数据链路。

      vnic

      指您所配置的客户端。

    • 如果 NIC 支持静态环分配,请使用以下语法:

      # dladm create-vnic -p rxrings=hw[,txrings=hw] -l link vnic

      注 - 一些 NIC 支持 Rx 环或 Tx 环上的静态分配,但不同时支持这两种类型。您在支持静态环分配的环类型上指定 hw


  2. (可选的)检查新创建的客户端的环信息。
    # dladm show-linkprop vnic

如何创建基于软件的客户端

基于软件的客户端没有专用环。相反,该客户端与其他现有的基于软件的客户端共享具有主客户端或接口的环的使用。基于软件的客户端的环数量取决于现有的基于硬件的客户端数量。

示例 21-4 配置基于硬件的客户端和基于软件的客户端

本示例说明如何在具有 ixgbe NIC 的系统上同时配置基于硬件的客户端和基于软件的客户端。为了说明如何实现环分配,该示例分为几个部分。在配置过程的每个步骤,显示和解释与环相关的信息。配置过程如下所示:

  1. 在配置客户端之前,显示系统上的链路和环使用情况。

  2. 配置主客户端。

  3. 配置基于软件的客户端。

  4. 配置另一个没有任何专用环的客户端。

  5. 为新配置的客户端静态分配环。

  6. 使用动态分配的专用环配置第三个客户端。

首先,显示链路、环使用情况和与环相关的属性。

# 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,但没有现有的客户端。此外,此输出还包含以下信息:

有关 *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      --       --
...

输出提供以下信息:

接下来,将一个 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      --       --
...

输出提供以下信息:

接下来,配置另一个客户端而不使用任何环分配。

# 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      --       -- 
...

输出提供以下信息:

接下来,将环静态分配给新配置的客户端 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     --       -- 
...

输出提供以下信息:

接下来,使用动态分配的 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      --       --
...

输出提供以下信息:

如何确定静态环分配中的环指定

使用静态环分配配置基于硬件的客户端时,硬件确定要指定的环的数量。然而,rxringstxrings 属性设置为 hw,并不指示实际分配的环的数量。相反,可以通过检查 rxrings-effective txrings-effective 属性获得该数量。

  1. 通过执行以下步骤之一,使用静态环分配配置基于硬件的客户端:
    • 要使用静态环分配创建客户端,请键入以下命令:

      # dladm create-vnic -l link -p rxrings=hw[,txrings=hw] vnic
      link

      指您在其上创建客户端的数据链路。

      vnic

      指您所配置的客户端。

    • 要将环静态分配给现有的客户端,请键入以下命令:

      # dladm set-linkprop -p rxrings=hw[,txrings=hw] vnic
  2. 要确定已分配的环的数量,请执行以下子步骤:
    1. 显示客户端的属性。
      # dladm show-linkprop link

      其中 link 指基于硬件的客户端或 VNIC。

    2. 检查对应于您静态分配的环类型的 *rings-effective 属性的值。

      例如,如果您静态分配了 Rx 环,检查 rxrings-effective 属性。如果您静态分配了 Tx 环,检查 txrings-effective 属性。数字指示由硬件分配的环的数量。

  3. 要验证已静态分配了哪些环,请执行以下子步骤:
    1. 显示 NIC 的环使用情况。
      # dladm show-phys -H link

      其中 link 指主客户端。

    2. 从命令输出中,检查哪些 Rx 环或 Tx 环已指定给您在第一步中配置的基于硬件的客户端。

示例 21-5 确定静态分配的环

本示例显示 Rx 环如何静态分配给在 ixgbe NIC 上配置的客户端。在此类 NIC 上,仅支持静态分配 Rx 环。本示例的过程如下所示:

  1. 显示系统上的链路。在本示例中,系统只有一个链路,即 ixgbe0

  2. vnic1 创建为具有静态分配的 Rx 环的基于硬件的客户端。

  3. 显示环信息以了解硬件所分配的环的数量。

  4. 显示环使用情况以确定已分配哪些环。

# 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 环 23vnic1 的专用环。

vnic1 配置为客户端后,它还会自动接收 Tx 环 1 作为其专用环。但是,txrings-effective 属性不显示值,因为未显式设置 txrings 属性。

池和 CPU

pool 是一个链路属性,它使您能够将网络处理绑定到 CPU 池。使用此属性,您可以更好地整合区域中的网络资源管理与 CPU 绑定和管理。在 Oracle Solaris 中,区域管理包括使用 zonecfgpoolcfg 命令绑定非网络处理与 CPU 资源池。要绑定该相同的资源池以便同时管理网络处理,您使用 dladm set-linkprop 命令来配置链路的 pool 属性。然后您将该链路指定给该区域。

通过设置链路的 pool 属性并将该链路指定为区域的网络接口,该链路将同时绑定到一个区域的池。如果该区域被设置为专用区域,则未指定给该区域的其他数据链路不再能够使用池中的 CPU 资源。


注 - 可以设置一个单独的属性 cpu 来将特定 CPU 指定给数据链路。cpupool 这两个属性是互斥的。您不能为给定数据链路同时设置这两个属性。要通过使用 cpu 属性将 CPU 资源指定给数据链路,请参见如何将 CPU 分配给链路


关于区域内池的更多信息,请参见《Oracle Solaris 管理:Oracle Solaris Zones、Oracle Solaris 10 Zones 和资源管理》中的第 13  章 "创建和管理资源池(任务)"。有关创建池和将 CPU 集指定给池的更多信息,请参阅 poolcfg(1M) 手册页。

下图显示将 pool 属性指定给数据链路时池的工作原理。

图 21-1 指定给一个区域的 VNIC 的 pool 属性

image:说明指定给区域的 CPU 池的图形。

在图中,系统有八个 CPU。如果系统上没有配置池,则所有 CPU 都属于缺省池并由全局区域使用。不过,在本示例中,已创建 pool99 池,其中包含 CPU 3CPU 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 属性的自动重新配置

image:显示池动态配置的图形。

与另一个池相关的属性显示有关数据链路的 CPU 使用或 CPU 池的信息。这些属性是只读属性,不能由管理员设置。

为了管理区域的 CPU 资源,设置数据链路的 pool 属性通常不作为初始步骤执行。更常见的是使用命令(如 zonecfgpoolcfg)将区域配置为使用资源池。cpupool 链路属性本身并未设置。在这种情况下,当引导区域时,会根据这些区域配置自动设置这些数据链路的 pool-effectivecpus-effective 属性。缺省池显示在 pool-effective 下,同时由系统选择 cpus-effective 的值。因此,如果您使用 dladm show-linkprop 命令,则 poolcpu 属性将为空,而 pool-effectivecpus-effective 属性将包含值。

要为网络处理绑定区域的 CPU 池,您还可以直接设置数据链路的 poolcpu 属性。配置这些属性后,它们的值也会反映在 pool-effectivecpus-effective 属性中。但是请注意,通常不使用此替代步骤来管理区域的网络资源。

如何为数据链路配置 CPU 池

与其他链路属性一样,数据链路的 pool 属性可以在创建链路时设置,也可以稍后在链路需要进一步配置时设置。例如:

# dladm create-vnic -p pool=pool-name -l link vnic

在您创建 VNIC 时设置 pool 属性。要设置现有 VNIC 的 pool 属性,使用以下语法:

# dladm setlinkprop -p pool=pool-name vnic

以下过程提供了为 VNIC 配置 CPU 池的步骤。

开始之前

您必须完成以下事项:

  1. 将链路的 pool 属性设置为您为区域创建的 CPU 池。根据是否存在 VNIC,执行以下步骤之一。
    • 如果尚未创建 VNIC,使用以下语法:

      # dladm create-vnic -l link -p pool=pool vnic

      其中 pool 指为区域创建的池的名称。

    • 如果 VNIC 存在,请使用以下语法:

      # dladm setlinkprop -p pool=pool vnic
  2. 将一个区域设置为使用 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 属性,指定特定 CPU 来处理数据链路上的通信流量。

  1. 检查接口的 CPU 指定。
    # dladm show-linkprop -p cpus link

    缺省情况下,没有将 CPU 指定给任何特定接口。因此,命令输出中的参数 VALUE 将不包含任何条目。

  2. 列出中断和与中断相关联的 CPU。
    # echo ::interrupts | mdb -k

    输出将列出系统中每个链路的参数,包括 CPU 数量。

  3. 将 CPU 指定给链路。

    这些 CPU 可以包括与链路的中断相关联的 CPU。

    # dladm set-linkprop -p cpus=cpu1,cpu2,... link

    其中 cpu1 是要指定给该链路的 CPU 编号。您可以为链路指定多个专用 CPU。

  4. 检查链路中断来验证新的 CPU 指定。
    # echo ::interrupts | mdb -k
  5. (可选的)显示与链路相关联的 CPU。
    # dladm show-linkprop -p cpus link

示例 21-7 将 CPU 分配给接口

本示例说明如何将特定 CPU 作为专用 CPU 指定给图 18-3 中的 internal0 接口。

请注意由不同的命令生成的输出中的以下信息。为清楚起见,重要信息在输出中强调显示。

# 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 集。