From 480c499d2167b782a56d3f25e148f521c378c18d Mon Sep 17 00:00:00 2001 From: Rafael Jardim Date: Wed, 3 Mar 2021 18:19:05 -0300 Subject: [PATCH] Update upstream node management There are some files that was added new content. Signed-off-by: Rafael Jardim Change-Id: I5489abf08647014030f53849120c1c42a798cdfe --- .../allocating-host-memory-using-horizon.rest | 0 .../allocating-host-memory-using-the-cli.rest | 0 .../_includes/configure-cpu-core-vswitch.rest | 0 .../changing-the-hyper-threading-status.rst | 11 ++ .../configuring-cpu-core-assignments.rst | 41 +---- .../kubernetes/figures/qes1612788640104.png | Bin 0 -> 150191 bytes .../kubernetes/figures/vpw1612788524636.png | Bin 0 -> 25675 bytes .../common-device-management-tasks.rst | 39 +++++ ...or-hosted-vram-containerized-workloads.rst | 133 +++++++++++++++ .../set-up-pods-to-use-sriov.rst | 81 +++++++++ ...hardware-components-for-a-storage-host.rst | 9 +- ...tion-changes-requiring-re-installation.rst | 2 +- .../kubernetes/host_inventory/devices-tab.rst | 3 + .../kubernetes/host_inventory/hosts-tab.rst | 4 + .../host_inventory/interfaces-tab.rst | 4 +- .../about-host-memory-provisioning.rst | 47 ++++-- .../allocating-host-memory-using-horizon.rst | 95 ++++++++--- .../allocating-host-memory-using-the-cli.rst | 107 ++++++++++-- .../node_management/kubernetes/index.rst | 15 ++ ...t-interfaces-to-networks-using-the-cli.rst | 33 ++-- ...ated-ethernet-interfaces-using-horizon.rst | 2 +- ...ated-ethernet-interfaces-using-the-cli.rst | 37 +++-- ...es-on-sriov-interace usingfrom-horizon.rst | 59 +++++++ ...nterfaces-on-sriov-interface-using-cli.rst | 131 +++++++++++++++ ...ring-ethernet-interfaces-using-horizon.rst | 2 +- ...-vf-interfaces-rate-limiting-using-cli.rst | 108 ++++++++++++ ...figuring-vlan-interfaces-using-the-cli.rst | 37 +++-- ...using-the-sriov-interface-from-the-cli.rst | 156 ++++++++++++++++++ .../node_interfaces/creating-interfaces.rst | 6 +- .../interface-provisioning.rst | 2 +- .../node_interfaces/interface-settings.rst | 4 +- .../node_interfaces/sriov-port-sharing.rst | 50 ++++++ .../kubernetes/the-life-cycle-of-a-host.rst | 2 +- doc/source/shared/abbrevs.txt | 2 + tox.ini | 2 +- 35 files changed, 1087 insertions(+), 137 deletions(-) create mode 100644 doc/source/_includes/allocating-host-memory-using-horizon.rest create mode 100644 doc/source/_includes/allocating-host-memory-using-the-cli.rest create mode 100644 doc/source/_includes/configure-cpu-core-vswitch.rest create mode 100644 doc/source/node_management/kubernetes/figures/qes1612788640104.png create mode 100644 doc/source/node_management/kubernetes/figures/vpw1612788524636.png create mode 100644 doc/source/node_management/kubernetes/hardware_acceleration_devices/common-device-management-tasks.rst create mode 100644 doc/source/node_management/kubernetes/hardware_acceleration_devices/enabling-mount-bryce-hw-accelerator-for-hosted-vram-containerized-workloads.rst create mode 100644 doc/source/node_management/kubernetes/hardware_acceleration_devices/set-up-pods-to-use-sriov.rst create mode 100644 doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-on-sriov-interace usingfrom-horizon.rst create mode 100644 doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-on-sriov-interface-using-cli.rst create mode 100644 doc/source/node_management/kubernetes/node_interfaces/configuring-vf-interfaces-rate-limiting-using-cli.rst create mode 100644 doc/source/node_management/kubernetes/node_interfaces/configuring-vlan-type-interfaces-using-the-sriov-interface-from-the-cli.rst create mode 100644 doc/source/node_management/kubernetes/node_interfaces/sriov-port-sharing.rst diff --git a/doc/source/_includes/allocating-host-memory-using-horizon.rest b/doc/source/_includes/allocating-host-memory-using-horizon.rest new file mode 100644 index 000000000..e69de29bb diff --git a/doc/source/_includes/allocating-host-memory-using-the-cli.rest b/doc/source/_includes/allocating-host-memory-using-the-cli.rest new file mode 100644 index 000000000..e69de29bb diff --git a/doc/source/_includes/configure-cpu-core-vswitch.rest b/doc/source/_includes/configure-cpu-core-vswitch.rest new file mode 100644 index 000000000..e69de29bb diff --git a/doc/source/node_management/kubernetes/configuring_cpu_core_assignments/changing-the-hyper-threading-status.rst b/doc/source/node_management/kubernetes/configuring_cpu_core_assignments/changing-the-hyper-threading-status.rst index 67755deac..f48c5689a 100644 --- a/doc/source/node_management/kubernetes/configuring_cpu_core_assignments/changing-the-hyper-threading-status.rst +++ b/doc/source/node_management/kubernetes/configuring_cpu_core_assignments/changing-the-hyper-threading-status.rst @@ -8,6 +8,17 @@ Change the Hyper-threading Status The hyper-threading status is controlled by the BIOS settings of the host. +.. warning:: + Some applications may benefit from hyperthreading. For applications that + require deterministic performance, it is recommended to run with + hyperthreading disabled. If hyperthreading is enabled, the application + \(either running on bare metal or in a container\) must check the CPU + topology for the CPUs and affine tasks appropriately to HT siblings. For + example, "/proc/cpuinfo" and + "/sys/devices/system/cpu/cpuX/topology/thread\_siblings\*" can be used to + identify HT siblings of the same core. + + .. rubric:: |proc| .. _changing-the-hyper-threading-status-steps-v2v-cv3-dt: diff --git a/doc/source/node_management/kubernetes/configuring_cpu_core_assignments/configuring-cpu-core-assignments.rst b/doc/source/node_management/kubernetes/configuring_cpu_core_assignments/configuring-cpu-core-assignments.rst index 61dbd4801..63f696448 100644 --- a/doc/source/node_management/kubernetes/configuring_cpu_core_assignments/configuring-cpu-core-assignments.rst +++ b/doc/source/node_management/kubernetes/configuring_cpu_core_assignments/configuring-cpu-core-assignments.rst @@ -45,7 +45,7 @@ CPU cores from the Horizon Web interface. :widths: auto +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | **On a worker node or AIO node** | You can assign cores to specific functions, as illustrated above. Unassigned cores are available for allocation to hosted applications; for example containers or, in the case of the |prod-os| OpenStack application, virtual machines. | + | **On a worker node or AIO node** | You can assign cores to specific functions, as illustrated above. Unassigned cores are available for allocation to hosted applications; for example containers or, in the case of the |prod-os| application, virtual machines. | +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | **On a controller or storage node** | Only the Platform function is shown, and all available cores are automatically assigned as platform cores. | +-------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ @@ -71,45 +71,18 @@ CPU cores from the Horizon Web interface. management to allow high-performance, low-latency applications to run with optimal efficiency. -.. xbooklink For more information on core isolation, see |admintasks-doc|: `Kubernetes CPU Manager Static Policy `. +.. From **Isolated** +.. xbooklink For more information on core isolation, see |admin-doc|: + `Kubernetes CPU Manager Static Policy + `. To use this feature, you must also assign the node label kube-cpu-mgr-policy the value **static**. For information about labels, see :ref:`Configure Node Labels Using Horizon `. - It is not permitted to have Isolated and vSwitch cores on the same - node. + .. only:: partner - **vSwitch** - .. note:: - vSwitch is only applicable when running the |prod-os| OpenStack - application. - - Virtual Switch cores can be configured for each processor - independently. This means that the single logical vSwitch running - on a worker node can make use of cores in multiple processors, or - |NUMA| nodes. Optimal data path - performance is achieved when all vSwitch cores, the physical ports, - and the containers that use them are running on the same processor - - You can affine containers to |NUMA| - nodes with vSwitch cores. Alternatively, having vSwitch cores on all - processors ensures that all containers, regardless of the core they - run on, are efficiently serviced. The example allocates two cores - from processor 1 to the vSwitch threads. - - It is not permitted to have Isolated and vSwitch cores on the same - node. - - .. note:: - When allocating vSwitch cores, consider optimizing the processing - of packets to and from physical ports used for data interfaces. - - .. note:: - If the vSwitch type is set to **None**, newly installed worker - hosts will start with 0 vSwitch CPUs. vSwitch CPUs can only be set - to 0 through the system :command:`host-cpu-modify` command or - Horizon. + ../../_includes/configure-cpu-core-vswitch.rest **Shared** Not currently supported. diff --git a/doc/source/node_management/kubernetes/figures/qes1612788640104.png b/doc/source/node_management/kubernetes/figures/qes1612788640104.png new file mode 100644 index 0000000000000000000000000000000000000000..d4b2c4f5fa52f2420d584d4921493dc73a068592 GIT binary patch literal 150191 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

