Verifying the Napatech Link-Storage™ Software Configuration

Getting Started with Napatech Link-Storage™ Software

Platform
Napatech IPU
Content Type
Getting Started
Capture Software Version
Link-Storage™ Software 1.0

Use this information to test writing from the host to the attached disks on the target server using the fio tool.

Before you begin

Make sure that you have:

About this task

The fio tool is useful for measuring various aspects of storage performance.
Note: The following prompts are used to indicate which part of the system to run the provided commands on.
  • soc#: The SoC on the IPU.
  • host#: The server where the IPU is installed.
  • target#: The remote server with storage disks.

Procedure

  1. On the host, load the drivers.
    host# modprobe virtio-pci
    host# modprobe virtio-blk
    Loading these drivers enables the kernel on the host to connect to the virtio block devices.
  2. Verify block devices.
    host# lsblk
    An output example:
    NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    sda      8:0    0 447.1G  0 disk 
    ├─sda1   8:1    0   600M  0 part /boot/efi
    ├─sda2   8:2    0     1G  0 part /boot
    ├─sda3   8:3    0   400G  0 part /
    └─sda4   8:4    0  45.5G  0 part [SWAP]
    vda    251:0    0 931.5G  0 disk 
    vdb    251:16   0 931.5G  0 disk 
    vdc    251:32   0 931.5G  0 disk 
    vdd    251:48   0 931.5G  0 disk 
    vde    251:64   0   256M  0 disk 
    vdf    251:80   0   256M  0 disk 
    vdg    251:96   0   256M  0 disk 
    vdh    251:112  0   256M  0 disk 
    vdi    251:128  0   256M  0 disk 
    vdj    251:144  0   256M  0 disk 
    vdk    251:160  0   256M  0 disk 
    vdl    251:176  0   256M  0 disk 
    vdm    251:192  0   256M  0 disk 
    vdn    251:208  0   256M  0 disk 
    vdo    251:224  0   256M  0 disk 
    vdp    251:240  0   256M  0 disk
    Block devices vd*, where * is a,b,c ..., p are present in the output.
  3. Install the fio tool.
    For example:
    host# dnf group install "Development Tools"
    host# dnf install libaio-devel
    host# git clone git://git.kernel.dk/fio.git
    host# cd fio
    host#  ./configure
    host#  make
    host#  make install
  4. On the host, create a job file.
    host# vim fio_nvme.config
    An example of the job file:
    [global]
    thread=1
    direct=1
    invalidate=1
    ioengine=libaio
    norandommap=1
    group_reporting=1
    bs=4k
    rw=randwrite
    iodepth=256
    numjobs=1
    time_based=1
    runtime=30
    ramp_time=10
    size=5000G
    [test0]
    filename=/dev/vda
    filename=/dev/vdb
    filename=/dev/vdc
    filename=/dev/vdd
    filename=/dev/vde
    filename=/dev/vdf
    filename=/dev/vdg
    filename=/dev/vdh
    filename=/dev/vdi
    filename=/dev/vdj
    filename=/dev/vdk
    filename=/dev/vdl
    filename=/dev/vdm
    filename=/dev/vdn
    filename=/dev/vdo
    filename=/dev/vdp
    This configuration sets up a fio test to perform random write I/O operations on multiple block devices (/dev/vda to /dev/vdp) simultaneously for 30 seconds. For detailed information on the parameters, see Job file parameters.
  5. Run the test using the fio tool.
    For example:
    host# ./fio fio_nvme.config
    An output example:
    test0: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=256
    fio-3.34-302-g5ae4
    Starting 1 thread
    Jobs: 1 (f=0): [f(1)][100.0%][w=870MiB/s][w=223k IOPS][eta 00m:00s]
    test0: (groupid=0, jobs=1): err= 0: pid=30905: Thu Feb 29 16:48:23 2024
      write: IOPS=223k, BW=871MiB/s (913MB/s)(25.5GiB/30001msec); 0 zone resets
        slat (nsec): min=868, max=119179, avg=2035.79, stdev=2039.17
        clat (usec): min=377, max=2547, avg=1146.55, stdev=207.60
         lat (usec): min=378, max=2548, avg=1148.59, stdev=207.57
        clat percentiles (usec):
         |  1.00th=[  717],  5.00th=[  824], 10.00th=[  881], 20.00th=[  963],
         | 30.00th=[ 1020], 40.00th=[ 1090], 50.00th=[ 1139], 60.00th=[ 1205],
         | 70.00th=[ 1254], 80.00th=[ 1336], 90.00th=[ 1418], 95.00th=[ 1500],
         | 99.00th=[ 1631], 99.50th=[ 1680], 99.90th=[ 1778], 99.95th=[ 1811],
         | 99.99th=[ 1926]
       bw (  KiB/s): min=853469, max=911951, per=100.00%, avg=892469.60, stdev=14746.85, samples=60
       iops        : min=213367, max=227987, avg=223117.12, stdev=3686.68, samples=60
      lat (usec)   : 500=0.01%, 750=1.66%, 1000=24.45%
      lat (msec)   : 2=73.88%, 4=0.01%
      cpu          : usr=10.26%, sys=45.74%, ctx=88631, majf=0, minf=294
      IO depths    : 1=0.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=100.0%
         submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
         complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.1%
         issued rwts: total=0,6685438,0,0 short=0,0,0,0 dropped=0,0,0,0
         latency   : target=0, window=0, percentile=100.00%, depth=256
    
    Run status group 0 (all jobs):
      WRITE: bw=871MiB/s (913MB/s), 871MiB/s-871MiB/s (913MB/s-913MB/s), io=25.5GiB (27.4GB), run=30001-30001msec
    
    Disk stats (read/write):
      vda: ios=261/555143, sectors=2088/4441144, merge=0/0, ticks=380/549161, in_queue=549541, util=99.68%
      vdb: ios=256/555141, sectors=2048/4441128, merge=0/0, ticks=390/540597, in_queue=540987, util=99.70%
      vdc: ios=89/555146, sectors=712/4441168, merge=0/0, ticks=218/559405, in_queue=559624, util=99.71%
      vdd: ios=0/555150, sectors=0/4441200, merge=0/0, ticks=0/560313, in_queue=560313, util=99.71%
      vde: ios=0/555150, sectors=0/4441200, merge=0/0, ticks=0/561803, in_queue=561804, util=99.77%
      vdf: ios=0/555146, sectors=0/4441168, merge=0/0, ticks=0/582119, in_queue=582120, util=99.78%
      vdg: ios=0/555146, sectors=0/4441168, merge=0/0, ticks=0/613747, in_queue=613748, util=99.82%
      vdh: ios=0/555146, sectors=0/4441168, merge=0/0, ticks=0/615689, in_queue=615689, util=99.81%
      vdi: ios=0/555146, sectors=0/4441168, merge=0/0, ticks=0/625745, in_queue=625745, util=99.84%
      vdj: ios=0/555144, sectors=0/4441152, merge=0/0, ticks=0/632929, in_queue=632930, util=99.89%
      vdk: ios=0/555144, sectors=0/4441152, merge=0/0, ticks=0/656894, in_queue=656894, util=99.93%
      vdl: ios=0/555144, sectors=0/4441152, merge=0/0, ticks=0/651981, in_queue=651981, util=99.97%
      vdm: ios=0/555149, sectors=0/4441192, merge=0/0, ticks=0/637146, in_queue=637147, util=99.99%
      vdn: ios=0/555149, sectors=0/4441192, merge=0/0, ticks=0/623780, in_queue=623780, util=100.00%
      vdo: ios=0/555150, sectors=0/4441200, merge=0/0, ticks=0/521661, in_queue=521661, util=100.00%
      vdp: ios=0/555149, sectors=0/4441192, merge=0/0, ticks=0/517681, in_queue=517682, util=100.00%
    The output indicates the performance of the write test (random writes) conducted on the specified block devices. The Run status group 0 section provides an overview of the statistics for all jobs in group 0, including the write bandwidth, total I/O size and duration of the test. For detailed information on the output, see Interpreting the output.