C H A P T E R  28

IO Bus Test (iobustest)


iobustest Description

The iobustest exercises and verifies the PCI subsystem which include ASIC's (schizos, FIRE), NIC's, address/data lines and the PCI interconnects. The test is designed to maximize stress on the electrical interconnects of the IO boards.

iobustest uses the end PCI device as a medium to generate traffic on the IO bus using SSO patterns.

SSO patterns are created using special combinations of the bus width and flip boundary (based on the underlying architecture).

iobustest ensures the connectivity for all the controllers/targets.

iobustest is used to exercise the entire IO subsystem including the various IO interconnects on the IO bus. The test uses end devices such as disks and NICs as the targets and runs appropriate tests on those devices. The test uses specific data patterns based on the underlying architecture.


iobustest Test Requirements

The test uses the file /opt/SUNWvts/lib/conf/iobus.cfg to list the disk and network devices which are to be excluded from the test target list. This list will list devices that test should NOT target or spawn the test on the specified devices.

The user could also specify a path to their own config file. This support is provided from CLI using the "cfgpath = " option.

Single bit/correctable (ECC) errors are logged into the system log files. User needs to monitor these messages. Double bit errors would cause system panic Data compare errors (disk) and packet size mis-match (network) are reported as device errors by the iobustest.

iobustest Subtests

In order to exercise the bus, the test requires an end target device on which it performs data transfers. To detect target devices, the test uses a probe routine. The function of the probe routine is to build a list of PCI devices, which are either of the type disk OR network and register them for testing. If the test is executed from the SunVTS framework, then the test probe would perform this function. Otherwise, if the test is invoked from the command line as a standalone entity, then the test itself does the probing of the devices.(Test detects the targets automatically.)

The probe routine ensures that all the PCI slots which have devices installed will get tested. All the probing happens automatically without any user intervention.

Once the devices are identified, the probe registers either the disk module Or the network module to be run on those devices. This registration is based on the device type.

TABLE 28-1 describes the iobustest subtests module:


TABLE 28-1 iobustest Subtests

Subtest

Description

Disk module

Once the list of disk targets has been identified, the test will look for the mounted partition where filesystem (read/write) test could be performed. The test creates two temporary files on the partition, data is written in to these files in terms of file system transfer size. Then test closes them, reopens them, reads back the data and compares them. Once the test is done, it removes the temporary files.

If no mounted partitions available on the disk then the test will run readonly test on the disk partition.

The iobustest has the capability to premount all the unmounted partitions, so that it could run filesystem test on these disks. If the user wants iobustest to premount all the unmounted partitions which have filesystem, the user has to set the environment variable BYPASS_IOBUS_FS_PROBE to zero. This approach is similar to what disktest uses to premount the disk. But in iobustest the premounting is disabled by default even if the user sets BYPASS_IOBUS_FS_PROBE to zero.

The user has to enter the disk partitions that needs to be pre-mounted in to the iobus.cfg file.

for example,

mount-points= <enter the partition list for premounting>

This allows, user to have control over the partitions, on which the filesystem test will be run. Without this option, user will not have any control over filesystem test from the iobustest.

Network module

The network module runs either internal/External loopback or external network test based on how the NIC device is configured. This module has two subtests :

1. Nettest

2. Netlbtest.

Nettest is a live network test. Netlbtest is a loopback test and intern has two subtests internal loopback and external loopback test.

 

During probing, the test identifies interfaces which are plumbed and those which are not. The test registers live network test on the plumbed interfaces. The test registers the loopback test for the unplumbed interfaces. If the test detects that the NIC device is on a live network then it runs the regular nettest using the network. If the device is not on a live network, then the test tries to run external loopback test. If external loopback check fails, then the test would run internal loopback test . Thus on a given interface, only one type of the network test could run till the configuration of the interface is changed.

For the live network test, the port has to be connected to an external network with at least one pingable interface. The test identifies the target (destination) on the network and communicates across the network.

No connection to a live network is required. No network adapter specifics are relied upon in the test (the standard ethernet protocol is used). The test works on any ethernet network card.



iobustest Test Options