3Misgv_ z^XVb3eJlhC8$rJAr6psR2_L-CMt+&jOFc%Zv&C>!fJ)`7DWBJBJHs~Oz&bor7fW1s z?4^d53^ujbSr+)Rva7@}5XP}6RL1=EFq&Xv|1qqz=(d7^kg6f%;m6FU@bf|&he-o5 z@>do5>8g8RhZeFDd)Wh^Z!yF0DtW}e(Ac((Prq~ppF4-akm#che!@ugJaWB|hz=;_ zw;NK|=518XtgN|RH=lH412tjXCJvGH&ZoS9?2j`=o`vtD2vwDAQPpF z@1D1D!P2>7^Qu&B1b8oF7|2>%+-x3_q;b+126rUyKIK$oZ~tJH!{}QnXYs}xBz>oY z2D1O9a;UT|JUUSVvc1b)kq~$Mb@0oTHV)3aL^#~=B%?MDy^w?s+}`~GZT9K+d}Ac6 zjPgW5&iLnV6YJr=~vl96M~x%)~R; zr2#vqm|o#;;zC_zg-y+g^?%Tc*`2b4&o$OkDBpZ+1mao(B7EUrfxY>Pd*W zlU^cQdKh_6jTy6F?w5Bg(6m^|Jt(N@N{S4Fho5((z`(yS zHrsVfNj5HBLgBrSnsRu5I6pFp$QKaX*w<>R@|0c1w5kCN8lrdGJdNg9EskC-D3On` zmcog85Ani#;a*K!9)hpJ55sJzq@>C&v4rb;O{tBXnptPp=7hSMD;FCn16PoR1UYB= za=SAX(~}?b1i{wQ%Mg$8(w5hDWW`54wec9a7smWr@yaqyxgDLFVCp^Wwx6>bIJgA1LnXIGTmjkqA&;78 z9%R>|Ik?it6Fjz8kkXr>)$`l+M>1l0>Wb( z_t8sTF)vGtTZ>T-vySELnkChAP*E3oE4S|w#ZNuXB*)CIGTPbq&H_gt!N$hV_54udaeNhOO96sb}Du>gyvMjwL^axHXj+I;mS|z%p@F z>pOU)x3TKzy{>M7DdnrMRcp6FmvXCX8JgeyV(<;S<4s0aOI>}x0P7KH zL^(!ZZn|^h8Q48T>CdMdN~(DBXQgj^SX$?v*t4F$wq!}Upqpl53PjI^*3+F-WtVm^2M+0Dgo=xpM@yDRt#E}E*-#@;ikrmb_)z`@!- z^sC#8-NKrtuW#sAwa8P4UH?{kc+nTR`^YCNAR0qpxkU2Mo|4&109fg#LTe|-8?JAJ zuQ7|ZPI=q=cNKuf?ejezC_E-ctm@O*eSK?7Rz@bu=k&=iV`>j49tlZ83S#K~W16Q$ z#`spK^eP&LhUOCD#&vjYB5LgvcM6SbL_&^)k~0bd-ZJ~^CUfT%)gDnRF;K%$|1T%j z6RUDO0gGy6q#tVe>i4Pr1ZYhlf|43WX|9Gpov_}#zNaeITPOn-j@z~Exgr#QmU3)*>x$g>({M>uswPOztMJ_i1U8IZI zb??&4I&eZCdTVW%!DqU|cf771kG$cDBP4LgVpq~*Jd$Fal$y7#we<}F2O~H~4dr9} zsRP|Ck3GA#5n08Vri042S9?Pav>pRh}X8@|0I5@pRnW<)B?q!b5o=h-~Q&B;;#nggR24b0cHald;e84yR`I}3p8iuGiu123855D z>|yp1gn(%ShE@n8vE-BR4)k3b8GLa2II*pJh^hQ_t56TUv8Y{tFK()S#yWjcP^ikc zuSE5%u*XqQhkS4yBt_f&$8XRqjjK*4aia(E#LM$Ob2u|u zKpw_6Z!cTXTSdJdqZ0n0WxswgsaQZcl$Msdh#H*lfC ze2)3B=aVuCvhzwxV3s$8(H_TJI9NW;_Rah0bf7BEoN{HG#k5;!%YmYgJ?$dL4MnMGYYFU5a<@8ojJz{HzVhkFjH#yMQe+|9 zy#!q$3^?b+u4}8Az1lc`$=Q0zQDk9TOXWuNd7o))7hgxhb zPI&`@p5H}2$tNc#=|d@C+2MJA%rU##e!N(bPA$Qq$nwbA{`&81Sb}K(`T6-e94pLM z8E8|xS}6lJprwNQ)4<-T=7dK)yxfhbpJ;@3VqktUDK}Hrx@Bha5NZ*#4g?%*@AOJo zGi%Q=W&RK?3DE@OHTevg2yZ4G*-u8CF}zL}3CAk53hPMPcH=RLm7|-H%u#vmHMQFx z$RIT5u9q-$Biy9?PKm?ma^kcUDe^ap^$d2lJe0yA#GNZi zX~E?zGj)90-q8U+SNteD+2o_-R+C05VDuC#Rr=}Fa=0VYetDB3;jE}VQ)4-w?MMU} zT@FyR+_eq;>*q%y+tkaEp;b1-!6UrQ(WB10u^G4r<2D>>YIcjGY7JW%vWCj+U}bpS zHWG$16(4lzL~sMd_+fvRuTZ>)SsF}WU67yf_HFDEk(<*Ts8eP=N~+HWJ8Au6x3FVO zz5ok*9NE)mDfHfAh1!by+wLKr%=m>GUGcd$)i;3EixF<{it*Ck2V_XuTUNaEFfkg2 zUYGZ-(AGWdm4evE&Gc7D%nDm)YLH&oEP%`$ct}EUG>3KA-YfQ>!er*3uYuu3hVIrb!L#O2@*w~oCdbZODM zN*B*+GDy~z0e;6Fh4#Cj|IC2^SXyayH5_1&=jH9ay7o%7yRP;w{O#l@Fk2gbtHUIB zjn^Q52D>BHt58BoY~I@4+DvNlf)Tn&Ar)(Vrro<=R1Oa9+G@o1#GsZm<>mrR^?gjXEL`-h!Q&+~2s%Ww#NzOBw*Td^E&Bo5w5T10fXk9`I z2UCtEZe2i%1(gxAaALaccVjrr+9|&(Y>9Z0sR$8bP7w_O@lPZ&)>Xz}X*U~Wzg8!q zkIwRMq^JxeHcV6;u^1s=CUC6hQ+LABoMGl$?zSyu2i)`B9_N{P=D9fLN>3%D2)LSd zv%#;xR809Er+fC5)M-23IvR_?<1`ni*LqnL(8%0Mnm40Hp3^@Du`agTkWuk}MMPna z7ImQndk>J6MfHzUb0J&R!HoTAbN=n32Zq*+rws75*oN=Tud^4zU(|ET2X2-;9mrfX z6jTo1cHyETV+(07?i%mQbSa)m^W?5<;tcN)HT&k#d`-RIfy6$0)5*-NuS@Ca@e>>E zN6Jjqwij4}T+&Q2tgQF{ZVgBFe%e1=#k(^ihPi*5+hiZOPoGk8>+YHu5TNg$VRA#;w_E4dK}Hy?>#HD(23@VyL!@VW@D236bhMR|J zy+gC0k00#Ptp0XhileRjo9S8z5pJ~4XO2Zvrs=`gdbaOn_i3c}ZNqV5Jb#r$2worXeM)y))+m0tK$G@sW~ z{4zl1)$$K20JFZ3rU?~aan18>6z<|3c_v*8vYC0foIXNya&n+DRb$U+Q!h=VUIrpc zim0L}os7|5ihZ|)LMUrar58oz`Ft_&O4=3K*6#OWUGudoqiSW66)hwUz88uvH^9Fn zNsQi4QcBAG?g&;^R@V0klmZgp9A#y3v8G3t1Xx)`rAP~bo=yU&%P~4Xzb&a*_4X9s z^!zzJPFju7uP+rPgd1Q~n(7O^P?&}3!a!3?>LTL!}$@PXB)%3>n%W6 zuI1UmESPvHMx<3(CSt%c9F32gpaA*i)3q5q&kQ}MRb(~o!4?wM=o_t8_UF#5biaq# zZ_9_&?_z!>9xcW+w81^hR)H3hjtwKN10ew;yy_NwEA>TwiLvBK@$}iyrmzbRho4i4 zwQg8F8vb#sZB3%N3V{N|LZLFjbv0q`@>2@r!Kk+?o*?&IB#-GM# zZy0{b*m-jbvH)>-;WMv@dJ7CXhXu`71xSJt!=;t;Z0N2Zy8CV1wbj%W61b3PY$CHZ zUSe|y-Ekll6Ir*~xR_W1f&hH2=vDo6VEPEw-dai;8u(ekBRPzD8A?4I_IJgCMOXGDgI8VL;a#&mFD^2dO$#^R( zI`;c-%+5KWZ>gg|&Bn&o4LC~yDjr9tr%mnT>B(41 zV3NW9%u>eH1;GZ75rvM}iq0ViNU&k3zcAB*%&f|zndEH6F}wGT*|8FKV@6h6<(o+l z?PUSTyth5tR;l)f>6M`~6Zl1kIwAK&RNF2`Kx`!8 z{1A}f(e|z~!;1zGF6_RMxu1?=j?W-1mhz=gEXFHyF0O-kaA&VL1{aZ!_NHU50tk5in!e+Ih6 zdo*^UfsD&HX#5Qwa)X0L7Z^ts1_0KP2gi7d5Dm9yB;g)YM(%tjzh3p^ASusGetIT6 zRC&`?!<&WP57Czg?`H^~_0hace?8-6tZ1UCwXCRbA3d98`vckTL9MB)pOVk4MW>#b z)7dH;i##K$-v12aw>O45bfbS8>;d(MsZw z9ZyNS#JhsPPTs%j`O*aR)UV^ z;2;V4m3#*tWv$$jaU$RBfRKjiI$d@FoC9dV_1Jwi#Y8EPryG^5h_yVqQQUcs+kUa? z`s`^)ni*dkr+m&KY<0Q!azpz{c8H!((dU+G|H;-gIM1<9filvPEHtM$qd9K8>AeeO(fAXysFp#5@A%2%h=KnPJ`1 z(v(UQ-*_zfVJsH7Fj^Bt73U)hj`KuJ<{gkoASMYg*ibX?TWB(|zk(7q~ z_7!!WNjEF**8)}5PF!-y`M$keslZuUJD*Mo8!b>zuD*~^ko-mh%qJ{)!zGE>YlH_h zX@#M{2zQtzSw#VaH09zDkPey1GpDaqx=bxdDHn(ApJI!v|3HaDBn*tO%;4q!sWL0xnBs;Om=`&IJxiL?sawFY zfmhS1pkSH9xphLm#UG~XjWlU#fAy~KiUha^8wPbN=M@pkXr;`4uuSHk(qHy4%FB9L zG40RwwhXckfXf$3jSLLQ<3b85zVwS%VC-s#`>V9*&;l+juAvBgnzj29N<6bj*Eb?mtQQNy&>@<s9SAzuMAm0#xT{S3OY$(Cl{F~5l} z+;aZ-=*s112a-Bwc?>$pEQ{Lf7vm3ZzGAlqRH13@BPjQdrujplf8T(9*v!(b?v@BH z-@+q1xFjd45Iy7okS;v|faB~Z-15XS`R-NLRHtULz!yvPV``Sh8=2a|7cL#3`|3Ak zWoXy%$tNNYiQg+J@cl;i#TwcgH@DgKiILBF>gDY>KA$XDK1=y^ft55h2A&xapGMy8 zuNTfdm3H^yqxE=3pDV%RwM!l;aOEEy21xQHI%}8XgJ)rwD&@Rgu3~$c7QRv!!sQ&C zxa99Waj>6;o}oJ}V1LbVFSZ2G1Zh3fizRB!1=$n$+1Sxf&8wWRRNvkaZ>xaj zYB`mEm86jl8r?}hCL&#=Oio;Zg70hac>Z)vf!)%AfV-Yhm|_DHkNHE`;)2hQ{G&^yz$wmYSD2wPF8%cYOW28#xWO$e`F!`D3gzt+a>7g*WuxoJs zL-d%8JtW{+y=Or756h;#g!OOm$U^A@4`8R(1;0%xYNmA+2lUj)iS7R}m)U~GMlW_F z8TNnN+(qZMT8C55LU8C<5fgDm0AI>a{0uijrnJbKkN(uWrYB|MNvxegKpNv(T>^W@ zVOGo%HxnfHYylQPN=F8hiid>0AEeL27#vDccb%NmN8SAt1PKX_S7xq`80E??;vi11 zguC=}>R`rFlmFYCkbnkTE1n8w5|IQR=@1(w+#0JwgAm zVtwK1=>I*ZfNB6T(MEVY{%e^0>$Ul3(i8&^kgC3mpE97KqvOAqDpN%Rq93=%M@HTW z0lvz}iGAUJ^xlk@nVDF&Yc)wpD06djJugKirKWReXz11T`9q!fxVV?)|MP8Ng%h`m zNDEa}v>)jqW##4hWn~gQe@Ept|MBhve7CUL+S&-{=ubb3pTJ}5d!>j@o_;0_MgHjX z7Y>b#Bp?~diB0t~nHFqd6ms!G@ag9JQJm61v6Lml9*=-4WTsx|Vxr0aMKGs@HfT?m zW;RB?!WTX;Ydx!*PEb9VGjn1!E27C9AkIiamdwbT*(%4 zU%o5G?Hl>80QUC>7XL=U$EW-Dj{qt9uktH2`8k9|JzhZrtG4sJOF6_?mAQ#Cm%axm zBZUbLS%YAH5f?utASd^%tfGrZX%BxTQPbsNE;3Y2d~?bM88+qk30vFFAynUiEs?}q znmiop*hpNxcTN)iwlKh9c%c=g=_uq`PRy@PQt!@h{(y^xmX73h_mRU8Y5pY%WWIt$ z3z*+Vjp2b3ClRWH7BV`M-2WEB{jAnal$lUW!SZ)CBgH;@^W3hTN%jjeLVz`rY9#a6 zLsb|_uU%5x<9dU7f4SfD%mxU--38l+c%H&R9B+Y&>`X$@DY$UJNjN&!bEyY`&g!5E z$OR-FnsM^%gcdJS)h-=&j7;S94vH9~I?b-ptz6s1jH{qEiJB(L%&Dq)ojDVml`mXh!jPh6Ee~HDAzf$}cGH_!9gHVC`GFR@7 zfNiS_I;wPZ6!iBEDIFzjVd%GZ`alqk9NfIN?&#Mg!DLq_JZM~YigF?bR#+4DvB42A zcOQI42^2sI%aIo{u1>d^f~^Xh$Fh*Q^XfI z+gd0}eVrcBJ&S@E1TA61j+Vjr^eGxSU2gK(`7H@0Vdw;EPgfzaE`HI_Z6lsx0F&BD&%-d+9fI8eb5FI(&zVoV6e{<*+FoB4 z2-J92>)Lg7QUqjhY5<;U_rDuKp9|D@NI=qtJn1K2nFI9XajU}GCFnuSf$)N>^f^gD8 zZWl*-_X}-d98tL}vrJ6##oox1HO>!qe?1ANj-G|c^@x&uS>NBhV!aQ8bVb0nb&_V? z9m5&(doN{G1$6~EG9Lx*os1zu5Z!5If>>A?r`c;el6nW{1u9_amSyHw1~y_P#;oAH zZdz*yTE6_t3;X{(MgWr)dOuZFRSGJqITx+6#hz?|V|-)*wMt4Vd*??oKFRIVAwqnWjtViB~@YwZX**&>M@m?n8el{qKTE)D!L`Tfv1 zj^Gbl;ZjS*>kxO)Bn!*v^er4b@S)WpYTcMma@O zL;7H3{5^f#Rl-`$T5NAnc7PaAsdaBh(GUdcnk`R7brm6tRAe$$MnG%&aCbgGJqkKJ zKF@}gedP60^|`q7VM$IvYFDRm6FY8z+LTjuj(zu5;HD$=Tu>~Pf^73S3YF!H55 ziXS2qsGfgDf5#8R%8;!Qx52&Nosj#4XL?3ywALM7sKKS8_ z6SR}H%tr^PILX*Y(~0?1@KpZ$DE=2jb#vqR2SmNy0|kUzzBa+%!9x-}z#aDKcRkRW zyzPYtodIp7f-|+37%&Zk5^MR2l78e;3``C9-W2S2Eh_A~p z*Rrbm4@y~%*}i$O3`epQBBLk?DCrPO_*5IS#6UaJ|3y*zAOiFWb8RBL7(_Dn9la`2 z?y2=n8^LPie2>J0(Xk3`>bY%FD`N&vgaNu>{33r5@pwWC8DpO|6r9-Y$4&Z5vIyKG z7^Ev?o=ze={RZ%PE1fxXbaQfQw(er`@sVLfI|qLzjyD86!T^^O_4zYK~+SV9GMb2uiT7yKP`5)9LaRCwjlkdZj=H`AF+_Rsz z1$akEhcPD>pwpse{n-w|*2oA+b4kNO?)Th4e7j7YZsz>-JE*-*1&veD?Q0S;ZA8i5 z>;=l+Sm;19YTYa=Z12&^t7*NL+zu}wl;kg=0+>utP*8|d`(^WakNp=$Wd|3`sZt_= zS;BTS{njr82@gBKOccR5ivaBeA%|%B6;~@-MPfj)8BZ=tNh9IS5JC*n_3^{_Va4=&2d8x5 zhhwK?NzKU7ESiL? zcd(@_^$THiD%X#B{#A*<1j?aqcN!bBx0CK&eaD2NQM67OK=)Tx9_J`Dd5@xX%d8E6 zLB*FY(~V8;7M*-N;))1xSJ!G&3}LWMCrlmcKq$#INmck`~Km z7rnxyc@O74vTFr0g_bH;4J7E0S3ocu)%&_L-9WNf^$=&##tXA-I9`479pV5~0&x@_ zi3^72QA)^g0k0vMM5dWSmFq!#iwB8)faaDIZCS;d>U&;Q%I1GVY`LIggDZw)sU>Q5 z5N)|VgepTD0zri-KzJ~--4!pn&#VN@O5a4Ol}pkS-0p@@_+k?h+ z%KKs5&XxMIYne)<0-WGv90(#Oi(~CGXaC2Pw5pt{6ki!eCSpOwY_pc27T+oA0G13mz7y3V~ z=r8-3*Y5CK$P5jSM2G(nGWTb}m?h<>zd|@>&UJ7grL=Lg3rw$6vVocXYz_HT$ZE~3 z3I9Dn8 zw-&ls4AOAxv|?q%&b9SBXnkWdd2Ez=sGAF`d9XBGQ&V^_zP&0!wjSR*ZC}gnsK|M- z&T6fOP2>^Kfbf1g`Oi`5f7nxJXLEAi2>@@(&;Jz>(?~~7F80>LqSY9U?Si%radSgL z!U2U3PTc9}x$+Npif6R`FLw&4k`M!Mrxz2hNM@Hm^p(Gb?GiqNngZ$-Xsd57yh@hM(9<$6g@(VUF$R-be*Flzw1lX1L zd-Tu8x%k>Z<#^pk#O|V=!QlK|jD$37aSZT)kn%t3u?rix<0Rtt zQvZ;rbYLeX0>x9d9NOn(zvr;nw-Ne2HpQ*7=fja6izy`UdufTFT*Yh^$4~%aCSm0W z+3%}qTTza65~Q+hM{a>6NC#(PFDC%6WZr(}E)KX)ZIp@78_l_q-vp679+V)nYIH^t zur6cRvwB;sE_?9nkzd>%5RA1pBrMc0Jwe(X&)<^+;M3N`Vvx|A z-gW-iS^_oc%!ITJgykxQIDPY9Vpa*&Z})Nk=S)Dnyu7Sg6StrPko_MAk6kvWrdo{Z zAH5uf9TWtHV#4CYar%|oGzu~4k-$BwMOE+D}-TnE#>-p&#{+TG-joFX=>C+IQY5k z^%z4R9dgNgZCiN6D}4du3}ZiAjx|ja4~fC|XNZ6gWGgRwyI)6{QAO@Y%Y~5cEI8IR z4BQ<Is@@3~-DB{a=>)az3>7T)R_;Xr-I*I;!^ry!&uNe2kZ|f}&UbJVf zs=e<+y*e#NyJv~bx?n@a*WVhaAD2>dv<~FgPWECC-R-BJ9)??2j67Onwt68|pPXE^ z8s>kMB*BK!KJ~ZY!~Yi)J-Q|stZOwu*B;zTDHlF^Ixq}6I#V_Au@4^gC1amZ4Kgsn z9~iN=S|tW(Du8@Ofbuf>t}~_lk%+cbSLhSiOBmx%UA#s`VV$!?&(HV&uhsltWSsv8 zFa2u({qx6RZhn4rV&Z)-AucZO!&hHl;6EPF|2S;^5g6Qmhlhs)o`WVH9_eXmY4m(^ zTtPy4GND|2)#FoifAyY!h(J65O8c+ggN;3Ycxc@|6=H5}UDV#L*>mq{-?#S+;oaqZ z4-d!8$4CjX+{sqK!(LK35gmU0nx?(BK!)74reo|@8`ItG6D;=sadwX3amVeKj~d%X zW81cq#%XM`u^U?xyRmIIcBZkd#*E?_K)m)?d`ptLFea`2MWTa=BxJ#zd z+`D?@M1J^FS!nU_ZCP4a{oKrlOMP^lv-KZZVXAnhjB~63O|prNG2}h-!I!!0`iji= zue7IrOb=Rk=f@V`uHD$?HNswBaq%@8O8u98+&ehs4V6($wxRde*YWk) z=KZCp(}bzT55#mGH#UM9?EFwq&?Zwu^+d7s_{l&&!dj47bTGEmy zt1q`G#ozN>1}?^TyF=>!GaRD=pdq*;NPzn0>nmV$uZ8!gx1hT_2h?%)K6^QYtWW7x zL_wL9h#7SJn&;_|6>$Q>7d^O6GM>Z2-~C>lPr*MxwnWI;x1dM@WQrDra{@mevJ=Ao z+4wNSb&RZt!rF}y|4GVu`-T&9C+AOA8-7&ChFV`(qbEKwVg1`I>f?Vmdrk{s58&VPU)|`LZ|H~!*R|E~z1*drb zv~6l`7Nq%EQ(H^?fN53J-t)W&A-85IY=jF89d+VtqOjNQaL(F)B{0h5p!w+eHF?g7 zt)k(}b#T;F!ee@pF;>Ciz)b)dqWu}7Jk{`Y0XV+EPF~xMZuX85%1oGVDPKEJZS(?k zD>zN5MTH{pH41nhrw>PcV_GuAQEF5+1+WLaUcj}`ZWzM-qPIBt>Sc~Q8M8mBUC}qa z7`#|4&y`hJ?;K$vTh+6ionLAjHBjl}V>^FmxqP!J7|U7jIiDAkeeUqM%j}4vXdYbGN*X0^z`6AOySq)RZe94)5J$1H8e|o=wrG+A>x4Y8O;lCYC zVEul?CzMy&zp@$_bnUbB9P!_C7KknVD=Uit85x;}KWTEW_BI~=m+d{>0-lOzd)poX zy5bSQAwW`+!MM-Z499Hy_#`I4qO*m5U#DBaT!*7C5ZtrPJ5f(?dZ>Cs-BAV2Au8W6 z!(gBAPc9B9t$}7bpg+jJjBd!@-@e&$uBfp`8e{p8-gM9E_XXV7`!@TL%fPIK@h?{g zuX#N!Hh&&Xhi1>29$#h!sFN%z>Pxx*^zr1wVXPa?Gp+MeXFF=fT3_yFPYn{zj+M#p zS7j+4>c-G$^X(lplSb)?g)~ zypvm}k)1s0RE)o~64udb9;hPgKk-T-a==tIpG>wB|5^OhiiLPW%-NY;$E5U0YYn>l zr`MF%qh&HnT6;0wwS1DlbRD#-5k_s8u9|dRM^_l>em2Kptj-F0T{j|}w{9qO4utUf z_p^K45h$!-OB=EJPdAM_N_EgT{Zr9Lm0n;-rQ z1^AEPW@Bs1%EIz{Z7pkRsd<%}Ueb`zGW0<`UDc#j2T?7O zeR+EYdK&M&duh^+@0iF3azHaneK)`NlJ+=DF)f4gP5&#I9D zxR?=Xh15d+kumm!CovTuiywrCf%XWy3u*PtFM|`Z!3W-p=K(^!zX}`ACOG9Y7ZO-V zjSW7Zs~ikXB_`Imzkjv#9wa0G*W(vp8-9=|#$ceWQj(xP!u9M=JcyGFKs|}DR|p5~ zi_Fxx0!1mS^lf!r$~OGC6;S(r_waDCBs3{Z@pGDs2H6v+8*X$XCqIhVcrZrI+>u(7 zKJGFy%S#B-R?;v+moo?e>}~^NzU&tyJ$s*TSAlhB@Eurme!s7<*kcpBSYZo1Bn`uE zv2Gw3u11LtUS5J;zCp%_%P#|(rjEZ_yE{5hoNWJHEVGYCKe!^iY{+2NeOa2I(Dv^a zY|jAh2rk7eNL(K)vIMUI{-8q8%mr&H;n~UalK>Nq9uY4ADpG4~*H_bK8hVZf|GaoP z|Gap^>eTI#$NNQ=+vcW<-nuxFi4NMG7B<~fYUcU41fFxBiVU-q^5UEw%NcLlXNvl? zxNUw;%(zn?3vj=BZy7F|MojH$N%_N<~tzO=!0LV&42y_14i`|HGFKrJ%?3_E>= zhN`|^!=LQISCY?hj6G6sO%iN2-2q9S?l+9BZZ}jhQ)Oxe$A>cIABTme$fvC}9fl(4 zB8$v~G(=gY-27mL9#q=8-Gh{cN!0^i`V|=>8In4vzu-huq!VE1REVr3GUQTA^HHKK zdvkwq)ka#YP;Q4yAALNzif97j&L~ z{dy?t;^Jss3mL8q;wC)c0q^@Z`C-O1FFlHl?`I;$pP9de9vZ~V$9_dH)m7F>b&U7; zsDzNYLEp&nD#2w(kiU@vwvo7VX75E9JJFsR4z+HrN9U~^D~&7;rly|DlkHbHdp;+p zk#t$-`aHq7@@+}}dR7*Awh~tYz8tX;PABYsps!5^c8Xl^_soj(ftyM1Y$J1z2zvVY z_JP)m$RLrdB`!6Bi<`R2OttlTh>+D{I7Evk<5&hAVl>db+=@QuX{C#-#y-*-bY1JN zr>w5Zh(o?+Xt`(W{tDMfp!0RAKK08VkRck-9_Ra&oIElvlAMVzXnWapwHe$Lrs=2@ z4G&#GMgiRP)Kc$UIROJl(aeO6`qIWZaZhFf}X!I{*PEsGL#`JEk;_ZjiA`6eP!uBjQCBkHGs zy^-BR#Ixf4u(1(EZ63$bTl0(r}NrsiRikQG>1{jMBe~IoM3JH@&#lllkuwg1J05~9*(kMhzad3nr zP&hMIZoNUw=-JHzu;e`@pwJR&T^ZL;rE&BeP!jQz_;*>ve=Ji;3LcwExE?=K4;vf?egZ{VMt;JN4+Dg^8sY`X7094&hQ&W(A!s9n@rT^ zXGZ?L=0RyFv~<1k`I7y{&pi+$Gl9aQsHS#cU=8LvE%6Y190VsQEtP(4NQRnQ$}29W zyt%o-#mApLr|=&XKM?i(A!lUfp7OEF(tne=f-YsjG6oGvA22*5?!lEDdR*$UuaH|O zpeI@9fiGU+MuiXJOkT>|7d@dFTml^4F}dhIJYns|G!hwlwKs5ydw2Ygx#=n;D_> zC(r6|s#T1~2z9e4caTDK+1~$SK1_KsCQJxE(e5(iSG`7zDRQ%j46{NZ^kW;8cZptP z5MBq^WDuTHPY>iy)|it$bHwcX7~y0Nbv-S_rwwi&rAb06M&5B=AD zcxK||61y-Z2y!2mp*#*!H)QT*LE4BhKE;FFhXl^O*qU70x*NL++7SpE+y;&xQdS#x zM>}s~U1lM#s5(3qhWVzBJ%ojqijpf7&i=s-0?8zwr=J6KPKF6b!**q?t~q0=bI>!f?4 zd6meDQSj#iJU+aLe-XsBrZwG$OaYP69Y0gkEJP7W^y?QhsPGZo)j`BPJgZ1+8Oqb} z*D?#sjEt;e>ZLp!WkZY&ii>XVTTw3J0p z1_oa|A>IPPu@o&5lW!Z1v5(*Fl@HIiKBCO6k~Hl$EIkU4Nyy$1I$o`5<9-{w)f~og zSRoHb-dvLw{|Jf82Ge`T$apa!{mJrBVIVfiC{un~Al)@_CWwKnjq~GmSB9g;odnyJ=o&zSlN)C*+*_O3}$um0_uh>6Kp zP>jyd7XSb>eR@RUWKyIGH7aX)@%8n5K!Liy7<2+u<*iG|#GCx(LU~Z**Twk9u4kGU z3|#!YWVB@YjKKq;V1`r{g^Cf>1@%h=*rIlki@Br@v8Mt7pr2 z<_8_`bv@K;h}yc)yX5zxotJwrSqcsLz9IaQOcyvbVVSYvO})#R@0n6RTbXy@@DS~f z9}@frZG($J&Ky)+{mG&p&U%h-R3{7s2YpD~N4E1vA$xly3a-Aq70fyfHZy$F6fD*F z8^0Mi*<&L;DK);{D{N#te9J=%32xS=+|{M6Uq+eUUJ%1B@5EpFWWbHe^5}cI z3fua^(DL0)4z+T3drM*IOoezi zL|z?1YxnU_?nQW{B)TAZw`*j>l-a!XnUe%`^=VO0CH#OCLjY~J0I zK{a68N>plzk6v(Wxt(Y4&}iC+Ow8h5A4ttFuMjik;^a)esa&v+)8Wx)txQ-Ot8cxv zT0%AphcNJ9;<>?puj=Z6=QJqj)8%0 z;|fVbyz5&|AS{k?LtPYh3XyndLBYxFEMyqd+>8+m5VtBu^Psn_C~3vTLgFINgE)7^ z%~I^c?Vv7DS42Cv5mk@&6yumE^1|ExEaur@oX z@yo0r(p60|^jNkEo>h#C6wG7uxrsgl7j~cwrxTA(NOd4TQDrYn+G;Ng=#Sd7TL>BO zj(ddNkj&qX?URG4)tYg<#6kg9?Y-hNi;zCbxz4%3_i&9VaO5{AwP)gz*>9xlYia_E za5qfeVSuZJB)!Mm}x9c0?gfy}Q48KE8VUg>&M3x$N^8O4wlO3DP`(-8bdw-4|QBdvJ z%9?E96OzfRW92ZVIlrqh*7V0wuIt7n_2^1=8I`P^EW{|uKr8XS`aZ^~WpJpUz+O0D zrPHK}2143UIeXInD#jj7H~Q8CZs+Fk3opBk=Gq*Km#K1T-87DEPFt_1vfL4ezE|Kf ze>lJ}Nm0r8ix`G=1_RvTx#8roK&P3OO58mH#<-<&JFgo0-63cGfp}Fl9C=s6n6?)x zuzEKXZ1$XA2W>D(m>GJ?8?AQmDn|EQ4!R{SIMEicLGN%5mmE=2PS*VL|gbwi< z3gM`w^hIl*ksfHVtIN}K_bPxPc1&V)(VvCFLxQ)vHM#6-+|wtE_@M@u&axFtVYo8g zu*JE;H|w20i<9hU39GJwXK6jg4Sz^{T6w}OU?S>XWP%n?eMO}kut*@}wRsGzH*-_A0j?ZN~YmcpjIohYJl*FQv}S!1ZFl!bki;Wu<;Y7b)PcY1$#3HpM{A#i=x6q~&K+&#@ z{>?^5&5z{?v%tQ-k^N`yj{H~tMV>Wc>e+!bn*-eT&FMDjR-0~ctyg-5n0T8~r9asY zszm2ONu9zoiGjt%Ka+U=1`o_;T8$>JYrHQqWd7+JDsvBXC>3}j$9CpR1PKNn7NVFI zrQ3T}PoZEh`&wfwL%fx9!7-KY5=b`7s$3WtSjwWZ7`*vHgK1nYk2GZ-V{TrBSR$>& zzoy#Jq>i`;ol9UjXB7R&Sik>`u9nATeAkD{>OzN*si<|~Q?2sa$rxx@>|}D55D&tU z(rkq&gHs;RDtb6MeMAZQ=inF8Dm`;Jx7yP(`yiTeYUrKVytagVSq9}L;LucY`@{1T zuaV)&7&vepwV3Io(pJV;tJ;0S`&1KLYwi zM{{SMq|IuN9pousTEru-l{=qx_uv~=X0T2!+10EC9ABenH4!U01pE+dg5oFG)?|pO z@s52Hfh2U1YBE&R_;NEw8JaNw>;=wUvt=`GCeD+8XUqX(YZ({u2|a40c=jD+Y7bqt zl8({a!%HWjTAYR;$P-id0a(4@8}n#HGaz!JSy{-rUw$<;?@9L=YNYWK)C!42#VhYd zA;6$rh?1L;Zi+=qOfl6-q;#wG#TE&Wey+5H^ZP{JIy1-#zdMOY@xn@)TH(Q4Q!A}K zf@#Mc0nUacpv!*fvuQG2oW_5SxrAH2q>*?ZI(~CIGP=3ldOD7UiH$BmUXU;1?;hZ4 z0bGwk>uqJBCoE2Hj$5roNp z&aPVgm1!Q}sL(tD$Cv3FC5yVKfezA}lEq6@!BS&$rm-;S^>~dG7I1-#nr=daHnqXLRYQ))dxrbrx0VyoXOHI;Q z#&{Z2-Lk_ZcVK>Re}Qd_87x10XKckPUacl$s2K!;{{9uILK3>VNP?jxl2by_{H74o z=v=a6=aM@ky3vGpvI2jm*mbNUxZ}hTs(dJPC%mhL3u~?CT=DA^Ls&32wGhw1G+hhQiV(WUII2 zcVrS1Fc!gc%Gy|nG3l7yu#s1;*vUbv)VPonRc;My+L>1NsDT)#)adi0mhB_-e-NsD zxW8hp;e+h1W24FYNAPUZIItg>d2oTd&$d3}BNP+Dfsg#+UF@NO%NnYvHlg}5(7YKl zo=;DzLS)TR%GQca`!KKbJ{T_jB?X}@w(M_(1y^@>q)kq^`P|D{bbb5$7&qY;ZnSow z^6Gc^*E81h-98g)V56~$gsWIZ-ZFo%Z z%fUv~DLVb2Ze~;iw{^S=%@A0(ztZp^l615_6mG^Y5t^h`1WtX5x2Q{xgo-bXzyGy_ z_cBK6LRpT4+IQ^!wchj@ZzsyZIVje}!?vez3@qBI{>`Z)+8(9jDYqk^LYb0#6NxDB zmuuj(t79ea8WGw0Ftp_sF1k2TU3|3!NF^S2B2&7ohEfMoOh5G>$ud>xjj$I>%Y=4r zTjd%Z4`dSAzi~>bzqW3nFs0BLy4{06)NCdzF>#LF$>q|~UBfkK^Q*5|(IH$K)?bI_ z-TKkSA**c5eol_yacnzXw1)z$^ZNlTs6a{Aiev5m_%3>0f$7T8%Gy%rhNI;gZjsi2 zO08Fz#ft%L@8K4A9f?;G)?wv%DPBwj=at8vT0*75bYT_m=2kaeWRlJ4*Sgwwf+#pO z<%+26;@Rt5yJ=C>9U9jY$zSNxP%Oq;V5U{Q_ULMv_>qde`Z}`mvD>snSOsKbP`s;X zO&eLG86dWYP=w81xpN8f0Qh={~KzeRo`x?b8swirL%bcC0oxBbm;Xu2P>a6lXp>28L$ z#rpKGRQrcl$lTO|&|D$B`b(l~wBQ$s&{S(_W52$8Ru}Rd4macmSK+pcAK~@6$g7=H zJu)x84ZO@JZK2>pv)v9g2-wmuR<`HH#>%}9Cou~d#+dS*Ix}R>T@|QnASM`F<^AEh zbG3ycZ_p2G-6KViX%WE`)SI;>=omg>YO=)zeRSzztlz*TC}FF{&2IZ*d2#Y{h4ss= z?TgjTfH`!hjuk^X8;r==PKVdZxBZ=eW3ti*Q-^^Z@oY6Oowr7*+){)p` zJ-tiq7jaOk5Dzay8rWM13K=FoyZ!S)k>CFPzeWtSSgFG5rswBp7-3KXjgTaOnDt+* z{{M9w$?RG>IVB_~V}f#OvdYSzyGg03CHl+<@UNEY6`<^!aCks2Scip6M;fRm2A?3y z>hi3h+asbK$y$3Bi9U)<=j7DtMAb@K$XZG3uY*ldPk!KG3vvgaH*Ur^Yw6eQDw<=5 zszOsIDSkOC4~LN96F%sYB{%T4C4PlCg*xx2sdN_5dw@v*5%sojZU7-6P%W*+?VSD@ zpygF&X6BtdD3tek0wRMjf?BsSVinD zAVYpUDyL_n=&g%5gO&Dw*^ypnmmcc03>FAb6IuyZnG@=pwWBtUy8taJb`Q3dVt=T? z{&EAHE5b1mwi6IDfJHZ zAZ?(WN;N4;#d;8}MQSV-|Ase)9W{81;1@_|x;?9N)XsSH7tah6C$9&zJCo zRhHsBW{H8}Z@h`3LY`9Q?4$<6D9+ujGUg2=Js*K)Exyw){=e)fm?m-J|4`_Z5a)ip zx%z}uZIiye^_LUt^bmaQsI;PB9faJflgPBZn1c6+kB${pC5O1ak1DXx&U{wi&3xXJ z`zqiE7dLL?`kEiv!a=COg-Sq|!WhbRaK3-3#c-E`adIl{WQC03^ZEYjlvllDgI=(U z+a*l>25D8}Moz}TO|MQZxxI%cDhWJ0`tJ8RlFhE2BI`YrZui%p+W$M4zKgr-@15)C zjZ3AhV!bX%Cgy2gUcSTKn@t+hDJ;v8a6;l7r{{a8^f}oAy-7F*{DsZd89T?AYSU(n zc}1<48-;P`+B_v06H;n0ml28N-J@~?+mX2k!J1H2zHo$9HGLM8Dm36cQjYVXw#0%J z^^h*jb^jzE4gT3q8OfPm^wK!3geiwBqKv3%Qs`4$Ssc8+1 zaONf}ut=Dmg`Lz_OBd|evFV1BM$r1PDs3J2I7r!+J{9mQ&8VIUf9`Quz0&{q!&Y0v zT~)Ozt6EDiH$LT>dbY!Zm$$Qx{nw|9gEp#pJ=<-;rO3s_lc1*zm^D)z9#iD+HC+M6 znvbFdx^~P3KMsw!;6i5S$YY9EexoBi@!mUvHop8?7R27|ZxHKMPH^-_AN!hRhU_}1 zLG>zNrY{e}Hime{LOtp&EdY%3I7=IT{uel~1%&FS^e(ajjTG!OR zutr77sRa%7#TJ&H5?znH%6sAhh_07DI`-D&9IlEWtDPZ1GzUy)_p|Ine9i3beEwcSI6~> znd0>_*OJy6q6acdEA3{#m=llg8i1b(b9{&=f4XGQ)xM5bC#pFg1(Kh8{j6or=&!`e zXfDms*Y0<52BL_xPZLHaF6@0^#2j%v#*UGKYH3t^sy3qjZU)+dn_yyOc{Md7{qAM= z7Z6;rDI=;CR1ePaqgeUPuX{1FG>~y2NtdBD#P|$*pou2Vn} *F&c_qeUbBFtfRw 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 AF#rGn literal 0 HcmV?d00001 diff --git a/doc/source/node_management/kubernetes/figures/vpw1612788524636.png b/doc/source/node_management/kubernetes/figures/vpw1612788524636.png new file mode 100644 index 0000000000000000000000000000000000000000..6afcbd0794002a4f42dee8812146107941bd4fe2 GIT binary patch literal 25675 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

