ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 管理: ネットワークインタフェースとネットワーク仮想化 Oracle Solaris 11 Information Library (日本語) |
この Oracle Solaris リリースでのネットワーク構成
7. プロファイルでのデータリンクおよびインタフェース構成コマンドの使用
10. Oracle Solaris 上での無線インタフェース通信の構成
17. ネットワーク仮想化およびリソース制御の紹介 (概要)
この節では、物理ネットワークまたは仮想ネットワークのどちらかのネットワークパフォーマンスを向上させるために設定できる、選択されたリンクプロパティーについて説明します。
NIC 上にある受信 (Rx) リングと送信 (Tx) リングはそれぞれ、システムがネットワークパケットの受信と送信を行うために使用するハードウェアリソースです。以降の節では、リングの概要について説明したあと、ネットワークプロセスにリングを割り当てるために使用される手順を示します。また、リングを割り当てるためのコマンドを発行したときのメカニズム動作を示す例も提供されます。
VNIC やその他のデータリンクなどの MAC クライアントは、システムとほかのネットワークノードの間の通信を可能にするために NIC 上に構成されます。各クライアントは構成されたあと、Rx リングと Tx リングの両方を使用して、それぞれネットワークパケットを受信または送信します。MAC クライアントは、ハードウェアベースまたはソフトウェアベースのどちらかです。ハードウェアベースのクライアントは、次の条件のいずれかを満たします。
1 つ以上の Rx リングを専用に使用できます。
1 つ以上の Tx リングを専用に使用できます。
1 つ以上の Rx リングと 1 つ以上の Tx リングを専用に使用できます。
これらの条件のいずれも満たさないクライアントは、ソフトウェアベースの MAC クライアントと呼ばれます。
NIC によっては、ハードウェアベースのクライアントにリングを排他的使用のために割り当てることができます。nxge などの NIC は、動的なリング割り当てをサポートしています。このような NIC では、ハードウェアベースのクライアントを構成できるだけではありません。リングが割り当てに使用できる状態のままにあると仮定すると、このようなクライアントに割り当てるリングの数を決定できる柔軟性もあります。リングの使用は常に、主インタフェース (たとえば、nxge0) のために最適化されます。主インタフェースは、主クライアントとも呼ばれます。ほかのクライアントによって排他的使用のために割り当てられていない使用可能なリングはすべて、主インタフェースに自動的に割り当てられます。
ixge などのほかの NIC は、静的なリング割り当てのみをサポートしています。これらの NIC では、ハードウェアベースのクライアントだけを作成できます。各クライアントには、クライアントごとに固定されたリングのセットが自動的に構成されます。この固定されたセットは、NIC ドライバの初期構成中に決定されます。静的なリング割り当てのためのドライバの初期構成についての詳細は、『Oracle Solaris カーネルのチューンアップ・リファレンスマニュアル』を参照してください。
VLAN でのリングの割り当て処理は、その VLAN が作成された方法によって異なります。VLAN は、次の 2 つの方法のどちらかで作成されます。
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 へのリングの割り当ては、ベースとなるリンクへの割り当てとは独立して行われます。そのため、NIC がハードウェアベースのクライアントをサポートしていると仮定すると、その VLAN には独自の専用リングを割り当てることができます。
リングを管理するために、dladm コマンドを使用して、次の 2 つのリングプロパティーを設定できます。
rxrings は、指定されたリンクに割り当てられた Rx リングの数を示します。
txrings は、指定されたリンクに割り当てられた Tx リングの数を示します。
各プロパティーを次の 3 つの指定可能な値のいずれかに設定できます。
sw は、ソフトウェアベースのクライアントを構成していることを示します。このクライアントは、リングを排他的に使用できません。代わりに、このクライアントは、同様に構成されたほかのすべての既存のクライアントとリングを共有します。
n > 0 (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 フィールドには、rxrings および txrings プロパティーの受け入れ可能な値として sw と <1-7> が表示されます。これらの値は、nxge がソフトウェアベースのクライアントだけでなく、ハードウェアベースのクライアントをサポートしていることを示します。<1-7> の範囲は、設定する Rx リングまたは Tx リングの数が指定された範囲内になければならないことを示しています。また、NIC が受信側と送信側の両方で動的なリング割り当てをサポートしている範囲から推定することもできます。
さらに、*rings-available プロパティーは、ハードウェアベースのクライアントに割り当てるために 5 つの Rx リングと 5 つの Tx リングが使用可能なことを示しています。
ただし、*clnt-available プロパティーに基づいて、使用可能な Rx リングを排他的に使用できるクライアントは 2 つしか構成できません。同様に、使用可能な Tx リングを排他的に使用できるクライアントは 2 つしか構成できません。
例 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 リングの数 (この例では、最大 7 リング) を決定できます。
さらに、*rings-available プロパティーは、ハードウェアベースのクライアントに割り当てるために 5 つの Tx リングが使用可能であるが、割り当て可能な Rx リングはないことを示しています。
最後に、*hwclnt-available プロパティーに基づいて、ハードウェアベースの 7 つの Tx クライアントを Tx リングを排他的に使用するように構成できます。ただし、ixgbe カードでは、動的な Rx リング割り当てはサポートされていません。そのため、専用の Rx リングの指定されたセットを備えたハードウェアベースのクライアントを作成することはできません。
どちらかの *rings-available プロパティーの VALUE フィールドにあるゼロ (0) は、次のどちらかを示すことがあります。
クライアントに割り当てるために使用可能なリングがなくなった。
動的なリング割り当てがサポートされていない。
rxrings および txrings の POSSIBLE フィールドと、rxrings-available および txrings-available の VALUE フィールドを比較することによって、この 0 の意味を確認できます。
たとえば、次のように 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 です。これらの情報を組み合わせると、使用可能な Rx リングがないのは NIC が動的なリング割り当てをサポートしていないためであることがわかります。送信側では、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 を備えたシステム上に、ハードウェアベースのクライアントとソフトウェアベースのクライアントの両方を構成する方法を示しています。リング割り当ての実装方法を示すために、この例はいくつかの部分に分けられています。構成プロセスの各手順で、リング関連の情報が表示され、説明されます。この構成は、次のように進められます。
クライアントの構成の前に、システム上のリンクとリング使用状況を表示します。
主クライアントを構成します。
ソフトウェアベースのクライアントを構成します。
専用リングの割り当てなしで別のクライアントを構成します。
新しく構成されたクライアントにリングを静的に割り当てます。
動的に割り当てられる専用リングを備えた 3 番目のクライアントを構成します。
最初に、リンク、リング使用状況、およびリング関連のプロパティーを表示します。
# 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 -- -- ...
このコマンド出力はシステム上の 1 つのリンク ixgbe0 を示していますが、既存のクライアントは存在しません。さらに、この出力からは次の情報も収集されます。
NIC には 8 つの Rx リングと 8 つの Tx リング (リング 0 から 7) があります。
ハードウェアベースのクライアントの場合、Rx リングでは静的なリング割り当てのみがサポートされているのに対して、Tx リングでは静的なリング割り当てと動的なリング割り当ての両方がサポートされています。
ソフトウェアベースのクライアントでは、Rx リングと Tx リングの両方を構成できます。
7 つの Tx リング (1 から 7) は、ほかのクライアントに動的に割り当てるために使用できます (リング 0 は通常、主クライアントのために予約されています)。Rx リングでは動的なリング割り当てがサポートされていないため、使用可能な Rx リングはありません。
Rx リングを使用するように構成できるハードウェアベースのクライアントが 3 つであるのに対して、Tx リングを使用するように構成できるハードウェアベースのクライアントは 7 つです。
*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 は、専用に使用するために 2 つの Rx リング (リング 2 と 3) を自動的に受け取ります。ただし、ixgbe0 はすべての Tx リングを使用します。デフォルトでは、未使用のリングはすべて、主クライアントに自動的に割り当てられます。
ほかのクライアントに割り当てることのできる使用可能な Tx リングの数は 7 のままです。
Rx リングを構成できる使用可能なハードウェアベースのクライアントの数は 3 のままです。Tx リングを動的に構成できる使用可能なハードウェアベースのクライアントの数は 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 -- -- ...
この出力では、次の情報が提供されます。
ソフトウェアベースのクライアントとして、vnic0 には、Rx リング 0 と 1 の使用が自動的に割り当てられます。そのあとに作成される、Rx リングを備えたその他のソフトウェアベースのクライアントには、デフォルトで、このペアの使用が割り当てられます。デフォルトでは、vnic0 には、8 つのすべての Tx リング (リング 0 から 7) の使用も割り当てられます。そのあとに作成される、Tx リングを備えたその他のソフトウェアベースのクライアントには、デフォルトで、このリングのセットの使用が割り当てられます。
ソフトウェアベースのクライアントとして、vnic0 の rxrings および txrings プロパティーは、それに応じて sw に設定されます。
Tx リングは割り当てられません。そのため、ほかのクライアントに割り当てることのできる使用可能な Tx リングの数は 7 のままです。
Rx リングを構成できる使用可能なハードウェアベースのクライアントの数は 3 のままです。Tx リングを構成できる使用可能なハードウェアベースのクライアントの数は 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 -- -- ...
この出力では、次の情報が提供されます。
リング割り当てがサポートされている場合、構成されているクライアントは、rxrings および txrings プロパティーが設定されていなくてもハードウェアベースのクライアントとみなされます。そのため、vnic1 は、自ら使用するために 2 つの専用の Rx リング (リング 4 と 5) を自動的に受け取ります。同様に、vnic1 も専用の Tx リング (リング 1) を受け取ります。
8 つの Tx リングのうち、ixgbe0 と vnic0 は現在 7 つのリング (リング 0 とリング 2 から 7) を共有しています。リング 1 は、vnic1 の専用の Tx リングになっています。
Tx リングは割り当てられません。そのため、ほかのクライアントに割り当てることのできる使用可能な Tx リングの数は 7 のままです。
Rx リングを構成できる使用可能なハードウェアベースのクライアントの数は 3 のままです。Tx リングを構成できる使用可能なハードウェアベースのクライアントの数は 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 -- -- ...
この出力では、次の情報が提供されます。
vnic1 での Rx リングと Tx リングの分布は、vnic1 がリング割り当てなしで作成されたときと同じままです。
同様に、リング情報も、vnic1 がリング割り当てなしで作成されたときと同じままです。
vnic1 の rxrings および txrings プロパティーは、明示的に hw に設定されています。その結果、動的な割り当てに使用可能な Tx リングの数は 6 に減っています。同様に、構成できる使用可能なハードウェアベースのクライアントの数も 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 -- -- ...
この出力では、次の情報が提供されます。
ハードウェアは、vnic2 に Rx リングのペア (リング 6 と 7) を排他的使用のために自動的に割り当てました。ただし、vnic2 の 2 つの専用の Tx リング (リング 2 と 3) は管理者によって割り当てられました。
2 つの Tx リングが管理用に vnic2 に割り当てられているため、ほかのクライアントに割り当てることのできる使用可能な Tx リングの数は 4 に減っています。
vnic2 が 2 つの Tx リングを備えたハードウェアベースのクライアントとして構成されているため、構成できる使用可能なクライアントの数は 5 に減っています。
静的なリング割り当てでハードウェアベースのクライアントを構成すると、割り当てられるリングの数がハードウェアによって決定されます。ただし、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 静的に割り当てられているリングの識別
この例は、ixgbe NIC 上に構成されているクライアントに Rx リングがどのように静的に割り当てられているかを示しています。このような NIC では、Rx リングには静的な割り当てのみがサポートされています。この例は、次のように進められます。
システム上のリンクを表示します。この例では、システムには 1 つのリンク (ixgbe0) しかありません。
静的に割り当てられる Rx リングを備えたハードウェアベースのクライアントとして vnic1 を作成します。
リング情報を表示して、ハードウェアによって割り当てられたリングの数を確認します。
リング使用状況を表示して、どのリングが割り当てられているかを識別します。
# 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 ...
この出力は、rxrings-effective プロパティーに反映されているように、vnic1 に Rx リングが構成されたあと、ハードウェアによって 2 つの専用の Rx リングが割り当てられたことを示します。dladm show-phys -H コマンドの出力に基づくと、Rx リング 2 と 3 が vnic1 で専用に使用するために割り当てられました。
クライアントとして構成された結果として、vnic1 はまた、専用で使用するために Tx リング 1 も自動的に受け取りました。ただし、txrings プロパティーが明示的に設定されていないため、txrings-effective プロパティーには値が表示されていません。
pool は、ネットワーク処理を CPU のプールにバインドできるようにするためのリンクプロパティーです。このプロパティーを使用すると、ネットワークリソースの管理を、ゾーン内の CPU バインディングや管理により適切に統合できます。Oracle Solaris でのゾーン管理には、zonecfg または poolcfg コマンドを使用して、ネットワーク以外のプロセスを CPU リソースのプールにバインドする処理が含まれます。その同じリソースのプールをネットワークプロセスも管理するようにバインドするには、dladm set-linkprop コマンドを使用してリンクの pool プロパティーを構成します。次に、ゾーンにそのリンクを割り当てます。
リンクの pool プロパティーを設定し、そのリンクをゾーンのネットワークインタフェースとして割り当てることによって、そのリンクがゾーンのプールにもバインドされます。そのゾーンが排他的ゾーンになるように設定されると、プール内の CPU リソースは、そのゾーンに割り当てられていないほかのデータリンクから使用できなくります。
注 - 別のプロパティー cpu を設定すると、データリンクに特定の CPU を割り当てることができます。この 2 つのプロパティー cpu と pool は相互に排他的です。特定のデータリンク用に両方のプロパティーを設定することはできません。cpu プロパティーを使用してデータリンクに CPU リソースを割り当てるには、「リンクに CPU を割り当てる方法」を参照してください。
ゾーン内のプールについての詳細は、『Oracle Solaris のシステム管理 (Oracle Solaris ゾーン、Oracle Solaris 10 ゾーン、およびリソース管理)』の第 13 章「リソースプールの作成と管理 (手順)」を参照してください。プールの作成および CPU セットのプールへの割り当てについての詳細は、poolcfg(1M) のマニュアルページを参照してください。
次の図は、データリンクに pool プロパティーが割り当てられたときのプールの動作を示しています。
図 21-1 ゾーンに割り当てられた VNIC の pool プロパティー
この図では、システムに 8 つの CPU があります。システム上にプールが構成されていない場合は、すべての CPU がデフォルトプールに属し、大域ゾーンで使用されます。ただし、この例では、CPU 3 と CPU 4 で構成された pool99 プールが作成されています。このプールは、排他的ゾーンである 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 がプールに自動的に関連付けられます。そのため、2 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-effective および cpus-effective プロパティーには値が含まれていますが、pool および cpu プロパティーは空です。
データリンクの pool および cpu プロパティーの直接の設定は、ゾーンの 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
CPU プールを VNIC 用に構成するための手順を次に示します。
始める前に
次の作業を完了している必要があります。
割り当てられた数の CPU を含むプロセッサセットを作成します。
そのプロセッサセットを関連付けるプールを作成します。
そのプールをプロセッサセットに関連付けます。
注 - これらの前提条件を完了するための手順については、『Oracle Solaris のシステム管理 (Oracle Solaris ゾーン、Oracle Solaris 10 ゾーン、およびリソース管理)』の「構成の変更方法」を参照してください。
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 ゾーン、Oracle Solaris 10 ゾーン、およびリソース管理)』の「ゾーンを構成、検証、および確定する」を参照してください。
例 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 の割り当て
この例は、図 18-3 の internal0 インタフェース専用に特定の CPU を割り当てる方法を示しています。
さまざまなコマンドで生成される出力にある次の情報に注目してください。わかりやすくするために、出力にある重要な情報が強調されています。
デフォルトでは、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 に限定されるようになりました。