libvma icon indicating copy to clipboard operation
libvma copied to clipboard

NFS-Ganesha traffic is not getting offloaded

Open syspro4 opened this issue 3 years ago • 0 comments

Subject

NFS-Ganesha traffic is not getting offloaded

Issue type

  • [x] Bug report
  • [ ] Feature request

Configuration:

  • Product version : 9.4
  • OS: Oracle Linux 8.3
  • OFED: MLNX_OFED_LINUX-5.4-1.0.3.0
  • Hardware: Mellanox Technologies MT27700 Family [ConnectX-4]

Actual behavior:

NFS-Ganesha traffic is not getting offloaded after running IOs from nfs client. I created NFS-Ganesha configuration based on local xfs filesystem and used VFS FSAL to export the xfs. I started NFS-Ganesha with LD_PRELOAD=libvma.so & then did nfs mount from the host and did IOs but in vma_stats I did not see any offloaded counters. I saw Timeout values.

Following are the details:

NFS-Ganesha config: $ cat /etc/ganesha/ganesha.conf EXPORT { # Export Id (mandatory, each EXPORT must have a unique Export_Id) Export_Id = 77;

# Exported path (mandatory)
Path = /mnt/dir1;

# Pseudo Path (required for NFS v4)
Pseudo = /mnt/dir1;

# Restrict the protocols that may use this export.  This cannot allow
# access that is denied in NFS_CORE_PARAM.
Protocols = 3,4;

# Required for access (default is None)
# Could use CLIENT blocks instead
Access_Type = RW;

# Whether to squash various users.
Squash = no_root_squash;

## Allowed security types for this export
#Sectype = sys,krb5,krb5i,krb5p;

# Exporting FSAL
FSAL {
    Name = VFS;
}

}

Started NFS-Ganesha using following command: $ VMA_LOG_FILE=/var/log/ganesha/ganesha_libvma.log VMA_TRACELEVEL=DEBUG LD_PRELOAD=libvma.so /usr/bin/ganesha.nfsd -f /etc/ganesha/ganesha.conf -N NIV_EVENT

$vma_stats -p 208291 vmastat: stats for application: ganesha.nfsd with pid: 208291 fd ------------ total offloaded ------------- --------- total os ---------- pkt Kbyte eagain error poll% pkt Kbyte eagain error poll Rx Ready:0/0 [os/offload] Timeouts:5761 Errors:0 Poll:0.00% Polling CPU:0% epoll[61] Rx Ready:0/0 [os/offload] Timeouts:19 Errors:0 Poll:0.00% Polling CPU:0% epoll[64] Rx Ready:0/0 [os/offload] Timeouts:19 Errors:0 Poll:0.00% Polling CPU:0% epoll[67] Rx Ready:0/0 [os/offload] Timeouts:19 Errors:0 Poll:0.00% Polling CPU:0% epoll[81] Rx Ready:0/0 [os/offload] Timeouts:19 Errors:0 Poll:0.00% Polling CPU:0% poll Rx Ready:0/0 [os/offload] Timeouts:5761 Errors:0 Poll:0.00% Polling CPU:0% epoll[61] Rx Ready:0/0 [os/offload] Timeouts:19 Errors:0 Poll:0.00% Polling CPU:0% epoll[64] Rx Ready:0/0 [os/offload] Timeouts:19 Errors:0 Poll:0.00% Polling CPU:0% epoll[67] Rx Ready:0/0 [os/offload] Timeouts:19 Errors:0 Poll:0.00% Polling CPU:0% epoll[81] Rx Ready:0/0 [os/offload] Timeouts:19 Errors:0 Poll:0.00% Polling CPU:0%

In 'netstat' like view I do not see ganesha.nfsd as a 'Program name' $ vma_stats -v 5 Proto Offloaded Recv-Q Send-Q Local Address Foreign Address State Inode PID/Program name $

After looking at the log file I see following error/warning: $ cat /var/log/ganesha/ganesha_libvma.log | more Pid: 208291 Tid: 208291 VMA DEBUG: rdma_lib_reset doesn't exist returning 0 Pid: 208291 Tid: 208291 VMA DEBUG: EXIT: daemon() Child Process: starting with 208291 Pid: 208291 Tid: 208291 VMA DEBUG: sock_redirect_main() Pid: 208291 Tid: 208291 VMA DEBUG: ENTER: close(fd=7) Pid: 208291 Tid: 208291 VMA DEBUG: ENTER: close(fd=7)

After looking online for "rdma_lib_reset doesn't exist returning 0" I found a known issue: 1565428 Description: rdma_lib_reset function is not supported on the Upstream driver. Thus, fork() function is not supported. Does this mean that libvma will not work for the daemon process?

Then I restarted ganesha.nfsd with 'forground' option and the rdma_lib_reset() error in the log went away but still the IO traffic did not get offload. I see same Timeout messages in vma_stats output.

Any help would be much appreciated.

Thanks!

syspro4 avatar Nov 25 '21 06:11 syspro4