HP c-Class Performance Tuning manual PCIe link width improperly negotiated

Page 12

IMPORTANT: Some PCI Express chips do not properly report PCIe errors, or they might report errors when none exist. In most cases, this occurs on a bridge chip. This failure typically shows under the following conditions:

Multiple rapid executions of the fio-pci-checkutility were issued.

No data is passing over the bus reporting errors.

All drivers for attached peripherals are unloaded.

Below is an example of PCI Express errors captured on a system with an IO Accelerator.

NOTE: Windows® operating systems do not allow clearing of all errors, so only errors registered on the IO Accelerators can be considered.

Root Bridge PCIe 3000 MB/sec

 

Bridge 00:02.00 (09-12)

 

Needed 1000 MB/sec Avail 1000 MB/sec

 

Bridge 09:00.00 (0a-0f)

 

Needed 1000 MB/sec Avail 1000 MB/sec

 

* Fatal Error(s): Detected

`

* Unsupported Type(s): Detected

 

Clearing Errors

 

Bridge 0a:00.00 (0b-0d)

Needed 1000 MB/sec Avail 1000 MB/sec

ioDrive 0b:00.0 Firmware 14071

Bridge 00:04.00 (13-15)

Needed 1000 MB/sec Avail 1000 MB/sec

ioDrive 13:00.0 Firmware 14071

PCIe link width improperly negotiated

Issue

Currently shipping IO Accelerators are x4 PCI Express cards. If the system is having difficulties communicating with the IO Accelerator, the system might communicate with the IO Accelerator using only an x1 link, which has 1/4th the performance of an x4 link.

Solution

Use the fio-pci-checkutility to check for this problem and to report any issues with link width.

NOTE: The fio-pci-checkutility is not fully functional on all operating systems.

Below is an example of PCI link width errors captured on a system with an IO Accelerator.

Root Bridge PCIe 1750 MB/sec

Bridge 00:01.00 (01-01)

Needed 1000 MB/sec Avail 1000 MB/sec

Current control settings: 0x000f

Debugging performance issues 12

Image 12
Contents HP IO Accelerator Performance Tuning Guide Page Contents Setting Windows driver affinity About the Performance and Tuning Guide IntroductionSystem performance Verifying Linux system performanceWrite bandwidth test System performance Verifying Windows system performance with Iometer Debugging performance issues Improperly configured benchmarkOversubscribed bus Handling PCIe errors PCIe link width improperly negotiated CPU thermal throttling or auto-idling Slow performance using RAID5 on Linux Using CP and other system utilitiesBenchmarking through a filesystem To avoid this issue. For more information, see the patch General tuning techniques Using direct I/O, unbuffered, or zero copyMultiple outstanding IOs Pre-conditioning $ dd if=/dev/zero of=/dev/fioX bs=10M oflag=directPre-allocating memory $ echo 4096 /sys/block/fio name/queue/nrrequestsPreallocatemb Tuning techniques for writes Increased steady-state write performance with fio-formatLinux filesystem tuning Ext2-3-4 tuningStride = chunk size / filesystem block size Stripewidth = dbd * strideUsing the IO Accelerator as swap space Options iomemory-vsl preallocatememory=1072,4997,6710,10345Fio benchmark Compiling the fio benchmark$ tar xjvf fio-X.Y.Z.tar.bz2 $ cd fio-X.Y.Z Page Programming using direct I/O Using direct I/O on LinuxFd = openfilename, Owronly Fd = openfilename, Owronly OdirectUsing direct I/O on Windows ++ code sample Programming using direct I/O Programming using direct I/O Setting Windows driver affinity Windows driver affinityCreate the SetWorkerAffinity2 tag of type Regdword Acronyms and abbreviations Index Index