To reach the dialog box, right-click on the test name in the System Map and select Test Parameter Options. If you do not see this test in the System Map, you might need to expand the collapsed groups, or your system may not include the device appropriate to this test. Refer to the SunVTS User's Guide for more details.

FIGURE 28-1 shows the iobustest Test Parameter Options display.


FIGURE 28-1 iobustest Test Parameter Options

TABLE 28-2 describes the iobustest option menu for different test modes.


TABLE 28-2 iobustest Configurations and Options

Subtest

Description

No. of Passes

# of internal passes for the test instance. This is different than the SunVTS pass. E.g. If the user selects pass=10, then the SunVTS TEST PASS count is incremented after the test has internally executed 10 passes of its own.

DMA Read-Write Loops

# of Read/Write loops.

DMA Read Loops

# of Read only loops.

DMA Write Loops

# of Write only loops.

PIO Stress Loops

# of write - read loops of small block size.

Interrupt Stress Loops

# of Read/Write loops of small block/packet size.

Loop Time

# of minutes each loop of the test runs. The option specifies the number of minutes each loop of the test runs. The option also decides the number of minutes each SSO pattern gets to run. The test accepts the value only in minutes. The default value for looptime is 2 minutes.

Flip Boundry

Flip boundary of the bus. The boundary at which the overall SSO pattern is complemented/flipped.

iobustest probe does automatic detection of the SCHIZO, FIRE and Tomatillo ASIC's and assumes the corresponding flip boundary for the asic. For new or unsupported ASIC types, the FB option could be specified.

Bus Width

Displays the bus width, the basic repeated block of SSO bit pattern with at least one victim bit.

Stress Level

Either OPTIMAL or MAX.The default stress level with iobustest is optimal. With stress=max specified, the iobustest assumes higher block size for I/O. With disk, the default block size is 256KB. With stress=max specified, the iobustest assumes the block size of 1MB.

Jumbo

This option is disabled by default. net and netlb subtests transmit 9K packet data, if jumbo is enabled.

Excl Pattern

Enable or Disable PCI-E patterns for I/O. If enabled the test enables the PCI-E patterns for I/O. The SSO pattern generated is fed into another algorithm, which generates the new raw pattern set which is specific to PCI-E bus.

PCI-E Lanes

Sets the number of PCI-E lanes. In PCI-E, we have different hardware configurations, i.e 2x, 4x, 8x, 16x & 32x. User will have to specify the number of lanes supported by the system under test.

DISKIO

Distributed or Focussed.

This option is applicable to disk targets only. The default value for diskio is distributed. With 'diskio=focussed' option specified, iobustest will run the read/write on the same block repeatedly. With 'diskio=distributed', iobustest will run the read/write till the end of the media for the selected partition.

Jbus

This option is enabled by default. Jbus subtest performs read and write operations with uscsi commands. The I/O is performed with the page size of 4K. The test runs read/write cache simulation from disk to main memory buffer allocated with 4K Page size with 16 entries. This subtest does not run net, netlb or qlc subtests.

Page Size

Allows to set the page size to be used for Jbus subtest read & write operations. Default value of 4K page size is assumed.



iobustest Modes


TABLE 28-3 iobustest Supported Test Modes

Test Mode

Description

Exclusive

Performs only iobustest.



iobustest Command-Line Syntax

The standard arguments for /opt/SUNWvts/bin/iobustest are described in TABLE 28-4. The command-line syntax is below:

-o dev=iobus,pass=<cnt>, dmardwrloops=<nloops>,dmardloops=<nloops>,dmawrloops=<nloops>,pioloops=<nloops>,jumbo=<Enable/Disable>, intrloops=<nloops>, stress=<optimal/max>,looptime=<minutes>,cfgpath=config_file,BW=<32 bit Integer>,FB=<32 bit Integer>,pcie=[Enable|Disable],lanes=<n>,jbus=[Enable|Disable],page=<4K>

 


TABLE 28-4 iobustest Command-Line Syntax

Argument

Description

dev=iobus

The target device name.

This will always be "iobus" for the iobustest. The test actually runs on the PCI target devices, but uses iobus as the dummy device name.

pass=n

# of internal passes for the test instance.

This is different than the SunVTS pass. E.g. If the user selects pass=10, then the SunVTS TEST PASS count is incremented after the test has internally executed 10 passes of its own.