0ee@vUbmPgoY!qw%zK$zwvBNSx zgjk$k5I9trYnRE;5eCawgoY^U)2D?bq7IZ4Mrwc8>`hF>d6tz zUADn#?=PQ4fIFWCE-vP3TPdE!%%E-;9hi=>en`(Ri0c^i_N8*}xW4HGdoiyfS7->} zEu*iL;T}+C>q9|1diW)mqD(PQSzoFzU#uMSJF3@MZdStmb%yf>cy^4@JO_z7db+_< z9D%8up`%m~0qTHWN9L^pDW3J-fgjH;$Z=d%Y5HY(XFi}2>7hQ%^sJxa*mfM~G_M+N z4L#cr$7xHnPS;LKy)um~12oR@bDCsTUzcq0 zQ1pH7i?JJszV(fz)mshq8suw7nP!D>t#;LoNZ-(#+RHcY&Ht>9m*_m-YD#^XUnkHR z${9_wPy%F5q2XfdyzY3wx;_~(S9i?4$nI^v#S~xl4e-U!%5lCpESII}MWVFkxql)#7+swW+`vE;|g=G?G0nhxFnJ+6HpS#F#dXV zNKJ1gnE3ieD#oKs9^s1kfs~8nkdrnMrA{85EuPB*$Za&7%jF$DqKLJN_Tl|UK$9w~ zLFueI_o}jtbm3H&y#R!MrDt-I?I+RAiU*;ABYqkwt_C?sAer{yQZnNUvR&fl{0ecm zlBmt>{=&*?(b$sC+H#N}L7-wiUX20T>&wS?R_q=Eb1Yn6O>zhNey#Q9tVw?oM=Lcz z1msBNldzdH$%Tm&ek##?6F{AvZ7lh~6ed?W=*+j{{)ieumLoNem%b1Lg`$DlNkD`W z-AG4q$OqY|sxRGrSj88TB$OE?Yi{Ij3f1!$n3Y9BwAcoWDx)+wFx$1b5@}N2Ml;!= zN)7?w=&#>7#l5ZkV%xEB^b?WfEB36Ro9x~=&C~l~X6;TG85#RbG9Or81MUpcI|00C z|J03C!Ri@L+sid$ms12Pp53cyydfGR@iZy&(6w5WbQ}Xjj>PoK;-8IZdzMI6L0vs@ zu%XmS2_(wYYlFXApB;5q4HA7qU}`qWI`0tbcf03qo6x(d?1Qqd3+yR-+Q)~4 z5dchz_1V0O?28y^(7a9KxcGjq9+!IPT%3H7v)8o5dCq4=0p;Oz8@{g)YQvV1CgQ?C zO%y-YjL5?sv&@KmEkq&k72h#s1FINS&wD|WjRo~o5#9@yH#Ai5vKuDtsj$RXzZd3V zh9r<;o4-(2T^gfHV#gd7J|Y3_GyZ6hbhFWqkU|+5#p(~j#$&armSNQ{!wi0}e-uM- zzd)-?LIZ}c$Q_xxedTAI^aj}IzRs3tR4KY~jZ(9vF}w=?!X5)XTCjFZBSHxi}h<5u^R@Qd|c`VsGPEs z9S;;XHJ@mGR}VI%RKHcQ9PaU2PIzRMDgIb$F##5{Lz(cyTFK@BJ3 z_$j|6i8YE6gat;1eLTJC-BUTu9)P{*o6Ys+e#C|+k_%j!$LxdabYus@AEJE7ada|L z2Slz=fdV(~t;gFl>$a5MXV!BZj@4e>jU(tXb*a4=Z~VOsce*2w#w{Ne=S+{_Zq*iI^lCL@Np}gsJ_e48&_a8Teo!FC$5cRwcTlu6pO9k2fXdb?f`hSfL?WObF zA`3TB+7EFdYoVKeG&a%qNd6rH@beL>I{Vq*Ior#Axf?pgsxbLN`tWu_cwmCPDuXdv}ti literal 0 HcmV?d00001 diff --git a/doc/source/node_management/kubernetes/hardware_acceleration_devices/common-device-management-tasks.rst b/doc/source/node_management/kubernetes/hardware_acceleration_devices/common-device-management-tasks.rst new file mode 100644 index 000000000..6151eb379 --- /dev/null +++ b/doc/source/node_management/kubernetes/hardware_acceleration_devices/common-device-management-tasks.rst @@ -0,0 +1,39 @@ + +.. fna1613683064051 +.. _common-device-management-tasks: + +============================== +Common Device Management Tasks +============================== + +Some common device management tasks are listed in this section. + +For a list of tasks see: + + +.. _common-device-management-tasks-ul-rzm-cpw-r4b: + +- :ref:`Listing Uploaded Device Images ` + +- :ref:`Listing Device Labels ` + +- :ref:`Removing a Device Image ` + +- :ref:`Removing a Device Label ` + +- :ref:`Initiating a Device Image Update for a Host ` + +- :ref:`Displaying the Status of Device Images ` + +- :ref:`Listing Uploaded Device Images ` + +- :ref:`Listing Device Labels ` + +- :ref:`Removing a Device Image ` + +- :ref:`Removing a Device Label ` + +- :ref:`Initiating a Device Image Update for a Host ` + +- :ref:`Displaying the Status of Device Images ` + diff --git a/doc/source/node_management/kubernetes/hardware_acceleration_devices/enabling-mount-bryce-hw-accelerator-for-hosted-vram-containerized-workloads.rst b/doc/source/node_management/kubernetes/hardware_acceleration_devices/enabling-mount-bryce-hw-accelerator-for-hosted-vram-containerized-workloads.rst new file mode 100644 index 000000000..d8a0c7295 --- /dev/null +++ b/doc/source/node_management/kubernetes/hardware_acceleration_devices/enabling-mount-bryce-hw-accelerator-for-hosted-vram-containerized-workloads.rst @@ -0,0 +1,133 @@ + +.. zad1611611564761 +.. enabling-mount-bryce-hw-accelerator-for-hosted-vram-containerized-workloads: + +=========================================================================== +Enable Mount Bryce HW Accelerator for Hosted vRAN Containerized Workloads +=========================================================================== + +You can enable and access Mount Bryce ACC100 eASIC card from Intel® such that +it can be used as a HW accelerator by hosted vRAN containerized workloads on +|prod-long|. + +.. rubric:: |context| + +The following procedure shows an example of configuring an AIO-SX system such +that it can support hosting a |DPDK| FlexRAN-reference-architecture container +image that uses the Mount Bryce HW accelerator. The procedure enables the +required |SRIOV| drivers, CPU policies and memory of controller-0, and then +enables the Mount Bryce device. + +.. rubric:: |prereq| + + +.. enabling-mount-bryce-hw-accelerator-for-hosted-vram-containerized-workloads-ul-i3g-gh2-l4b: + +- The system has been provisioned and unlocked. + +.. rubric:: |proc| + +#. Source the platform environment. + + .. code-block:: none + + $ source /etc/platform/openrc + ~(keystone_admin)$ + +#. Lock controller-0. + + .. code-block:: none + + ~(keystone_admin)$ system host-lock controller-0 + +#. Assign labels to controller-0. + + .. code-block:: none + + ~(keystone_admin)$ system host-label-assign controller-0 sriovdp=enabled + ~(keystone_admin)$ system host-label-assign controller-0 kube-cpu-mgr-policy=static + ~(keystone_admin)$ system host-label-assign controller-0 kube-topology-mgr-policy=restricted + +#. Modify the CPU. + + .. code-block:: none + + ~(keystone_admin)$ system host-cpu-modify -f application-isolated -p0 12 controller-0 + +#. Modify the memory. + + .. code-block:: none + + ~(keystone_admin)$ system host-memory-modify controller-0 0 -1G 12 + +#. List and enable the device. + + .. code-block:: none + + ~(keystone_admin)$ system host-device-list -a controller-0 + +------------------+--------------+----------+-----------+.. + | name | address | class id | vendor id | + +------------------+--------------+----------+-----------+ + | pci_0000_00_16_0 | 0000:00:16.0 | 78000 | 8086 | + | pci_0000_00_16_1 | 0000:00:16.1 | 78000 | 8086 | + | pci_0000_00_1a_0 | 0000:00:1a.0 | c0300 | 8086 | + | pci_0000_00_1d_0 | 0000:00:1d.0 | c0300 | 8086 | + | pci_0000_00_1f_2 | 0000:00:1f.2 | 10600 | 8086 | + | pci_0000_00_1f_3 | 0000:00:1f.3 | c0500 | 8086 | + | pci_0000_04_00_0 | 0000:04:00.0 | 10700 | 8086 | + | pci_0000_04_00_3 | 0000:04:00.3 | c0500 | 8086 | + | pci_0000_04_00_4 | 0000:04:00.4 | c0500 | 8086 | + | pci_0000_05_00_0 | 0000:05:00.0 | 30200 | 10de | + | pci_0000_0a_00_0 | 0000:0a:00.0 | 30000 | 102b | + | pci_0000_85_00_0 | 0000:85:00.0 | 120001 | 8086 | + +------------------+--------------+----------+-----------+.. + +-----------+---------------------------------+---------------------+.. + | device id | class name | vendor name | + +-----------+-----------+---------------------+---------------------+ + | 1d3a | Communication controller | Intel Corporation | + | 1d3b | Communication controller | Intel Corporation | + | 1d2d | USB controller | Intel Corporation | + | 1d26 | USB controller | Intel Corporation | + | 1d02 | |SATA| controller | Intel Corporation | + | 1d22 | SMBus | Intel Corporation | + | 1d68 | Serial Attached SCSI controller | Intel Corporation | + | 1d70 | SMBus | Intel Corporation | + | 1d71 | SMBus | Intel Corporation | + | 1eb8 | 3D controller | NVIDIA Corporation | + | 0522 | VGA compatible controller | Matrox Electronics..| + | 0d5c | Processing accelerators | Intel Corporation | + +-----------+---------------------------------+---------------------+.. + +----------------------------------------------------------+-----------+---------+ + | device name | numa_node | enabled | + +----------------------------------------------------------+-----------+---------+ + | C600/X79 series chipset MEI Controller #1 | 0 | False | + | C600/X79 series chipset MEI Controller #2 | 0 | False | + | C600/X79 series chipset USB2 Enhanced Host Controller #2 | 0 | False | + | C600/X79 series chipset USB2 Enhanced Host Controller #1 | 0 | False | + | C600/X79 series chipset 6-Port |SATA| AHCI Controller | 0 | False | + | C600/X79 series chipset SMBus Host Controller | 0 | False | + | C606 chipset Dual 4-Port |SATA|/|SAS| Storage Control uni| 0 | False | + | C600/X79 series chipset SMBus Controller 0 | 0 | False | + | C608/C606/X79 series chipset SMBus Controller 1 | 0 | False | + | Device 1eb8 | 0 | False | + | MGA G200e [Pilot] ServerEngines (SEP1) | 0 | False | + | Device 0d5c | 1 | True | + +----------------------------------------------------------+-----------+---------+ + +#. Modify device 0000:85:00.0 as listed in the table above. + + .. code-block:: none + + ~(keystone_admin)$ system host-device-modify controller-0 pci_0000_85_00_0 -e true --driver igb_uio --vf-driver igb_uio -N 16 + +#. Unlock the host. + + .. code-block:: none + + ~(keystone_admin)$ system host-unlock controller-0 + + +.. rubric:: |result| + +To set up pods using |SRIOV|, see, :ref:`Setting Up Pods to Use SRIOV `. + diff --git a/doc/source/node_management/kubernetes/hardware_acceleration_devices/set-up-pods-to-use-sriov.rst b/doc/source/node_management/kubernetes/hardware_acceleration_devices/set-up-pods-to-use-sriov.rst new file mode 100644 index 000000000..935384395 --- /dev/null +++ b/doc/source/node_management/kubernetes/hardware_acceleration_devices/set-up-pods-to-use-sriov.rst @@ -0,0 +1,81 @@ + +.. ggs1611608368857 +.. _set-up-pods-to-use-sriov: + +============================ +Set Up Pods to Use SRIOV +============================ + +You can configure pods with |SRIOV| access to a Mount Bryce device by adding the +appropriate 'resources' request in the pod specification. + +.. rubric:: |context| + +The following procedure shows an example of launching a container image with +'resources' request for a |VF| to the Mount Bryce device. + +.. rubric:: |proc| + +#. Source the platform environment. + + .. code-block:: none + + $ source /etc/platform/openrc ~(keystone_admin)$ + +#. Create a pod.yml file. + + .. code-block:: none + + ~(keystone_admin)$ cat >> pod0.yml << EOF + apiVersion: v1 + kind: Pod + metadata: + name: pod0 + spec: + restartPolicy: Never + containers: + - name: pod0 + image: "windse/pktgen-testpmd-bbdev:d1911r4p1912" volumeMounts: - + mountPath: /mnt/huge-1048576kB + name: hugepage + - mountPath: /sys/devices + name: uio + command: ["/bin/bash", "-ec", "sleep infinity"] securityContext: + privileged: false capabilities: + add: + ["IPC_LOCK", "SYS_ADMIN"] + resources: + requests: + hugepages-1Gi: 4Gi memory: 4Gi intel.com/intel_acc100_fec: '16' + windriver.com/isolcpus: '24' + limits: + hugepages-1Gi: 4Gi memory: 4Gi intel.com/intel_acc100_fec: '16' + windriver.com/isolcpus: '24' + volumes: - name: hugepage + emptyDir: + medium: HugePages + - name: uio + hostPath: + path: /sys/devices + EOF + +#. Start the pod. + + .. code-block:: none + + ~(keystone_admin)$ kubectl create -f pod0.yml + +#. Wait for the pod to start and execute the following command: + + .. code-block:: none + + ~(keystone_admin)$ kubectl exec -it pod0 -- bash echo + $PCIDEVICE_INTEL_COM_INTEL_ACC100_FEC + + The following PCI addresses corresponding to the |SRIOVs| are displayed: + + .. code-block:: none + + 0000:86:01.1,0000:86:01.0,0000:86:01.7,0000:86:01.4,0000:86:00.3,0000:86:00.1,0000:86:00.5,0000:86:00.7,0000:86:00.2,0000:86:00.4,0000:86:01.5,0000:86:01.6,0000:86:01.2,0000:86:00.0,0000:86:00.6,0000:86:01.3 + + diff --git a/doc/source/node_management/kubernetes/host_hardware_management/changing-hardware-components-for-a-storage-host.rst b/doc/source/node_management/kubernetes/host_hardware_management/changing-hardware-components-for-a-storage-host.rst index 96e7af8fc..b5a025561 100644 --- a/doc/source/node_management/kubernetes/host_hardware_management/changing-hardware-components-for-a-storage-host.rst +++ b/doc/source/node_management/kubernetes/host_hardware_management/changing-hardware-components-for-a-storage-host.rst @@ -9,6 +9,8 @@ Change Hardware Components for a Storage Host You can add or replace storage disks or swap a storage node while the system is running, even if the storage resources are in active use. +.. rubric:: |context| + You can add disks to a storage node to increase capacity, and you can replace a faulty host. @@ -74,7 +76,10 @@ can reproduce them later. #. Power up the host. If the host has been deleted from the Host Inventory, the host software - is reinstalled. + is reinstalled. + +.. From Power up the host +.. xbookref For details, see :ref:`|inst-doc| `. Wait for the host to be reported as **Locked**, **Disabled**, and **Online**. @@ -102,3 +107,5 @@ can reproduce them later. .. From If required, allocate the |OSD| and journal disk storage. .. xbooklinkFor more information, see |stor-doc|: `Provision Storage on a Storage Host `. + + diff --git a/doc/source/node_management/kubernetes/host_hardware_management/configuration-changes-requiring-re-installation.rst b/doc/source/node_management/kubernetes/host_hardware_management/configuration-changes-requiring-re-installation.rst index 32682ccf6..13d39d393 100644 --- a/doc/source/node_management/kubernetes/host_hardware_management/configuration-changes-requiring-re-installation.rst +++ b/doc/source/node_management/kubernetes/host_hardware_management/configuration-changes-requiring-re-installation.rst @@ -30,7 +30,7 @@ Some configuration changes require a system or host re-installation. +--------------------------------------------------------------+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Controller filesystem size decrease | System | To decrease the controller filesystem size, you must perform a system reinstallation. | +--------------------------------------------------------------+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ - | Root disk replacement | Host \(re-add\) | To install |prod-os| OpenStack software on a new disk, the host must be deleted and re-added \(not merely reinstalled\). | + | Root disk replacement | Host \(re-add\) | To install the OpenStack application on a new disk, the host must be deleted and re-added \(not merely reinstalled\). | +--------------------------------------------------------------+-----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Management NIC MAC address change | Host \(re-add\) | .. note:: | | | | To register the new MAC address for Host Inventory management, the host must be deleted and re-added \(not merely reinstalled\). | diff --git a/doc/source/node_management/kubernetes/host_inventory/devices-tab.rst b/doc/source/node_management/kubernetes/host_inventory/devices-tab.rst index 7f4e6b173..11e474be5 100644 --- a/doc/source/node_management/kubernetes/host_inventory/devices-tab.rst +++ b/doc/source/node_management/kubernetes/host_inventory/devices-tab.rst @@ -39,3 +39,6 @@ The following information is presented: **Enabled** Whether exposure to applications is enabled for the device. + +.. xbookref For a list of devices supported by |prod|, refer to the :ref:`|rn-doc| + `. diff --git a/doc/source/node_management/kubernetes/host_inventory/hosts-tab.rst b/doc/source/node_management/kubernetes/host_inventory/hosts-tab.rst index 5dc428e85..edaf0b8bf 100644 --- a/doc/source/node_management/kubernetes/host_inventory/hosts-tab.rst +++ b/doc/source/node_management/kubernetes/host_inventory/hosts-tab.rst @@ -241,5 +241,9 @@ A sample **Hosts** tab is illustrated below: Initiates any pending software update operations. Once successfully executed, the host returns back to the locked state. +.. xbookref See |updates-doc|: + :ref:`Managing Software Updates ` for + details. + This option is only available if there are software update operations pending for the host. diff --git a/doc/source/node_management/kubernetes/host_inventory/interfaces-tab.rst b/doc/source/node_management/kubernetes/host_inventory/interfaces-tab.rst index 394c99c46..b7c76b03e 100644 --- a/doc/source/node_management/kubernetes/host_inventory/interfaces-tab.rst +++ b/doc/source/node_management/kubernetes/host_inventory/interfaces-tab.rst @@ -19,7 +19,7 @@ logical interfaces, for example, if the cluster host network is internal and additional ports are configured for connecting to external networks. .. note:: - When running the |prod-os| OpenStack application, you can optimize + When running the |prod-os| application, you can optimize vSwitch processing of packets to and from physical ports for data interfaces by using only ports that are connected to processors with vSwitch cores attached to data networks. @@ -77,7 +77,7 @@ Information about interfaces is presented in several columns, as follows: interface is shared. **Data Networks** - This option is relevant for the |prod-os| OpenStack application only, + This option is relevant for the |prod-os| application only, and specifically for the openstack-compute labeled worker nodes only, and for interfaces of the data interface class. It lists the data networks associated with the data interface. diff --git a/doc/source/node_management/kubernetes/host_memory_provisioning/about-host-memory-provisioning.rst b/doc/source/node_management/kubernetes/host_memory_provisioning/about-host-memory-provisioning.rst index 2d1ad7588..b4beecb8d 100644 --- a/doc/source/node_management/kubernetes/host_memory_provisioning/about-host-memory-provisioning.rst +++ b/doc/source/node_management/kubernetes/host_memory_provisioning/about-host-memory-provisioning.rst @@ -6,17 +6,24 @@ About Host Memory Provisioning ============================== -For each |NUMA| node on a host, you can -adjust the amount of memory reserved for platform use, and the size and -number of memory pages allocated for use by applications and the virtual -switch \(vSwitch\). vSwitch is only applicable on an openstack-compute -labeled worker node, when running the |prod-os| OpenStack application. +.. only:: starlingx + + For each |NUMA| node on a host, you can adjust the amount of memory + reserved for platform use, and the size and number of memory pages + allocated for use by applications. + +.. only:: partner + + .. include:: ../../../_includes/about-host-memory-provisioning.rest + + :start-after: introduction-text-begin + :end-before: introduction-text-end Due to limitations in Kubernetes, only a single huge page size can be used per host. -The amount of platform memory reserved differs between -|AIO| and standard configurations. +The amount of platform memory reserved differs between |AIO| and standard +configurations. .. note:: For |prod| Simplex deployments implemented on an Intel Xeon D-based @@ -25,17 +32,21 @@ The amount of platform memory reserved differs between can increase the allotment if required to restore the default maximum number of worker threads. -Memory not reserved for platform and vSwitch use is made available as -application memory. By default, no application memory is reserved. You can -provision individual |NUMA| nodes to use -either 2 MiB or 1 GiB hugepages. Using larger pages can reduce page -management overhead and improve system performance for systems with large -amounts of virtual memory and many running instances. +.. only:: starlingx -For an openstack-compute labeled worker node, the vSwitch memory is -partitioned using 1 GiB huge pages by default. You can change this for -individual |NUMA| nodes to use 2 MiB huge -pages for systems without 1 GiB huge page support. + Memory not reserved for platform use is made available as application + memory. You can provision individual |NUMA| nodes to use either 2 MiB or 1 + GiB hugepages. Due to limitations in Kubernetes, only a single huge page + size can be used per host. Using larger pages can reduce page management + overhead and improve system performance for systems with large amounts of + virtual memory and many running instances. + +.. only:: partner + + .. include:: ../../../_includes/about-host-memory-provisioning.rest + + :start-after: memory-text-begin + :end-before: memory-text-end You can use the :command:`system host-memory-list` and :command:`system host-memory-show` commands to see how much memory is @@ -48,3 +59,5 @@ OpenStack\), you can specify which page size is required. .. only:: partner .. include:: ../../../_includes/about-host-memory-provisioning.rest + + :start-after: memory-text-end \ No newline at end of file diff --git a/doc/source/node_management/kubernetes/host_memory_provisioning/allocating-host-memory-using-horizon.rst b/doc/source/node_management/kubernetes/host_memory_provisioning/allocating-host-memory-using-horizon.rst index f6471a961..36d3c2826 100644 --- a/doc/source/node_management/kubernetes/host_memory_provisioning/allocating-host-memory-using-horizon.rst +++ b/doc/source/node_management/kubernetes/host_memory_provisioning/allocating-host-memory-using-horizon.rst @@ -6,18 +6,32 @@ Allocate Host Memory Using Horizon ================================== -You can edit the platform, vSwitch, and Application page memory allocations -for a |NUMA| node from the Horizon Web -interface using the **Memory** tab on the Host Inventory pane. +.. only:: starlingx + + You can edit the platform and Application page memory allocations for a + |NUMA| node from the Horizon Web interface using the **Memory** tab on the + Host Inventory pane. + +.. only:: partner + + .. include:: ../../../_includes/avs-note.rest + + :start-after: introduction-text-begin + :end-before: introduction-text-end Due to limitations in Kubernetes, only a single huge page size can be used per host. -A node may only allocate huge pages for a single size, either 2MiB or 1GiB. -Since the vSwitch uses 1GiB huge page by default, the application will -typically also use 1GiB huge pages. However, the vSwitch page size can be -changed to 2MiB, in which case the application would also use 2MiB huge -pages. +.. only:: starlingx + + A node may only allocate huge pages for a single size, either 2MiB or 1GiB. + +.. only:: partner + + .. include:: ../../../_includes/avs-note.rest + + :start-after: usage-text-begin + :end-before: usage-text-end You must also provision one 1GiB huge page per |NUMA| node prior to unlocking a worker or an |AIO| controller. @@ -44,9 +58,19 @@ informative message is displayed. #. Use the Update Memory Allocation dialog box to set the memory allocations for each |NUMA| node. - For each available |NUMA| node, five - fields are available, as illustrated in the following example screen for - two |NUMA| nodes. +.. only:: starlingx + + For each available |NUMA| node, five fields are available, as illustrated + in the following example screen for two |NUMA| nodes. Due to limitations + in Kubernetes, only a single huge page size can be used per host, across + Application memory. + +.. only:: partner + + .. include:: ../../../_includes/allocating-host-memory-using-horizon.rest + + :start-after: limitation-text-begin + :end-before: limitation-text-end .. figure:: ../figures/yfv1567176747837.png :scale: 100% @@ -61,22 +85,50 @@ informative message is displayed. :scale: 100% **\# of Application 2M Hugepages Node n** + + .. only:: starlingx + The number of 2 MiB huge pages to reserve for application use on the - |NUMA| Node. If no 2 MiB pages are - required, type 0. + |NUMA| Node. If no 2 MiB pages are required, type 0. Due to + limitations in Kubernetes, only a single huge page size can be used per + host, across Application memory. + + .. only:: partner + + .. include:: ../../../_includes/allocating-host-memory-using-horizon.rest + + :start-after: application-2m-text-begin + :end-before: application-2m-text-end **\# of Application 1G Hugepages Node n** + + .. only:: starlingx + The number of 1 GiB huge pages to reserve for application use on the - |NUMA| Node. If no 1 GiB pages are - required, type 0. + |NUMA| Node. If no 1 GiB pages are required, type 0. Due to + limitations in Kubernetes, only a single huge page size can be used per + host, across Application memory. + + .. only:: partner - **\# of vSwitch 1G Hugepages Node n** - The number of 1 GiB huge pages to reserve for vS2witch use on the - |NUMA| Node. If no 1 GiB pages are - required, type 0. + .. include:: ../../../_includes/allocating-host-memory-using-horizon.rest + + :start-after: application-1g-text-begin + :end-before: application-1g-text-end - **vSwitch Hugepage Size Node n** - Select the hugepage size to use for the node. + .. only:: partner + + .. include:: ../../../_includes/allocating-host-memory-using-horizon.rest + + :start-after: vswitch-hugepage-1g-text-begin + :end-before: vswitch-hugepage-1g-text-end + + .. only:: partner + + .. include:: ../../../_includes/allocating-host-memory-using-horizon.rest + + :start-after: vswitch-hugepage-size-node-text-begin + :end-before: vswitch-hugepage-size-node-text-end To see how many huge pages of a given size you can successfully request on a node \(assuming that pages of another size are not also requested\), @@ -95,3 +147,4 @@ informative message is displayed. .. only:: partner .. include:: ../../../_includes/avs-note.rest + diff --git a/doc/source/node_management/kubernetes/host_memory_provisioning/allocating-host-memory-using-the-cli.rst b/doc/source/node_management/kubernetes/host_memory_provisioning/allocating-host-memory-using-the-cli.rst index ce2d7388e..7475d8868 100644 --- a/doc/source/node_management/kubernetes/host_memory_provisioning/allocating-host-memory-using-the-cli.rst +++ b/doc/source/node_management/kubernetes/host_memory_provisioning/allocating-host-memory-using-the-cli.rst @@ -6,16 +6,31 @@ Allocate Host Memory Using the CLI ================================== -You can edit the platform, vSwitch and huge page memory allocations for a -|NUMA| node from the CLI. +.. only:: starlingx + + You can edit the platform and huge page memory allocations for a |NUMA| + node from the CLI. + +.. only:: partner + + .. include:: ../../../_includes/allocating-host-memory-using-the-cli.rest + + :start-after: introduction-text-begin + :end-before: introduction-text-end Due to limitations in Kubernetes, only a single huge page size can be used per host. -A node may only allocate huge pages for a single size, either 2MiB or 1GiB. -Since the vSwitch uses 1GiB huge page by default, the application will -typically also use 1GiB huge pages. However, the vSwitch page size can be -changed to 2MiB, in which case the application would also use 2MiB huge pages. +.. only:: starlingx + + A node may only allocate huge pages for a single size, either 2MiB or 1GiB. + +.. only:: partner + + .. include:: ../../../_includes/allocating-host-memory-using-the-cli.rest + + :start-after: usage-text-begin + :end-before: usage-text-end You must also provision one 1GiB huge page per |NUMA| node prior to unlocking a worker or an |AIO| controller. @@ -70,6 +85,8 @@ worker or an |AIO| controller. given processor. For example: + + .. only:: starlingx .. code-block:: none @@ -81,10 +98,6 @@ worker or an |AIO| controller. | Platform (MiB) | 4600 | | Available (MiB) | 13831 | | Huge Pages Configured | True | - | vSwitch Huge Pages: Size (MiB) | 2 | - | Total | 0 | - | Available | 0 | - | Required | None | | Application Pages (4K): Total | 3540736 | | Application Huge Pages (2M): Total | 0 | | Available | 0 | @@ -97,6 +110,13 @@ worker or an |AIO| controller. | updated_at | 2020-01-14T18:49:26.388919+00:00 | +-------------------------------------+--------------------------------------+ + .. only:: partner + + .. include:: ../../../_includes/allocating-host-memory-using-the-cli.rest + + :start-after: memory-table-begin + :end-before: memory-table-end + #. Lock the affected host. .. code-block:: none @@ -124,20 +144,52 @@ worker or an |AIO| controller. memory reserved for platform use, in MiB. **function** - Use with the optional ``-f`` argument. This option specifies the intended - function for hugepage allocation, either vswitch or application. - vSwitch is only applicable on an openstack-compute labeled worker - node, when running the |prod-os| OpenStack application. + + .. only:: starlingx + + Use with the optional ``-f`` argument. This option specifies the + intended function for hugepage allocation on application. + + .. only:: partner + + .. include:: ../../../_includes/allocating-host-memory-using-the-cli.rest + + :start-after: function-text-begin + :end-before: function-text-end The default function is **application**. **2Mpages** - Use with the optional ``-2M`` argument. This option specifies the number - of 2 MiB huge pages to make available. + + .. only:: starlingx + + Use with the optional ``-2M`` argument. This option specifies the + number of 2 MiB huge pages to make available. Due to limitations in + Kubernetes, only a single huge page size can be used per host, across + Application memory. + + .. only:: partner + + .. include:: ../../../_includes/allocating-host-memory-using-the-cli.rest + + :start-after: 2m-pages-text-begin + :end-before: 2m-pages-text-end **1Gpages** - Use with the optional ``-1G`` argument. This option specifies the number - of 1 GiB huge pages to make available. + + .. only:: starlingx + + Use with the optional ``-1G`` argument. This option specifies the + number of 1 GiB huge pages to make available. Due to limitations in + Kubernetes, only a single huge page size can be used per host, across + Application memory. + + .. only:: partner + + .. include:: ../../../_includes/allocating-host-memory-using-the-cli.rest + + :start-after: 1g-pages-text-begin + :end-before: 1g-pages-text-end For example, to allocate four 2 MiB huge pages for use by hosted applications on |NUMA| node 1 of worker node **worker-0**: @@ -145,6 +197,25 @@ worker or an |AIO| controller. .. code-block:: none (keystone_admin)$ system host-memory-modify worker-0 1 -2M 4 + + .. only:: starlingx + + For openstack-compute labeled worker node or |AIO| controller, since + Kubernetes only supports a single huge page size per worker node. + 'application' huge pages must also be 1G. The following example shows + configuring 10 1G huge pages for application usage. For example: + + .. only:: partner + + .. include:: ../../../_includes/allocating-host-memory-using-the-cli.rest + + :start-after: recommended-size-text-begin + :end-before: recommended-size-text-end + + .. code-block:: none + + (keystone_admin)$ system host-memory-modify -f application -1G 10 worker- 0 + (keystone_admin)$ system host-memory-modify -f application -1G 10 worker- 1 #. Unlock the host. diff --git a/doc/source/node_management/kubernetes/index.rst b/doc/source/node_management/kubernetes/index.rst index 08840fcb7..f06432683 100644 --- a/doc/source/node_management/kubernetes/index.rst +++ b/doc/source/node_management/kubernetes/index.rst @@ -178,6 +178,11 @@ PCI-SRIOV interface support node_interfaces/provisioning-sr-iov-interfaces-using-the-cli node_interfaces/provisioning-sr-iov-vf-interfaces-using-the-cli + node_interfaces/sriov-port-sharing + node_interfaces/configuring-ethernet-interfaces-on-sriov-interace usingfrom-horizon + node_interfaces/configuring-ethernet-interfaces-on-sriov-interface-using-cli + node_interfaces/configuring-vf-interfaces-rate-limiting-using-cli + node_interfaces/configuring-vlan-type-interfaces-using-the-sriov-interface-from-the-cli ********************************* Interface IP address provisioning @@ -290,6 +295,16 @@ Intel N3000 FPGA support hardware_acceleration_devices/updating-an-intel-n3000-fpga-image hardware_acceleration_devices/n3000-fpga-forward-error-correction hardware_acceleration_devices/showing-details-for-an-fpga-device + hardware_acceleration_devices/common-device-management-tasks + +*********************************************** +vRAN Accelerator ACC100 Adapter \(Mount Bryce\) +*********************************************** +.. toctree:: + :maxdepth: 1 + + hardware_acceleration_devices/enabling-mount-bryce-hw-accelerator-for-hosted-vram-containerized-workloads + hardware_acceleration_devices/set-up-pods-to-use-sriov ------------------------ Host hardware management diff --git a/doc/source/node_management/kubernetes/node_interfaces/attaching-ethernet-interfaces-to-networks-using-the-cli.rst b/doc/source/node_management/kubernetes/node_interfaces/attaching-ethernet-interfaces-to-networks-using-the-cli.rst index d990f69dc..f6b483e76 100644 --- a/doc/source/node_management/kubernetes/node_interfaces/attaching-ethernet-interfaces-to-networks-using-the-cli.rst +++ b/doc/source/node_management/kubernetes/node_interfaces/attaching-ethernet-interfaces-to-networks-using-the-cli.rst @@ -23,17 +23,28 @@ Ethernet interfaces are created automatically. .. code-block:: none ~(keystone_admin)$ system host-if-list -a controller-0 - +---...+----------+----------+...+---------------+...+-------------------+ - | uuid | name | class | | ports | | data networks | - +---...+----------+----------+...+---------------+...+-------------------+ - | 68...| ens787f3 | None | | [u'ens787f3'] | | [] | - | 79...| data0 | data | | [u'ens787f0'] | | [u'group0-data0'] | - | 78...| cluster0 | platform | | [] | | [] | - | 89...| ens513f3 | None | | [u'ens513f3'] | | [] | - | 97...| ens803f1 | None | | [u'ens803f1'] | | [] | - | d6...| pxeboot0 | platform | | [u'eno2'] | | [] | - | d6...| mgmt0 | platform | | [] | | [] | - +---...+----------+----------+...+---------------+...+-------------------+ + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ + | uuid | name | class | type | vlan | ports | uses i/f | used by i/f | attributes | + | | | | | id | | | | | + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ + | 0aa20d82-...| sriovvf2 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500,max_tx_rate=100 | + | 0e5f162d-...| mgmt0 | platform | vlan | 163 | [] | [u'sriov0'] | [] | MTU=1500 | + | 14f2ed53-...| sriov0 | pci-sriov | ethernet | None | [u'enp24s0f0'] | [] | [u'sriovnet1', u'oam0', | MTU=9216 | + | | | | | | | | u'sriovnet2', u'sriovvf2', | | + | | | | | | | | u'sriovvf1', u'mgmt0', | | + | | | | | | | | u'pxeboot0'] | | + | | | | | | | | | | + | 163592bd-...| data1 | data | ethernet | None | [u'enp24s0f1'] | [] | [] | MTU=1500,accelerated=True | + | 1831571d-...| sriovnet2 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1956,max_tx_rate=100 | + | 5741318f-...| eno2 | None | ethernet | None | [u'eno2'] | [] | [] | MTU=1500 | + | 5bd79fbd-...| enp26s0f0 | None | ethernet | None | [u'enp26s0f0'] | [] | [] | MTU=1500 | + | 623d5494-...| oam0 | platform | vlan | 103 | [] | [u'sriov0'] | [] | MTU=1500 | + | 78b4080a-...| enp26s0f1 | None | ethernet | None | [u'enp26s0f1'] | [] | [] | MTU=1500 | + | a6f1f901-...| eno1 | None | ethernet | None | [u'eno1'] | [] | [] | MTU=1500 | + | f37eac1b-...| pxeboot0 | platform | ethernet | None | [] | [u'sriov0'] | [] | MTU=1500 | + | f7c62216-...| sriovnet1 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500,max_tx_rate=100 | + | fcbe3aca-...| sriovvf1 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1956,max_tx_rate=100 | + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ #. Attach an interface to a network. diff --git a/doc/source/node_management/kubernetes/node_interfaces/configuring-aggregated-ethernet-interfaces-using-horizon.rst b/doc/source/node_management/kubernetes/node_interfaces/configuring-aggregated-ethernet-interfaces-using-horizon.rst index 23b57d1ee..5ad7bb09e 100644 --- a/doc/source/node_management/kubernetes/node_interfaces/configuring-aggregated-ethernet-interfaces-using-horizon.rst +++ b/doc/source/node_management/kubernetes/node_interfaces/configuring-aggregated-ethernet-interfaces-using-horizon.rst @@ -51,7 +51,7 @@ for different types of interface, see :ref:`Interface Settings #. Complete any other settings required for the Interface Class. .. note:: - For a |prod-os| OpenStack application data interface attached to a + For a |prod-os| application data interface attached to a data network, the |MTU| must be equal to or larger than the |MTU| of the data network to which the interface is attached. diff --git a/doc/source/node_management/kubernetes/node_interfaces/configuring-aggregated-ethernet-interfaces-using-the-cli.rst b/doc/source/node_management/kubernetes/node_interfaces/configuring-aggregated-ethernet-interfaces-using-the-cli.rst index 943150a73..153b0e634 100644 --- a/doc/source/node_management/kubernetes/node_interfaces/configuring-aggregated-ethernet-interfaces-using-the-cli.rst +++ b/doc/source/node_management/kubernetes/node_interfaces/configuring-aggregated-ethernet-interfaces-using-the-cli.rst @@ -11,6 +11,10 @@ Ethernet interfaces to networks. |prod| supports up to four ports in a |LAG|. +.. only:: partner + + ../../../_includes/configuring-aggregated-ethernet-interfaces-using-the-cli.rest + For more about link aggregation modes and policies, see :ref:`Link Aggregation Settings `. @@ -26,17 +30,28 @@ Settings `. .. code-block:: none ~(keystone_admin)$ system host-if-list -a controller-0 - +---...+----------+----------+...+---------------+...+-------------------+ - | uuid | name | class | | ports | | data networks | - +---...+----------+----------+...+---------------+...+-------------------+ - | 68...| ens787f3 | None | | [u'ens787f3'] | | [] | - | 79...| data0 | data | | [u'ens787f0'] | | [u'group0-data0'] | - | 78...| cluster0 | platform | | [] | | [] | - | 89...| ens513f3 | None | | [u'ens513f3'] | | [] | - | 97...| ens803f1 | None | | [u'ens803f1'] | | [] | - | d6...| pxeboot0 | platform | | [u'eno2'] | | [] | - | d6...| mgmt0 | platform | | [] | | [] | - +---...+----------+----------+...+---------------+...+-------------------+ + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ + | uuid | name | class | type | vlan | ports | uses i/f | used by i/f | attributes | + | | | | | id | | | | | + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ + | 0aa20d82-...| sriovvf2 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500,max_tx_rate=100 | + | 0e5f162d-...| mgmt0 | platform | vlan | 163 | [] | [u'sriov0'] | [] | MTU=1500 | + | 14f2ed53-...| sriov0 | pci-sriov | ethernet | None | [u'enp24s0f0'] | [] | [u'sriovnet1', u'oam0', | MTU=9216 | + | | | | | | | | u'sriovnet2', u'sriovvf2', | | + | | | | | | | | u'sriovvf1', u'mgmt0', | | + | | | | | | | | u'pxeboot0'] | | + | | | | | | | | | | + | 163592bd-...| data1 | data | ethernet | None | [u'enp24s0f1'] | [] | [] | MTU=1500,accelerated=True | + | 1831571d-...| sriovnet2 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1956,max_tx_rate=100 | + | 5741318f-...| eno2 | None | ethernet | None | [u'eno2'] | [] | [] | MTU=1500 | + | 5bd79fbd-...| enp26s0f0 | None | ethernet | None | [u'enp26s0f0'] | [] | [] | MTU=1500 | + | 623d5494-...| oam0 | platform | vlan | 103 | [] | [u'sriov0'] | [] | MTU=1500 | + | 78b4080a-...| enp26s0f1 | None | ethernet | None | [u'enp26s0f1'] | [] | [] | MTU=1500 | + | a6f1f901-...| eno1 | None | ethernet | None | [u'eno1'] | [] | [] | MTU=1500 | + | f37eac1b-...| pxeboot0 | platform | ethernet | None | [] | [u'sriov0'] | [] | MTU=1500 | + | f7c62216-...| sriovnet1 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500,max_tx_rate=100 | + | fcbe3aca-...| sriovvf1 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1956,max_tx_rate=100 | + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ #. Create an aggregated Ethernet interface and attach it to a network. diff --git a/doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-on-sriov-interace usingfrom-horizon.rst b/doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-on-sriov-interace usingfrom-horizon.rst new file mode 100644 index 000000000..851db10bc --- /dev/null +++ b/doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-on-sriov-interace usingfrom-horizon.rst @@ -0,0 +1,59 @@ + +.. bmi1612787317125 +.. _configuring-ethernet-interfaces-on-sriov-interace usingfrom-horizon: + +====================================================================== +Configure Ethernet Interfaces on SR-IOV interface Using Horizon +====================================================================== + +You can use the Horizon web interface to configure ethernet interfaces on +|SRIOV|. + +.. rubric:: |prereq| + +You must create an |SRIOV| interface before you can provision an ethernet +interface. For more information, see :ref:`Provisioning SR-IOV Interfaces using +the CLI `. + +.. rubric:: |proc| + +#. Open the **Host Inventory** page, available from **Admin** \> **Platform** +\> **Host Inventory** in the left-hand panel, under **Actions** click on the +down arrow button on "Edit Host" and select "Lock Host". + +.. image:: ../figures/rst1442611298701.png + :width: 550 + +#. Open the Host Detail page for the host. + + + #. Open the Host Inventory page, available from **Admin** \> **Platform** + \> **Host Inventory** in the left-hand pane. + + #. Select the Hosts tab, and then in the **Host Name** column, click the + name of the host. + + +#. Select the **Interfaces** tab. + +.. image:: ../figures/vpw1612788524636.png + +#. Open the **Host Inventory** page, available from **Admin** \> **Platform** +\> **Host Inventory** in the left-hand panel, under **Actions** click on the +down arrow button on "Edit Host" and select "Unlock Host". + +#. Click **Create Interface**. + +#. Open the **Interface Class** drop-down menu and select platform. + +#. Open the **Interface Type** drop-down menu and select ethernet. + +#. Select the |SRIOV| Ethernet interface used to attach this interface to the +network from the Interfaces\(s\) list, + +#. From the Platform Network\(s\) list, select pxeboot to which this interface +is attached. + +#. Click **Create Interface** to save your changes and close the dialog box. + +.. image:: ../figures/qes1612788640104.png diff --git a/doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-on-sriov-interface-using-cli.rst b/doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-on-sriov-interface-using-cli.rst new file mode 100644 index 000000000..ec77aed51 --- /dev/null +++ b/doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-on-sriov-interface-using-cli.rst @@ -0,0 +1,131 @@ + +.. gtw1612788763384 +.. _configuring-ethernet-interfaces-on-sriov-interface-using-cli: + +================================================================= +Configure Ethernet Interfaces on SR-IOV interface Using the CLI +================================================================= + +You can create new ethernet interfaces on an SR-IOV interface and attach them +to platform networks using the CLI. + +.. rubric:: |proc| + +#. Lock the host. + + .. code-block:: none + + ~(keystone_admin)$ system host-lock controller-0 + + To list all interfaces, use the :command:`system host-if-list` command and + include the :command:`-a` flag. + + For example: + + .. code-block:: none + + ~(keystone_admin)$ system host-if-list controller-0 + +-----------+----------+-----------+----------+------+---------------+-------------+--------------------------------+------------+ + | uuid | name | class | type | vlan | ports | uses i/f | used by i/f | attributes | + | | | | | id | | | | | + +-----------+----------+-----------+----------+------+---------------+-------------+--------------------------------+------------+ + | 0c4b1cc...| sriov00 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500 | + | 3a191c4...| oam0 | platform | vlan | 200 | [] | [u'sriov0'] | [] | MTU=1500 | + | b295ee9...| sriov01 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500 | + | c178445...| mgmt0 | platform | vlan | 157 | [] | [u'sriov0'] | [] | MTU=1500 | + | d71ed2f...| sriov0 | pci-sriov | ethernet | None | [u'enp3s0f0'] | [] | [u'cluster0', u'sriov00', | MTU=1500 | + | | | | | | | | u'sriov01', u'mgmt0', u'oam0'] | | + | | | | | | | | | | + | e7bd04f...| cluster0 | platform | vlan | 158 | [] | [u'sriov0'] | [] | MTU=1500 | + +-----------+----------+-----------+----------+------+---------------+-------------+--------------------------------+------------+ + + +#. Create an Ethernet interface. + + Use the :command:`host-if-add` command with the following options: + + .. code-block:: none + + ~(keystone_admin)$ system host-if-add -c platform ethernet + + Where: + + **interfacename** + is the name or |UUID| for the interface \(Required\). + + **hostname** + is the name or |UUID| of the host. + + **ethname** + is the name of the |SRIOV| interface. + + For example: + + .. code-block:: none + + ~(keystone_admin)$ system host-if-add controller-0 -c platform pxeboot0 ethernet sriov0 + +-----------------+--------------------------------------+ + | Property | Value | + +-----------------+--------------------------------------+ + | ifname | pxeboot0 | + | iftype | ethernet | + | ports | [] | + | imac | 00:1e:67:e6:c0:92 | + | imtu | 1500 | + | ifclass | platform | + | ptp_role | none | + | aemode | None | + | schedpolicy | None | + | txhashpolicy | None | + | uuid | 1a511695-3514-49fb-8f1d-4f9d88e26949 | + | ihost_uuid | bfaa02c2-61e8-4da8-beac-d5f3a93decef | + | vlan_id | None | + | uses | [u'sriov0'] | + | used_by | [] | + | created_at | 2021-02-18T11:17:21.482023+00:00 | + | updated_at | None | + | sriov_numvfs | 0 | + | sriov_vf_driver | None | + | max_tx_rate | None | + | ipv4_mode | None | + | ipv6_mode | None | + | accelerated | [] | + +-----------------+--------------------------------------+ + + ~(keystone_admin)$ system host-if-list controller-0 + +------------+----------+-----------+----------+------+---------------+-------------+---------------------------------+------------+ + | uuid | name | class | type | vlan | ports | uses i/f | used by i/f | attributes | + | | | | | id | | | | | + +------------+----------+-----------+----------+------+---------------+-------------+---------------------------------+------------+ + | 0c4b1cc | sriov00 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500 | + | 1a51169 | pxeboot0 | platform | ethernet | None | [] | [u'sriov0'] | [] | MTU=1500 | + | 3a191c4 | oam0 | platform | vlan | 200 | [] | [u'sriov0'] | [] | MTU=1500 | + | b295ee9 | sriov01 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500 | + | c178445 | mgmt0 | platform | vlan | 157 | [] | [u'sriov0'] | [] | MTU=1500 | + | d71ed2f | sriov0 | pci-sriov | ethernet | None | [u'enp3s0f0'] | [] | [u'cluster0', u'pxeboot0', | MTU=1500 | + | | | | | | | | u'sriov00', u'sriov01', u'oam0' | | + | | | | | | | | , u'mgmt0'] | | + | | | | | | | | | | + | e7bd04f | cluster0 | platform | vlan | 158 | [] | [u'sriov0'] | [] | MTU=1500 | + +------------+----------+-----------+----------+------+---------------+-------------+---------------------------------+------------+ + + +#. Attach the ethernet interface to a platform network. + + .. code-block:: none + + ~(keystone_admin)$ system interface-network-assign + + For example: + + .. code-block:: none + + ~(keystone_admin)$ system interface-network-assign controller-0 pxeboot0 pxeboot + +#. Unlock the host. + + .. code-block:: none + + ~(keystone_admin)$ system host-unlock controller-0 + + diff --git a/doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-using-horizon.rst b/doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-using-horizon.rst index 6d6c9956b..bef5f1028 100644 --- a/doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-using-horizon.rst +++ b/doc/source/node_management/kubernetes/node_interfaces/configuring-ethernet-interfaces-using-horizon.rst @@ -62,7 +62,7 @@ see :ref:`Interface Settings `. #. Complete the required information for the type of interface. .. note:: - For a |prod-os| OpenStack application data interface attached + For a |prod-os| application data interface attached to a data network, the |MTU| must be equal to or larger than the |MTU| of the data network to which the interface is attached. diff --git a/doc/source/node_management/kubernetes/node_interfaces/configuring-vf-interfaces-rate-limiting-using-cli.rst b/doc/source/node_management/kubernetes/node_interfaces/configuring-vf-interfaces-rate-limiting-using-cli.rst new file mode 100644 index 000000000..6be40c717 --- /dev/null +++ b/doc/source/node_management/kubernetes/node_interfaces/configuring-vf-interfaces-rate-limiting-using-cli.rst @@ -0,0 +1,108 @@ + +.. nuo1612792731113 +.. _configuring-vf-interfaces-rate-limiting-using-cli: + +===================================================== +Configure VF Interfaces Rate Limiting Using the CLI +===================================================== + +You can apply rate-limiting on VFs used for Data networks. + +.. rubric:: |context| + +This feature is available on the Intel X710/XL710 \(Fortville\) 10G and Intel +E810-CQDA2 \(Columbiaville\). It can be used on sub-interfaces of vf type +interfaces. + +Be aware of the following guidance when using this feature: + + +.. _configuring-vf-interfaces-rate-limiting-using-cli-ul-c3p-yrz-44b: + +- Rate limiting is applicable to the maximum transmission rate. + +- Rate limiting is disabled by default. + +- If all VF's are in contention then each will get an equal share of the + bandwidth. + +- The total sum of the maximum transmission rates of all rate limited VFs + cannot exceed 90% of the port link speed. + +- The unit is Mbps, and value of 0 means turn off the rate limiting. + +- VFs with different limited rate are supposed to be attached separate data + networks and managed by Kubernetes SR-IOV device plugin as different + ResourcePools. You can then use the VFs by specifying the corresponding + . + + +This task must be performed from the CLI. + +.. rubric:: |prereq| + +You must create an SR-IOV interface before you can provision VF interface. For +more information, see :ref:`Provisioning SR-IOV Interfaces using the CLI +`. + +Data networks should be created for VF sub-interfaces attachment. + +.. code-block:: none + + PHYSNET1='physnet_kernel_400m' + PHYSNET2='physnet_dpdk_600m' + system datanetwork-add ${PHYSNET1} vlan + system datanetwork-add ${PHYSNET2} vlan + + +.. rubric:: |proc| + +#. Lock the host. + + .. code-block:: none + + ~(keystone_admin)$ system host-lock controller-0 + +#. Create a sub-interface with rate limiting configuration. + + The parameters are all same as shown in the procedure for |node-doc|: + :ref:`Provisioning SR-IOV VF Interfaces using the CLI + `, plus one newly added + rate limiting related parameter: --max-tx-rate + + .. note:: + The configured sriov\_numvfs with + max\_tx\_rate\(max\_tx\_rate\*sriov\_numvfs\) should not exceed 90% of + the link bandwidth. + + For example: + + .. code-block:: none + + ~(keystone_admin)$ system host-if-add -c pci-sriov controller-0 sriov00 vf sriov0 -N 2 --vf-driver=netdevice --max-tx-rate=400 + ~(keystone_admin)$ system host-if-add -c pci-sriov controller-0 sriov01 vf sriov0 -N 2 --vf-driver=vfio --max-tx-rate=600 + +#. The rate limit configuration can be modified by specifying other values. + + .. code-block:: none + + ~(keystone_admin)$ system host-if-modify controller-0 sriov00 --max-tx-rate=200 + +#. The rate limit configuration can be modified by specifying a value of zero. + + .. code-block:: none + + ~(keystone_admin)$ system host-if-modify controller-0 sriov00 --max-tx-rate=0 + +#. Attach the vf interfaces to the data. + + .. code-block:: none + + ~(keystone_admin)$ system interface-datanetwork-assign controller-0 sriov00 $PHYSNET1 + ~(keystone_admin)$ system interface-datanetwork-assign controller-0 sriov01 $PHYSNET2 + +#. Unlock the host. + + .. code-block:: none + + ~(keystone_admin)$ system host-unlock controller-0 diff --git a/doc/source/node_management/kubernetes/node_interfaces/configuring-vlan-interfaces-using-the-cli.rst b/doc/source/node_management/kubernetes/node_interfaces/configuring-vlan-interfaces-using-the-cli.rst index 4509418de..d21bbc35b 100644 --- a/doc/source/node_management/kubernetes/node_interfaces/configuring-vlan-interfaces-using-the-cli.rst +++ b/doc/source/node_management/kubernetes/node_interfaces/configuring-vlan-interfaces-using-the-cli.rst @@ -20,26 +20,37 @@ You can use the CLI to attach |VLAN| interfaces to networks. .. code-block:: none ~(keystone_admin)$ system host-if-list -a controller-0 - +---...+----------+----------+...+---------------+...+-------------------+ - | uuid | name | class | | ports | | data networks | - +---...+----------+----------+...+---------------+...+-------------------+ - | 68...| ens787f3 | None | | [u'ens787f3'] | | [] | - | 79...| data0 | data | | [u'ens787f0'] | | [u'group0-data0'] | - | 78...| cluster0 | platform | | [] | | [] | - | 89...| ens513f3 | None | | [u'ens513f3'] | | [] | - | 97...| ens803f1 | None | | [u'ens803f1'] | | [] | - | d6...| pxeboot0 | platform | | [u'eno2'] | | [] | - | d6...| mgmt0 | platform | | [] | | [] | - +---...+----------+----------+...+---------------+...+-------------------+ + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ + | uuid | name | class | type | vlan | ports | uses i/f | used by i/f | attributes | + | | | | | id | | | | | + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ + | 0aa20d82-...| sriovvf2 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500,max_tx_rate=100 | + | 0e5f162d-...| mgmt0 | platform | vlan | 163 | [] | [u'sriov0'] | [] | MTU=1500 | + | 14f2ed53-...| sriov0 | pci-sriov | ethernet | None | [u'enp24s0f0'] | [] | [u'sriovnet1', u'oam0', | MTU=9216 | + | | | | | | | | u'sriovnet2', u'sriovvf2', | | + | | | | | | | | u'sriovvf1', u'mgmt0', | | + | | | | | | | | u'pxeboot0'] | | + | | | | | | | | | | + | 163592bd-...| data1 | data | ethernet | None | [u'enp24s0f1'] | [] | [] | MTU=1500,accelerated=True | + | 1831571d-...| sriovnet2 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1956,max_tx_rate=100 | + | 5741318f-...| eno2 | None | ethernet | None | [u'eno2'] | [] | [] | MTU=1500 | + | 5bd79fbd-...| enp26s0f0 | None | ethernet | None | [u'enp26s0f0'] | [] | [] | MTU=1500 | + | 623d5494-...| oam0 | platform | vlan | 103 | [] | [u'sriov0'] | [] | MTU=1500 | + | 78b4080a-...| enp26s0f1 | None | ethernet | None | [u'enp26s0f1'] | [] | [] | MTU=1500 | + | a6f1f901-...| eno1 | None | ethernet | None | [u'eno1'] | [] | [] | MTU=1500 | + | f37eac1b-...| pxeboot0 | platform | ethernet | None | [] | [u'sriov0'] | [] | MTU=1500 | + | f7c62216-...| sriovnet1 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500,max_tx_rate=100 | + | fcbe3aca-...| sriovvf1 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1956,max_tx_rate=100 | + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ #. Create a |VLAN| interface. - Use a command of the following form: + Use the following command: .. code-block:: none - ~(keystone_admin)$ system host-if-add -V <--vlan_id> -c <--ifclass> [] + ~(keystone_admin)$ system host-if-add -V -c [] where the following options are available: diff --git a/doc/source/node_management/kubernetes/node_interfaces/configuring-vlan-type-interfaces-using-the-sriov-interface-from-the-cli.rst b/doc/source/node_management/kubernetes/node_interfaces/configuring-vlan-type-interfaces-using-the-sriov-interface-from-the-cli.rst new file mode 100644 index 000000000..be1a71de2 --- /dev/null +++ b/doc/source/node_management/kubernetes/node_interfaces/configuring-vlan-type-interfaces-using-the-sriov-interface-from-the-cli.rst @@ -0,0 +1,156 @@ + +.. wsr1614111675912 +.. _configuring-vlan-type-interfaces-using-the-sriov-interface-from-the-cli: + +======================================================================== +Configure VLAN Type Interfaces Using the SR-IOV Interface From the CLI +======================================================================== + +You can use the CLI to attach |VLAN| interfaces to networks. + +.. rubric:: |context| + +.. rubric:: |prereq| + +You must create an |SRIOV| interface before you can provision a vlan interface. +For more information, see :ref:`Provisioning SR-IOV VF Interfaces using the CLI +`. + +.. rubric:: |proc| + +.. _configuring-vlan-type-interfaces-using-the-sriov-interface-from-the-cli-steps-rf5-5wh-lkb: + +#. Lock the host. + + .. code-block:: none + + ~(keystone_admin)$ host-lock controller-0 + +#. List the attached interfaces. + + To list all interfaces, use the :command:`system host-if-list` command and + include the ``-a`` flag. + + .. code-block:: none + + ~(keystone_admin)$ system host-if-list -a controller-0 + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ + | uuid | name | class | type | vlan | ports | uses i/f | used by i/f | attributes | + | | | | | id | | | | | + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ + | 0aa20d82-...| sriovvf2 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500,max_tx_rate=100 | + | 0e5f162d-...| mgmt0 | platform | vlan | 163 | [] | [u'sriov0'] | [] | MTU=1500 | + | 14f2ed53-...| sriov0 | pci-sriov | ethernet | None | [u'enp24s0f0'] | [] | [u'sriovnet1', u'oam0', | MTU=9216 | + | | | | | | | | u'sriovnet2', u'sriovvf2', | | + | | | | | | | | u'sriovvf1', u'mgmt0', | | + | | | | | | | | u'pxeboot0'] | | + | | | | | | | | | | + | 163592bd-...| data1 | data | ethernet | None | [u'enp24s0f1'] | [] | [] | MTU=1500,accelerated=True | + | 1831571d-...| sriovnet2 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1956,max_tx_rate=100 | + | 5741318f-...| eno2 | None | ethernet | None | [u'eno2'] | [] | [] | MTU=1500 | + | 5bd79fbd-...| enp26s0f0 | None | ethernet | None | [u'enp26s0f0'] | [] | [] | MTU=1500 | + | 623d5494-...| oam0 | platform | vlan | 103 | [] | [u'sriov0'] | [] | MTU=1500 | + | 78b4080a-...| enp26s0f1 | None | ethernet | None | [u'enp26s0f1'] | [] | [] | MTU=1500 | + | a6f1f901-...| eno1 | None | ethernet | None | [u'eno1'] | [] | [] | MTU=1500 | + | f37eac1b-...| pxeboot0 | platform | ethernet | None | [] | [u'sriov0'] | [] | MTU=1500 | + | f7c62216-...| sriovnet1 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1500,max_tx_rate=100 | + | fcbe3aca-...| sriovvf1 | pci-sriov | vf | None | [] | [u'sriov0'] | [] | MTU=1956,max_tx_rate=100 | + +-------------+-----------+-----------+----------+------+----------------+-------------+----------------------------+---------------------------+ + +#. Create a |VLAN| interface. + + Use a command of the following form: + + .. code-block:: none + + ~(keystone_admin)$ system host-if-add -V \ + -c <--ifclass> [] + + + where the following options are available: + + **interface name** + A name or |UUID| for the interface \(Required\). + + .. caution:: + To avoid potential internal inconsistencies, do not use upper case + characters when creating interface names. Some components normalize + all interface names to lower case. + + **vlan\_id** + The |VLAN| identifier for the network. + + **hostname** + The name or |UUID| of the host. + + **ifclass** + The class of the interface. The valid classes are **platform**, + **data**, **pci-sriov**, and **pci-passthrough**. + + **sriov\_intf\_name** + The name of the |SRIOV| interface. + + **datanetworks** + A list of data networks, delimited by quotes and separated by commas; + for example, "net-a, net-b". To specify a single data network, omit the + quotes. This parameter is required only if the is set to + data,pci-sriov or pci-passthru. + + **network** + The name or ID of the network to assign the interface to + + For example, to attach a |VLAN| interface named cluster0 with |VLAN| ID 164 to + the cluster-host network using |SRIOV| interface sriov0 on controller-0: + + .. code-block:: none + + ~(keystone_admin)$ system host-if-add controller-0 -V 164 -c platform cluster0 vlan sriov0 + +-----------------+--------------------------------------+ + | Property | Value | + +-----------------+--------------------------------------+ + | ifname | cluster0 | + | iftype | vlan | + | ports | [] | + | imac | 3c:fd:fe:ac:60:44 | + | imtu | 1500 | + | ifclass | platform | + | ptp_role | none | + | aemode | None | + | schedpolicy | None | + | txhashpolicy | None | + | uuid | 6fa5015f-bcd3-4059-8fc1-9cdbbbe31d39 | + | ihost_uuid | 1b67fe83-5010-4eac-bcca-6a6e6f2bd197 | + | vlan_id | 164 | + | uses | [u'sriov0'] | + | used_by | [] | + | created_at | 2021-02-24T15:04:48.116079+00:00 | + | updated_at | None | + | sriov_numvfs | 0 | + | sriov_vf_driver | None | + | max_tx_rate | None | + | ipv4_mode | None | + | ipv6_mode | None | + | accelerated | [True] | + +-----------------+--------------------------------------+ + +#. Attach the newly created |VLAN| interface to a network. + + Use a command of the following format: + + .. code-block:: none + + ~(keystone_admin)$ system interface-network-assign + + For example: + + .. code-block:: none + + ~(keystone_admin)$ system interface-network-assign controller-0 cluster0 cluster-host + +#. Unlock the host. + + .. code-block:: none + + ~(keystone_admin)$ host-unlock controller-0 + + diff --git a/doc/source/node_management/kubernetes/node_interfaces/creating-interfaces.rst b/doc/source/node_management/kubernetes/node_interfaces/creating-interfaces.rst index 1e0cf5579..aa2d07f23 100644 --- a/doc/source/node_management/kubernetes/node_interfaces/creating-interfaces.rst +++ b/doc/source/node_management/kubernetes/node_interfaces/creating-interfaces.rst @@ -3,7 +3,7 @@ .. _creating-interfaces: ================= -Create Interfaces +Create interfaces ================= You can create logical interfaces for use in aggregated Ethernet or @@ -12,6 +12,10 @@ You can create logical interfaces for use in aggregated Ethernet or Ethernet network interfaces on hosts are created automatically in |prod| based on detected hardware. You do not need to create them manually. +However, you can create new ethernet type logical interfaces on top of |SRIOV| +interfaces, which does require manual configuration as described in +:ref:`SR-IOV Port Sharing `. + For aggregated Ethernet, where multiple physical interfaces are used to form a logical interface, or |VLAN| tagging, where a single physical interface is used for multiple logical interfaces, you can create and assign the diff --git a/doc/source/node_management/kubernetes/node_interfaces/interface-provisioning.rst b/doc/source/node_management/kubernetes/node_interfaces/interface-provisioning.rst index dd71d4a98..cdc71d20d 100644 --- a/doc/source/node_management/kubernetes/node_interfaces/interface-provisioning.rst +++ b/doc/source/node_management/kubernetes/node_interfaces/interface-provisioning.rst @@ -24,7 +24,7 @@ Some interfaces require manual provisioning before the nodes can be unlocked. network before you can unlock the node. .. note:: - For the |prod-os| OpenStack application and an openstack-compute + For the |prod-os| application and an openstack-compute labeled worker node, you must also attach at least one 'data' class data networks before you can unlock the node. The data networks must be set up beforehand. For more information, diff --git a/doc/source/node_management/kubernetes/node_interfaces/interface-settings.rst b/doc/source/node_management/kubernetes/node_interfaces/interface-settings.rst index 9c2c7b4b7..f6d53d51d 100644 --- a/doc/source/node_management/kubernetes/node_interfaces/interface-settings.rst +++ b/doc/source/node_management/kubernetes/node_interfaces/interface-settings.rst @@ -122,7 +122,7 @@ These settings are available on the **Edit Interface** and **MTU** The maximum transmission unit for the interface. - For a |prod-os| OpenStack application data interface attached to a data + For a |prod-os| application data interface attached to a data network, this must be equal to or larger than the |MTU| of the data network to which the interface is attached. @@ -157,7 +157,7 @@ These settings are available on the **Edit Interface** and networks. .. note:: - For the |prod-os| OpenStack application this is used for the IPv6 + For the |prod-os| application this is used for the IPv6 Address of |VXLAN| tunnel endpoints for use with |VXLAN| data networks. **Disabled** diff --git a/doc/source/node_management/kubernetes/node_interfaces/sriov-port-sharing.rst b/doc/source/node_management/kubernetes/node_interfaces/sriov-port-sharing.rst new file mode 100644 index 000000000..56ccd3985 --- /dev/null +++ b/doc/source/node_management/kubernetes/node_interfaces/sriov-port-sharing.rst @@ -0,0 +1,50 @@ + +.. yda1612785713877 +.. _sriov-port-sharing: + +==================== +SRIOV Port Sharing +==================== + +With |SRIOV| port sharing, you can: + + +.. _sriov-port-sharing-ul-e32-kzy-44b: + +- Create an |SRIOV| interface on a |VF| capable port. + +- Create |VF| type sub-interfaces using the |SRIOV| interface, and attach + these sub-interfaces to data networks.. + +- Create |VLAN| type interfaces using the |SRIOV| interface, and attach them to + |OAM|, internal management and cluster-host platform networks respectively. + +- Create ethernet type of sub-interfaces using an |SRIOV| interface, and + attach this interface to pxeboot network, which has to be untagged network. + + +By doing so, all of the network planes can be carried by only one VF-capable +physical port according to following resource allocation: + + +.. _sriov-port-sharing-ul-fdh-wzy-44b: + +- Platform type networks: PF + + - pxeboot + + - oam + + - cluster-host + + - mgmt + +- Data type networks: |VFs| + + - pci-sriov class, vf type + + +- :ref:`Configuring Ethernet Interfaces on SR-IOV interface Using from Horizon + ` + +- :ref:`Configuring Ethernet Interfaces on SR-IOV interface Using the CLI ` diff --git a/doc/source/node_management/kubernetes/the-life-cycle-of-a-host.rst b/doc/source/node_management/kubernetes/the-life-cycle-of-a-host.rst index 20cfd61f9..83a67de8c 100644 --- a/doc/source/node_management/kubernetes/the-life-cycle-of-a-host.rst +++ b/doc/source/node_management/kubernetes/the-life-cycle-of-a-host.rst @@ -97,7 +97,7 @@ reference. reflect the operational state of a host. The transition triggers the recovery of a container to another worker node. These transitions apply where a container is an application container, or when running - the |prod-os| OpenStack application, a container. + the |prod-os| application. .. seealso:: :ref:`Host Status and Alarms During System Configuration Changes diff --git a/doc/source/shared/abbrevs.txt b/doc/source/shared/abbrevs.txt index 5fe411a9b..92c464a4a 100755 --- a/doc/source/shared/abbrevs.txt +++ b/doc/source/shared/abbrevs.txt @@ -79,6 +79,7 @@ .. |SNAT| replace:: :abbr:`SNAT (Source Network Address Translation)` .. |SNMP| replace:: :abbr:`SNMP (Simple Network Management Protocol)` .. |SRIOV| replace:: :abbr:`SR-IOV (Single Root I/O Virtualization)` +.. |SRIOVs| replace:: :abbr:`SR-IOV (Single Root I/O Virtualizations)` .. |SSD| replace:: :abbr:`SSD (Solid State Drive)` .. |SSDs| replace:: :abbr:`SSDs (Solid State Drives)` .. |SSH| replace:: :abbr:`SSH (Secure Shell)` @@ -89,6 +90,7 @@ .. |ToR| replace:: :abbr:`ToR (Top-of-Rack)` .. |UDP| replace:: :abbr:`UDP (User Datagram Protocol)` .. |UEFI| replace:: :abbr:`UEFI (Unified Extensible Firmware Interface)` +.. |UUID| replace:: :abbr:`UUID (Universally Unique Identifier)` .. |VF| replace:: :abbr:`VF (Virtual Function)` .. |VFs| replace:: :abbr:`VFs (Virtual Functions)` .. |VLAN| replace:: :abbr:`VLAN (Virtual Local Area Network)` diff --git a/tox.ini b/tox.ini index badcc37d1..70a1193aa 100644 --- a/tox.ini +++ b/tox.ini @@ -16,7 +16,7 @@ deps = -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -r{toxinidir}/doc/requirements.txt commands = - sphinx-build -a -E -W --keep-going -d doc/build/doctrees -b html doc/source doc/build/html {posargs} + sphinx-build -a -E -W --keep-going -d doc/build/doctrees -t starlingx -b html doc/source doc/build/html {posargs} bash htmlChecks.sh whitelist_externals = bash htmlChecks.sh