Cisco usNIC Deployment Guide for Cisco UCS C-Series Rack-Mount Standalone Servers Overview of Cisco usNIC 2 Cisco usNIC Prerequisites 3 Configuring Cisco usNIC 4 Configuring Cisco usNIC Using the CIMC GUI 5 Creating Cisco usNIC Using the CIMC CLI 7 Modifying a Cisco usNIC using the CIMC CLI 9 Deleting Cisco usNIC from a vNIC 11 Installing Linux Drivers for Cisco usNIC 12 Manually Loading the Kernel Modules for Cisco usNIC 13 Upgrading the Linux Drivers for Cisco usNIC 14 Uninstalling Linux Drivers for Cisco usNIC 14 Verifying the Cisco usNIC Installation 14 Revised: March 5, 2015, Overview of Cisco usNIC The Cisco user-space NIC (Cisco usNIC) feature improves the performance of software applications that run on the Cisco UCS servers in your data center by bypassing the kernel when sending and receiving networking packets. The applications interact directly with a Cisco UCS VIC second generation or later adapter, which improves the networking performance of your high-performance computing cluster. To benefit from Cisco usNIC, your applications must use the Message Passing Interface (MPI) instead of sockets or other communication APIs. Cisco usNIC offers the following benefits for your MPI applications: • Provides a low-latency and high-throughput communication transport. • Employs the standard and application-independent Ethernet protocol. • Takes advantage of lowlatency forwarding, Unified Fabric, and integrated management support in the following Cisco data center platforms: • Cisco UCS server • Cisco UCS VIC second generation or later generation adapter • 10 or 40GbE networks 2 Standard Ethernet applications use user-space socket libraries, which invoke the networking stack in the Linux kernel. The networking stack then uses the Cisco eNIC driver to communicate with the Cisco VIC hardware. The following figure shows the contrast between a regular software application and an MPI application that uses usNIC. Figure 1: Kernel-Based Network Communication versus Cisco usNIC-Based Communication Cisco usNIC Prerequisites To benefit from Cisco usNIC, your configuration has the following prerequisites: • Cisco Open Message Passing Interface (MPI) distribution. • UCS Driver ISO. • A supported Linux operating system distribution release. For more information, see the appropriate Hardware and Software Interoperability guide. 3 Configuring Cisco usNIC Note The Cisco usNIC scripts do not support the upgrade or degrade of an operating system. To update the operating system, first ensure you uninstall the usNIC drives, update your operating system, and then reinstall the usNIC drivers. Alternatively, you can update the operating system, uninstall the usNIC drivers, and then reinstall the usNIC drivers. Before You Begin Make sure that the following software and hardware components are installed on the Cisco UCS server: • A supported Linux operating system distribution release. For more information, see the appropriate Hardware and Software Interoperability guide. • GCC, G++, and Gfortran must be installed • rdma-3.6 or later RPMs • Cisco UCS VIC second generation or later adapter • If you install Open MPI in a non-default location, depending on the particular OS distribution release installed on your server, you will also need libibverbs-devel and libnl1-devel or libnl3-devel. If you have libnl1 installed, then you will need libnl1-devel and if you have libnl3 installed, then you will need libnl3-devel. If you have do not have libnl1-devel or libnl3-devel installed, then you will need to install both libnl3 and libnl3-devel. For information on supported Linux operating system distributions, see the content of the usNIC folder that is included in the UCS Drivers ISO bundle. See Cisco UCS Virtual Interface Card Drivers for Linux Installation Guide. Important Procedure Step 1 Configure theCisco usNIC properties and BIOS settings. To configure using the CIMC GUI, see Configuring Cisco usNIC Using the CIMC GUI, on page 5 To configure using the CIMC CLI, see the following: • Creating Cisco usNIC Using the CIMC CLI, on page 7 • Modifying a Cisco usNIC using the CIMC CLI, on page 9 • Deleting Cisco usNIC from a vNIC, on page 11 Step 2 Ensure the kernel option CONFIG_INTEL_IOMMU is selected in the kernel. Enable the Intel IOMMU driver in the Linux kernel by manually adding 'intel_iommu =on' in the grub.conf file (/boot/grub/grub.conf): KEYBOARDTYPE=pc KEYTABLE=us rd NO DM rhgb quiet intel_iommu=on Step 3 Verify that the running kernel has booted with the intel_iommu=on option. $ cat /proc/cmdline | grep iommu 4 Step 4 Reboot your Cisco UCS server. You must reboot your server for the changes to take effect after you configure Cisco usNIC. Step 5 Install the Cisco usNIC Linux drivers. For more information about installing the drivers, see Installing Linux Drivers for Cisco usNIC, on page 12. What to Do Next After you complete configuring Cisco usNIC and installing the Linux drivers, verify that Cisco usNIC is functioning properly. For more information about how to verify the installation, see Verifying the Cisco usNIC Installation, on page 14. Configuring Cisco usNIC Using the CIMC GUI Note Even though several properties are listed for Cisco usNIC in the usNIC properties dialog box, you must configure only the following properties because the other properties are not currently being used. • cq-count • rq-count • tq-count • usnic-count Before You Begin You must log in to the CIMC GUI with administrator privileges to perform this task. Procedure Step 1 Log into the CIMC GUI. For more information about how to log into CIMC, see the Cisco UCS C-Series Servers Integrated Management Controller GUI Configuration Guide available at this URL: http://www.cisco.com/en/US/products/ps10739/products_installation_ and_configuration_guides_list.html . Step 2 In the Navigation pane, click the Server tab. Step 3 Step 4 On the Server tab, click Inventory. In the Inventory pane, click the Cisco VIC Adapters tab. Step 5 In the Adapter Cards area, select the adapter card. If the server is powered on, the resources of the selected adapter card appear in the tabbed menu below the Adapter Cards area. Step 6 Step 7 In the tabbed menu below the Adapter Cards area, click the vNICs tab. In the Host Ethernet Interfaces area, select a vNIC from the table. Note For each vNIC that you want to configure as a usNIC, select the vNIC entry from the table and specify its properties as explained in steps 9 through step 18. 5 Step 8 Click usNIC to open the usNIC Properties dialog box. Step 9 In the usNICs property, specify the number of Cisco usNICs that you want to create. Each MPI process that is running on the server requires a dedicated usNIC. You might need to create up to 64 usNICs to sustain 64 MPI processes running simultaneously. We recommend that you create at least as many usNICs, per usNIC-enabled vNIC, as the number of physical cores on your server. For example, if you have 8 physical cores on your server, create 8 usNICs. Step 10 In the Properties area, update the following fields: Field Name Description Transmit Queue Count The number of transmit queue resources to allocate. MPI will use 2 transmit queues per process. Therefore, Cisco recommends that you set this value to 2. Receive Queue Count The number of receive queue resources to allocate. MPI will use 2 receive queues per process. Therefore, Cisco recommends that you set this value to 2. Completion Queue Count The number of completion queue resources to allocate. In general, the number of completion queue resources you should allocate is equal to the number of transmit queue resources plus the number of receive queue resources. Cisco recommends that you set this value to 4. Step 11 Step 12 Click Apply. In the Navigation pane, click the Server tab. Step 13 Step 14 Step 15 On the Server tab, click BIOS. In the Actions area, click Configure BIOS. In the Configure BIOS Parameters dialog box, click the Advanced tab. Step 16 In the Processor Configuration area, set the following properties to Enabled: • Intel(R) VT-d • Intel(R) VT-d ATS support • Intel(R) VT-d Coherency Support Step 17 6 Click Save Changes. The changes take effect upon the next server reboot. Creating Cisco usNIC Using the CIMC CLI Note Even though several properties are listed for Cisco usNIC in the usNIC properties dialog box, you must configure only the following properties because the other properties are not currently being used. • cq-count • rq-count • tq-count • usnic-count Before You Begin You must log in to the CIMC CLI with administrator privileges to perform this task. Procedure Command or Action Purpose Step 1 server# scope chassis Enters chassis command mode. Step 2 server/chassis# scope adapter index Enters the command mode for the adapter card at the PCI slot number specified by index. Note Make sure that the server is powered on before you attempt to view or change adapter settings. To view the index of the adapters configured on you server, use the show adapter command. Step 3 server/chassis/adapter# scope host-eth-if {eth0 Enters the command mode for the vNIC. Specify the Ethernet ID based on the number of vNICs that you have configured in your | eth1} environment. For example, specify eth0 if you configured only one vNIC. Step 4 server/chassis/adapter/host-eth-if# create usnic-config 0 Creates a usNIC config and enters its command mode. Make sure that you always set the index value to 0. Note Step 5 To create a Cisco usNIC for the first time for a given vNIC using the CIMC CLI, you must first create a usnic-config. Subsequently, you only need to scope into the usnic-config and modify the properties for Cisco usNIC. For more information about modifying Cisco usNIC properties, see Modifying a Cisco usNIC using the CIMC CLI, on page 9. server/chassis/adapter/host-eth-if/usnic-config# Specifies the number of completion queue resources to allocate. We recommend that you set this value to 4. set cq-count count The number of completion queues equals the number of transmit queues plus the number of receive queues. 7 Command or Action Purpose Step 6 server/chassis/adapter/host-eth-if/usnic-config# Specifies the number of receive queue resources to allocate. MPI uses 2 receive queues per process. We recommend that you set this set rq-count count value to 2. Step 7 server/chassis/adapter/host-eth-if/usnic-config# Specifies the number of transmit queue resources to allocate. MPI uses 2 transmit queues per process. We recommend that you set this set tq-count count value to 2. Step 8 server/chassis/adapter/host-eth-if/usnic-config# Specifies the number of Cisco usNICs to create. Each MPI process that is running on the server requires a dedicated Cisco usNIC. set usnic-count number of usNICs . Therefore, you might need to create up to 64 Cisco usNICs to sustain 64 MPI processes running simultaneously. We recommend that you create at least as many Cisco usNICs, per Cisco usNIC-enabled vNIC, as the number of physical cores on your server. For example, if you have 8 physical cores on your server, create 8 Cisco usNICs. Step 9 server/chassis/adapter/host-eth-if /usnic-config# Commits the transaction to the system configuration. commit Note The changes take effect when the server is rebooted. Step 10 server/chassis/adapter/host-eth-if/usnic-config# Exits to host Ethernet interface command mode. exit Step 11 server/chassis/adapter/host-eth-if# exit Exits to adapter interface command mode. Step 12 server/chassis/adapter# exit Exits to chassis interface command mode. Step 13 server/chassis# exit Exits to server interface command mode. Step 14 server# scope bios Enters Bios command mode. Step 15 server/bios# scope advanced Enters the advanced settings of BIOS command mode. Step 16 server/bios/advanced# set IntelVTD Enabled Enables the Intel Virtualization Technology. Step 17 server/bios/advanced# set ATS Enabled Step 18 server/bios/advanced# set CoherencySupport Enables Intel VT-d coherency support for the processor. Enabled Step 19 server /bios/advanced# commit Enables the Intel VT-d Address Translation Services (ATS) support for the processor. Commits the transaction to the system configuration. Note The changes take effect when the server is rebooted. This example shows how to configure Cisco usNIC properties: Server server server server server server 8 # scope chassis /chassis # show adapter /chassis # scope adapter 2 /chassis/adapter # scope host-eth-if eth0 /chassis/adapter/host-eth-if # create usnic-config 0 /chassis/adapter/host-eth-if/usnic-config *# set usnic-count 64 server /chassis/adapter/host-eth-if/usnic-config *# set cq-count 4 server /chassis/adapter/host-eth-if/usnic-config *# set rq-count 2 server /chassis/adapter/host-eth-if/usnic-config *# set tq-count 2 server /chassis/adapter/host-eth-if/usnic-config *# commit Committed settings will take effect upon the next server reset server /chassis/adapter/host-eth-if/usnic-config # exit server /chassis/adapter/host-eth-if # exit server /chassis/adapter # exit server /chassis # exit server # exit server/bios # scope bios server/bios/advanced # scope advanced server/bios/advanced # set Intel VTD Enabled server/bios/advanced # set ATS Enabled server/bios/advanced # set CoherencySupport Enabled server /chassis/adapter/host-eth-if/usnic-config # commit Committed settings will take effect upon the next server reset Modifying a Cisco usNIC using the CIMC CLI Note Even though several properties are listed for Cisco usNIC in the usNIC properties dialog box, you must configure only the following properties because the other properties are not currently being used. • cq-count • rq-count • tq-count • usnic-count Before You Begin You must log in to the CIMC GUI with administrator privileges to perform this task. Procedure Command or Action Purpose Step 1 server# scope chassis Enters chassis command mode. Step 2 server/chassis# scope adapter index Enters the command mode for the adapter card at the PCI slot number specified by index. Note Step 3 Make sure that the server is powered on before you attempt to view or change adapter settings. To view the index of the adapters configured on you server, use the show adapter command. server/chassis/adapter# scope host-eth-if {eth0 Enters the command mode for the vNIC. Specify the Ethernet ID based on the number of vNICs that you have configured in your | eth1} environment. For example, specify eth0 if you configured only one vNIC. 9 Command or Action Purpose Step 4 server/chassis/adapter/host-eth-if# scope usnic-config 0 Enters the command mode for the usNIC. Make sure that you always set the index value as 0 to configure a Cisco usNIC. Step 5 server/chassis/adapter/host-eth-if/usnic-config# The number of completion queue resources to allocate. We recommend that you set this value to 4. set cq-count count The number of completion queues equals the number of transmit queues plus the number of receive queues. Step 6 server/chassis/adapter/host-eth-if/usnic-config# Specifies the number of receive queue resources to allocate. MPI uses two receive queues per process. We recommend that you set set rq-count count this value to 2. Step 7 server/chassis/adapter/host-eth-if/usnic-config# Specifies the number of transmit queue resources to allocate. MPI uses two transmit queues per process. We recommend that you set set tq-count count this value to 2. Step 8 server/chassis/adapter/host-eth-if/usnic-config# Specifies the number of Cisco usNICs to create. Each MPI process running on the server requires a dedicated Cisco usNIC. Therefore, set usnic-count number of usNICs . you might need to create up to 64 Cisco usNIC to sustain 64 MPI processes running simultaneously. We recommend that you create at least as many Cisco usNIC, per Cisco usNIC-enabled vNIC, as the number of physical cores on your server. For example, if you have 8 physical cores on your server, create 8 usNICs. Step 9 server /chassis/adapter/host-eth-if /usnic-config# Commits the transaction to the system configuration. commit Note The changes take effect when the server is rebooted. Step 10 server/chassis/adapter/host-eth-if/usnic-config# Exits to host Ethernet interface command mode. exit Step 11 server/chassis/adapter/host-eth-if# exit Exits to adapter interface command mode. Step 12 server/chassis/adapter# exit Exits to chassis interface command mode. Step 13 server/chassis# exit Exits to server interface command mode. Step 14 server# scope bios Enters BIOS command mode. Step 15 server/bios# scope advanced Enters the advanced settings of BIOS command mode. Step 16 server/bios/advanced# set IntelVTD Enabled Enables the Intel Virtualization Technology. Step 17 server/bios/advanced# set ATS Enabled Step 18 server/bios/advanced# set CoherencySupport Enables Intel VT-d coherency support for the processor. Enabled Step 19 server/bios/advanced# commit Enables the Intel VT-d Address Translation Services (ATS) support for the processor. Commits the transaction to the system configuration. Note 10 The changes take effect when the server is rebooted. This example shows how to configure Cisco usNIC properties: server # scope chassis server /chassis # show adapter server /chassis # scope adapter 2 server /chassis/adapter # scope host-eth-if eth0 server /chassis/adapter/host-eth-if # scope usnic-config 0 server /chassis/adapter/host-eth-if/usnic-config # set usnic-count 64 server /chassis/adapter/host-eth-if/usnic-config # set cq-count 4 server /chassis/adapter/host-eth-if/usnic-config # set rq-count 2 server /chassis/adapter/host-eth-if/usnic-config # set tq-count 2 server /chassis/adapter/host-eth-if/usnic-config # commit Committed settings will take effect upon the next server reset server /chassis/adapter/host-eth-if/usnic-config # exit server /chassis/adapter/host-eth-if # exit server /chassis/adapter # exit server /chassis # exit server # exit server/bios # scope bios server/bios/advanced # scope advanced server/bios/advanced # set Intel VTD Enabled server/bios/advanced # set ATS Enabled server/bios/advanced # set CoherencySupport Enabled server /chassis/adapter/host-eth-if/usnic-config # commit Committed settings will take effect upon the next server reset Deleting Cisco usNIC from a vNIC Before You Begin You must log in to CIMC CLI with admin privileges to perform this task. Procedure Command or Action Purpose Step 1 server# scope chassis Enters chassis command mode. Step 2 server/chassis# scope adapter index Enters the command mode for the adapter card at the PCI slot number specified by index. Note Make sure that the server is powered on before you attempt to view or change adapter settings. To view the index of the adapters configured on you server, use the show adapter command. Step 3 server/chassis/adapter# scope host-eth-if Enters the command mode for the vNIC. Specify the Ethernet ID based on the number of vNICs that you have configured in your environment. {eth0 | eth1} For example, specify eth0 if you configured only one vNIC. Step 4 Server/chassis/adapter/host-eth-if# delete Deletes the Cisco usNIC configuration for the vNIC. usnic-config 0 Step 5 Server/chassis/adapter/host-eth-if# commit Commits the transaction to the system configuration Note The changes take effect when the server is rebooted. 11 This example shows how to delete the Cisco usNIC configuration for a vNIC: server # scope chassis server/chassis # show adapter server/chassis # scope adapter 1 server/chassis/adapter # scope host-eth-if eth0 Server/chassis/adapter/host-eth-if # delete usnic-config 0 server/adapter/host-eth-if/iscsi-boot *# commit New host-eth-if settings will take effect upon the next adapter reboot server /adapter/host-eth-if/usnic-config # Installing Linux Drivers for Cisco usNIC The following section lists the content of the usNIC folder, specific for each supported Linux operating system distribution that is included in the UCS Drivers ISO bundle. Documentation about known issues and installation instructions are also included in the README file in the usNIC folder. Note To prevent the OS from swapping out the memory that is allocated to the Cisco usNIC applications, the installation software increases the locked memory system setting of the OS to Unlimited. • kmod-usnic_verbs-{version}.x86_64.rpm—Linux kernel verbs driver for the usNIC feature of the Cisco VIC SR-IOV Ethernet NIC. • libusnic_verbs-{version}.x86_64.rpm —User space library libibverbs plugin for usNIC. • openmpi-cisco-{version}.x86 _64.rpm—Cisco usNIC Open MPI—Open MPI with the Cisco usNIC BTL MPI transport. • usnic_tools-{version}.x86_64.rpm —Utility programs for usNIC. • usnic_installer.sh—Script for installing the Cisco usNIC packages listed in the section. • usnic_uninstaller.sh—Script for uninstalling the Cisco usNIC packages listed in the section. Before You Begin Make sure that you have configured the Cisco usNIC properties in CIMC. For more information about how to configure the properties, see Configuring Cisco usNIC, on page 4. You must also make sure that the host OS distribution on which you want to install Cisco usNIC has a supported version of the Cisco enic driver installed. The Cisco enic driver is the Linux kernel networking driver for the Cisco VIC SR-IOV Ethernet NIC. Procedure Step 1 # ./usnic_installer.sh Execute the installer script from the directory where the installation files are located for Cisco usNIC. Note Step 2 12 You require admin privileges to execute the script at the root (#) prompt. # chkconfig rdma on Enables rdma. Once enabled, rdma will be started automatically after a system reboot. You may need to perform this step on some Linux operating systems distributions, such as RHEL 6.4. # service rdma start Verify that the rdma service is started. This service is required for the usnic_verbs kernel module. Note Step 3 You can use the above commands on systemcl if you have the latest versions of RHEL and SLES migrated to systemd. Reboot your server for the installation changes to take effect automatically. Important If you do not want to reboot your server, you can manually load the kernel modules to ensure the system loads the correct version of the driver and enforce the new memory lock configurations. For more information about how to load the modules, see Manually Loading the Kernel Modules for Cisco usNIC, on page 13. Note Step 4 Installing Linux Drivers for usNIC using the Source Tarball The usnic_installer.sh, usnic_uninstaller.sh, and usnic_verbs_check scripts provided by Cisco supports only RPM installations. When you install one or more drivers using the tarball installations, the Cisco scripts cannot determine the system configuration and the installation might not be successful. We recommend that you do not mix the tarball and RPM installations, and that you always have one version of the required drivers. Manually Loading the Kernel Modules for Cisco usNIC If you do not want to reboot your server, you can manually load the Cisco usNIC kernel modules by using the following steps. Before You Begin Ensure you delete all the existing versions of the driver before you load the latest version of the driver. This will help you configure the system successfully. Procedure Step 1 Command or Action Purpose # rmmod enic Unloads the existing enic driver module. Note Make sure that you are not logged into the OS using the network, for example, via SSH. Otherwise, your network connection might get permanently disconnected. Alternatively, you can log in to the server using the CIMC KVM to perform this step. Step 2 # modprobe enic Loads the enic driver module. Step 3 # modprobe usnic_verbs Loads the usnic_verbs driver module. 13 Upgrading the Linux Drivers for Cisco usNIC You can use the usnic_installer.sh to upgrade the drivers. This script will replace the existing version of the drivers with the latest version of the drivers. Procedure Step 1 # ./usnic_uninstaller.sh Execute the uninstaller script from the bin folder in the directory where the Cisco usNIC installation files are located to uninstall the existing drivers on your system. Step 2 # ./usnic_installer.sh Execute the installer script from the directory where the installation files are located for Cisco usNIC. Note You require admin privileges to execute the script at the root (#) prompt. Step 3 # chkconfig rdma on Enables rdma and, once enabled, it will be started automatically after a system reboot. Step 4 # service rdma start Verify that the rdma service is started. This service is required for the usnic_verbs kernel module. Step 5 Reboot your server for the installation changes to take effect automatically. Important If you do not want to reboot your server, you can manually load the kernel modules to ensure the system loads the correct version of the driver and enforce the new memory lock configurations. For more information about how to load the modules, see Manually Loading the Kernel Modules for Cisco usNIC, on page 13. Uninstalling Linux Drivers for Cisco usNIC Procedure Step 1 # ./usnic_uninstaller.sh Execute the uninstaller script from the bin folder in the directory where the Cisco usNIC installation files are located. Step 2 Reboot your Cisco UCS server. Verifying the Cisco usNIC Installation After you install the required Linux drivers for Cisco usNIC, perform the following procedure at the Linux prompt to make sure that the installation completed successfully. 14 Note The examples shown below are configurations verified on CIMC Release 1.5(2) and Linux operating system distribution RHEL 6.4. Procedure Step 1 Search and verify if the usnic_verbs kernel module was loaded during the OS driver installation. Note Use the # prompt for install or uninstall commands, and the $ prompt to display the configurations. $ lsmod | grep usnic_verbs The following details are displayed when you enter the lsmod | grep usnic_verbs command. The kernel modules listed on your console may differ based on the modules that you have currently loaded in your OS. usnic_verbs 73762 2 ib_core 74355 11 ib_ipoib,rdma_ucm,ib_ucm,ib_uverbs,ib_umad,rdma_cm,ib_cm,iw_cm,ib_sa,ib_mad,usnic_verbs enic 73723 1 usnic_verbs Step 2 View the configuration of Cisco usNIC-enabled NICs. $ ibv_devinfo The following section is a brief example of the results that are displayed when you execute the ibv_devinfo command. The results may differ based on your current installation. When the results are displayed on your console, make sure that the state for each of the listed ports are shown as PORT_ACTIVE. The following example shows two ports (usnic_1 and usnic_0) that are configured on a Cisco UCS VIC adapter. If you configured only one Cisco usNIC-enabled vNIC, you will see a listing for only usnic_0. 15 Note The ibv_devinfo command displays the value for the transport parameter as iWARP. However, Cisco usNIC does not utilize the iWARP transport and uses the UDP-based protocol for transport. hca_id: usnic_1 transport: fw_ver: node_guid: sys_image_guid: vendor_id: vendor_part_id: hw_ver: board_id: phys_port_cnt: port: 1 state: max_mtu: active_mtu: sm_lid: port_lid: port_lmc: link_layer: hca_id: usnic_0 transport: fw_ver: node_guid: sys_image_guid: vendor_id: vendor_part_id: hw_ver: board_id: phys_port_cnt: port: 1 state: max_mtu: active_mtu: sm_lid: port_lid: port_lmc: link_layer: Step 3 iWARP (1) 4.0(1b) 0200:00ff:fe00:0000 0225:b5ff:fec1:b520 0x1137 207 0x4F 79 1 PORT_ACTIVE (4) 4096 (5) 4096 (5) 0 0 0x01 Ethernet iWARP (1) 4.0(1b) 0200:00ff:fe00:0000 0225:b5ff:fec1:b510 0x1137 207 0x4F 79 1 PORT_ACTIVE (4) 4096 (5) 4096 (5) 0 0 0x01 Ethernet Run the usnic_verbs_check script to view the installed RPMs and their versions. $ /opt/cisco/usnic/bin/usnic_verbs_check If any errors occurred during the OS driver installation, warnings are generated. If the usnic_verbs module failed to load, the following brief example shows the warnings that are generated: $ /opt/cisco/usnic/bin/usnic_verbs_check enic RPM version 2.1.1.75-rhel6u4.el6 installed usnic_verbs RPM version 1.0.4.241.rhel6u4-1 installed WARNING: usnic_verbs module not loaded libusnic_verbs RPM version 1.1.0.237.rhel6u4-1 installed Using /opt/cisco/openmpi/bin/ompi_info to check Open MPI info... Open MPI version 1.8.2cisco1.0.0.245.rhel6u4 installed WARNING: No usnic verbs devices found WARNING: No usnic verbs devices found 3 warnings Step 4 Verify that the Cisco usNIC network packets are being transmitted correctly between the client and server hosts. a) Determine the name of the Ethernet interface associated with the Cisco usNIC on the server host. <server>$ /opt/cisco/usnic/bin/usnic_status usnic_0: 0000:07:0.0, eth1, aa:ff:bb:01:01:10, 32 VFs Per VF: 2 WQ, 2 RQ, 4 CQ, 6 INT In use: 0 VFs, 0 QPs, 0 CQs usnic_1: 0000:08:0.0, eth2, aa:ff:bb:01:01:20, 32 VFs 16 Per VF: 2 WQ, 2 RQ, 4 CQ, 6 INT In use: 0 VFs, 0 QPs, 0 CQs b) Determine the IP address for the Ethernet interface. <server>$ ip addr show dev eth4 | grep "inet[^6]" inet 10.1.0.1/16 brd 10.1.255.255 scope global eth4 c) Run the usnic_udp_pingpong program on the server host. <server>$ usnic_udp_pingpong -s 200 -d usnic_0 For more information about the command line options used with the usnic_udp_pingpong program, see the ibv_ud_pingpong(1) man page. d) Execute the usnic_udp_pingpong program on the client host by using the IP address that corresponds to the Cisco usNIC on the server host. <client>$ usnic_udp_pingpong -s 200 -d usnic_0 10.43.10.1 The following example shows the results that are displayed when you run the usnic_udp_pingpong program. Server-side: <server>$ ./usnic_udp_pingpong -s 200 -d usnic_0 local address: IP: 10.43.10.1, QPN 0x0086ba remote address: IP: 10.43.10.2, QPN 0x00a9fe 400000 bytes in 0.01 seconds = 302.92 Mbit/sec 1000 iters in 0.01 seconds = 5.28 usec/half-round-trip Client-side: <client># ./usnic_udp_pingpong 10.43.10.1 -s 200 -d usnic_0 local address: IP: 10.43.10.2, QPN 0x00a9fe remote address: IP: 10.43.10.1, QPN 0x0086ba 400000 bytes in 0.01 seconds = 313.20 Mbit/sec 1000 iters in 0.01 seconds = 5.11 usec/half-round-trip Step 5 Download, compile, and execute the ring_c test program to validate that the MPI traffic is correctly transmitted between the client and server hosts. You can obtain the ring_c test program from this link: https://raw.githubusercontent.com/open-mpi/ompi-release/v1.8/ examples/ring_c.c . The following example shows how to use the wget utility to obtain, compile, and execute the ring_c. Alternatively, you can use other methods of obtaining and running the test program. $ wget http://svn.open-mpi.org/svn/ompi/branches/v1.8/examples/ring_c.c --2013-08-06 15:27:33-- http://svn.open-mpi.org/svn/ompi/branches/v1.8/examples/ring_c.c Resolving svn.open-mpi.org... 129.79.13.24 Connecting to svn.open-mpi.org|129.79.13.24|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 2418 (2.4K) [text/plain] Saving to: “ring_c.c” 100%[======================================>] 2,418 --.-K/s in 0s Last-modified header invalid -- time-stamp ignored. 2013-08-06 15:27:33 (10.7 MB/s) - “ring_c.c” saved [2418/2418] $ mpicc ring_c.c -o ring_c [no output] $ mpiexec Process 0 Process 0 Process 0 Process 0 Process 0 Process 0 Process 0 Process 0 --host host1,host2 -n 4 ./ring_c sending 10 to 1, tag 201 (4 processes in ring) sent to 1 decremented value: 9 decremented value: 8 decremented value: 7 decremented value: 6 decremented value: 5 decremented value: 4 17 Process Process Process Process Process Process Process Process 0 0 0 0 0 2 1 3 decremented decremented decremented decremented exiting exiting exiting exiting ... value: value: value: value: 3 2 1 0 If the usnic_udp_pingpong program and the ring_c program executed successfully, you should now be able to run MPI applications over Cisco usNIC. 18 © 2013-2015 Cisco Systems, Inc. All rights reserved. Americas Headquarters Cisco Systems, Inc. San Jose, CA 95134-1706 USA Asia Pacific Headquarters Cisco Systems (USA) Pte. Ltd. Singapore Europe Headquarters Cisco Systems International BV Amsterdam, The Netherlands Cisco has more than 200 offices worldwide. Addresses, phone numbers, and fax numbers are listed on the Cisco Website at www.cisco.com/go/offices.
© Copyright 2024