dmardwrloops=n

# of Read only loops.

The test runs <n> loops of Read only test instances on disks. For network interfaces, write only test instances are spawned, since read only test case can not be performed on network interfaces.

dmardloops=n

# of Write only loops.

The test runs <n> loops of write only test instances on disks and network interfaces. The partition selection algorithm for selecting the slices, is similar to the disk selection algorithm for write/read tests.

dmawrloops=n

# of Write only loops.

The test runs <n> loops of write only test instances on disks and network interfaces. The partition selection algorithm for selecting the slices, is similar to the disk selection algorithm for write/read tests.

pioloops=n

# of write - read loops of small block size.

The test runs <n> loops of write - read test instances on disks with smaller block size. For network interfaces, read - write test instances of small packet size are spawned.

intrloops=n

# of Read/Write loops of small block/packet size.

The test runs <n> loops of Write - Read and compare test instances on disks interfaces.

FB=<n>, BW=<n>

Flip boundary of the bus.

iobustest probe does automatic detection of the SCHIZO, FIRE and Tomatillo ASIC's and assumes the corresponding flip boundary for the asic. For new or unsupported ASIC types, the FB option could be specified.

pcie=Enable

PCI-E patterns for I/O.

The test enables the PCI-E patterns for I/O. The SSO pattern generated is fed into another algorithm, which generates the new raw pattern set which is specific to PCI-E bus.

lanes=<n>

Lanes in PCI-E.

This option sets the number of PCI-E lanes. In PCI-E, we have different hardware configurations, i.e 2x, 4x, 8x, 16x & 32x. User will have to specify the number of lanes supported by the system under test.

stress=<max/optimal>

The default stress level with iobustest is optimal.

With stress=max specified, the iobustest assumes higher block size for I/O. With disk, the default block size is 256KB. With stress=max specified, the iobustest assumes the block size of 1MB.

looptime=n

# of minutes each loop of the test runs.

The option specifies the number of minutes each loop of the test runs. The option also decides the number of minutes each SSO pattern gets to run. The test accepts the value only in minutes. The default value for looptime is 2 minutes.

E.g. if a user selects looptime=3, then the test runs each loop for 3 minutes and when the test completes the specified number of ioloops, the internal pass count is incremented by 1.

diskio=(distributed/focussed)

This option is applicable to disk targets only. The default value for diskio is distributed. With diskio=focussed option specified, iobustest will run the read/write on the same block repeatedly. With diskio=distributed, iobustest will run the read/write till the end of the media for the selected partition.

cfgpath=absolute_file_name

Absolute file name path for the configuration file. The user could specify (from CLI only), the absolute name of the file that lists the devices to be excluded from testing.

For example. if the user supplies cfgpath=/var/tmp/iobus.cfg, then the test will exclude the disk and the network devices that are listed in this file. If file name is not specified, the test would consider default configuration file, that is, /opt/SUNWvts/lib/conf/iobus.cfg to determine the devices for exclusion.

The default config file has to be created by the user on a need basis. The config file must have key word "ignore-target = " followed by the names of the disk or the network devices to exclude. Each device to exclude must be separated by a space. The user can specify the complete device name of the device to exclude or the logical group. If all the available target devices are specified in the ignore-target list, then the iobustest will not be registered and message indicating that no targets found will be logged in the kernel error file. Hence, it is necessary to have at least one target (disk or a NIC) to test using the iobustest.

For example. ignore-target = ce* c0 c1t1d1s0

will ignore all the ce network interfaces, all the disk devices under controller "0" and the disk c1t1d1s0 from testing.

jbus=Enable/Disable

This option is enabled by default. Jbus subtest performs read and write operations with uscsi commands. The I/O is performed with the page size of 4K. The test runs read/write cache simulation from disk to main memory buffer allocated with 4K Page size with 16 entries. This subtest does not run net or netlb subtests.

jumbo=<Enable/Disable>

This option is disabled by default. net and netlb subtests transmit 9K packet data, if jumbo is enabled.

page=4

This option allows to set the page size to be used for Jbus subtest read & write operations. Default value of 4K page size is assumed.