IO Write/Read Function

For the IO Write/Read Function, you must create a script for the first LOGIN process. When the command is used, the Bus Engine starts a Write/Read process using the defined settings.

To start a Write/Read process, define the following parameters:

  • IO_AutoCredit—This gets following values:

    • ON: The BE sends one R_RDY as soon as it receives a SOF.

    • OFF: The user must define an interrupt to handle credit.

  • IO_ThreadCount—This is the number of threads to be enabled in the BE. It gets values from 1 to 8 (default is 4).

  • IO_ReadWriteType—This can get following values:

    • RW_100_READ – Logic sends only READ commands.

    • RW_100_WRITE – BE sends only Write commands.

    • RW_10_WRITE_90_READ – BE sends 10% Write commands and 90% READ commands.

    • RW_25_WRITE_75_READ – BE sends 25% Write commands and 75% READ commands.

    • RW_50_WRITE_50_READ – BE sends 50% Write commands and 50% READ commands.

    • RW_75_WRITE_25_READ – BE sends 75% Write commands and 25% READ commands.

    • RW_90_WRITE_10_READ – BE sends 90% Write commands and 10% READ commands.

Once you have defined the above parameters, the IO_Write Function is ready to run. The prototype is as follows:

IO_Write(initial value, Send Type, Transfer Length, Max Payload size)

  • Initial Value—This is a 64-bit initial value (initial seed) for the payload type.

  • Send Type—Defines the type of payload to be send. The following values can be set:

    • SEND_FIXED

    • SEND_INCREMENTAL

    • SEND_PRBS11

  • Transfer Length—Defines the length of the data transfer for each command. The following values can be set:

    • IO_SIZE_256KB

    • IO_SIZE_32KB

    • IO_SIZE_4KB

    • IO_SIZE_512B

  • Maximum Payload Size—Defines the maximum allowed payload size in bytes.

Exerciser as Initiator

This section contains some examples for getting maximum data throughput and maximum IOPS when Exerciser acts as an Initiator.

Maximum Data Throughput

For getting maximum data throughput, maximum payload size must be set to 2112. The maximum possible transfer length, which is 256KB, must also be used.

The following examples illustrate Maximum Data Throughput for Write and Read commands:

INPUT: Maximum Data—Write

Set IO_AutoCredit = ON

Set IO_ThreadCount = 8

Set IO_ReadWriteType = RW_100_WRITE

IO_Write(0x1, SEND_INCREMENTAL, IO_SIZE_512B)

RESULTS: Maximum Data—Write

I/O Performance

Reads per second 0 IOPS

Writes per second 11882 IOPS

Total I/Os per second 11882 IOPS

Read Rate 0.00 MB/s (0%)

Write Rate 2970.51 MB/s (93%)

Total Throughput 2970.51 MB/s (46%)

INPUT: Maximum Data Throughput—Read

Set IO_AutoCredit = ON

Set IO_ThreadCount = 8

Set IO_ReadWriteType = RW_100_READ

IO_Write(0x1, SEND_INCREMENTAL, IO_SIZE_256KB, 2112)

RESULTS: Maximum Data Throughput—Read

I/O Performance

Reads per second 12573 IOPS

Writes per second 0 IOPS

Total I/Os per second 12573 IOPS

Read Rate 3143.44 MB/s (98%)

Write Rate 2970.51 MB/s (0%)

Total Throughput 3143.44 MB/s (49%)

Maximum IOPS

For getting maximum IOPS, the minimum possible transfer length, which it is 512B, must be used. Below is an example of maximum IOPS for write and read commands.

The following examples illustrate Maximum IOPS for Write and Read commands:

INPUT: Maximum IOPS—Write

Set IO_AutoCredit = ON

Set IO_ThreadCount = 8

Set IO_ReadWriteType = RW_100_WRITE

IO_Write(0x1, SEND_INCREMENTAL, IO_SIZE_512B)

RESULTS: Maximum IOPS—Write

I/O Performance

Reads per second 0 IOPS

Writes per second 102941 IOPS

Total I/Os per second 102941 IOPS

Read Rate 0.00 MB/s (0%)

Write Rate 50.26 MB/s (2%)

Total Throughput 50.26 MB/s (1%)

INPUT: Maximum IOPS—Read

Set IO_AutoCredit = ON

Set IO_ThreadCount = 8

Set IO_ReadWriteType = RW_100_READ

IO_Write(0x1, SEND_INCREMENTAL, IO_SIZE_512B)

RESULTS: Maximum IOPS—Read

I/O Performance

Reads per second 575240 IOPS

Writes per second 0 IOPS

Total I/Os per second 575240 IOPS

Read Rate 280.97 MB/s (9%)

Write Rate 0.00 MB/s (0%)

Total Throughput 280.97 MB/s (4%)

Exerciser as Target

When the Exerciser acts as the Target, the following settings must be entered prior to running the first test:

  • IO_AutoCredit

  • IO_ThreadCount

  • Maximum Payload size

Once the script has run, with SANBlaze as the initiator, the above settings are only entered once per session. Therefore, each time a new test scenario is run in SANBlaze and when that test is completed, a new test can be performed without rerunning the script.

Below are some examples for getting maximum data throughput and maximum IOPS when the Exerciser acts as the Target. For all of these example tests, the script is same as following and it needs to be run once at beginning.

  • set IO_AutoCredit = ON

  • Set IO_ThreadCount = 8

  • IO_Write(0x1, SEND_INCREMENTAL, IO_SIZE_256KB, 2112)