20. Cheat Sheet for Diagnosing Problems#
The following tables can help users diagnose GDS problems.
Make sure to go through following variables and observe if performance is where it needs to be.
Variable impacting performance |
Description |
Steps to take enable/disable the functionality (“How to”) |
|---|---|---|
Compat mode |
Disable compat mode in |
Set allow_compat_mode: false in cufile.json. Or Set CUFILE_FORCE_COMPAT_MODE environment variable to false. |
Log level |
Set log level to ERROR in cufile.json |
Following setting in cufile.json will set the logging level to ERROR. "logging": {
// log
directory, if not enabled will create log file under current working directory //"dir": "/home/<xxxx>",
// NOTICE|ERROR|WARN|INFO|DEBUG|TRACE (in decreasing order of severity)
"level": "ERROR"
},
|
Nvidia-fs stats |
Make sure nvidia-fs read/write stats are disabled. These can have a performance impact for small IO sizes. By default these are disabled. |
To check the current state of the stats, use the following command.
0 - Disabled 1 - Enabled To disable them,
|
GDR stats/RDMA stats (CQE errors) |
||
Relax Ordering |
For distributed file systems, make sure NICs have relax ordering is enabled set “MAX_ACC_OUT_READ=44” on ConnectX-6. Set “MAX_ACC_OUT_READ=0” for ConnectX-7. |
|
Persistent mode |
Enable persistent mode |
|
Clock speed |
Set clock speed to maximum |
|
BAR size |
Make sure BAR size is enabled to maximum possible value |
|
Numa affinity |
Set numa affinity of the process where NIC-GPU are in the same switch |
|
MRRS |
Sets the PCIe Max Read Request Size for the NIC/NVMe Specifying Max Read request size enables the Requestor (NIC/NVME) to read data from the GPU memory upto the specified size to improve Writes from GPU to storage performance. |
Check the setting using:
Read the current value:
To set to 4K:
To set to 512 bytes:
The acceptable values are: 0 - 128B, 1 - 256B, 2 - 512B, 3 - 1024B, 4 - 2048B and 5 - 4096B. Caution: Specifying selector indexes outside this range might cause the system to crash. |
For ROCE setups, consider additional following items:
CPU Governor |
Performance |
|
RX/TX ring |
Set them to maximum |
|
RX/TX channels |
Set to max allowed |
|
LRO |
Turn on large receive offload |
|
IRQ affinity |
Set IRQ affinity to the affine NUMA node |
|
IRQ balance |
Turn off IRQ balancer |
|
TX queue length |
Increase TX queue length |
|
If the above steps do not help, collect the following information and share it with us.
Measure GDR performance |
For RDMA connectivity and performance issues run ib_read and ib_write tests with cuda and GPU enabled |
Follow instructions at linux-rdma/perftest In tests use the option
|
Use Nsight systems |
For RDMA connectivity and performance issues run ib_read and ib_write tests with cuda and GPU enabled |
|
Describe env |
Virtual (Docker or actual VM) or BM |
|
Collect gds logs |
Collect cufile.log
|
|
Debugging:
Dmesg errors? |
Check for kernel errors |
|
MiG mode enabled? |
Check if MIG is enabled |
|
FM enabled or not |
For NVSwitch based systems. Check if fabric manager is running and active without any errors |
|