Hello, Im with the Go on z/OS dev team at IBM. We got a request to look into some performance issues with this package and zos. (#578
& #579)
When reading a file located on a linux machine to a zos machine, we see the poor performance reported by our users. The issue seems to be that despite enabling concurrent reads, checking the filemode forces sequential reading.
The fs.Mode returned from the remote machine is consistent with the linux format, but the zos syscall constants are used to mask and compare the value in isRegular(). These constants do not match the linux format and cause incorrect behaviour in isRegular() (And possibly any other functions that rely on the stat constants being consistent between machines)
Bypassing the !isRegular() check (forcing concurrent reads) shows performance consistent with the systems default sftp.
Maybe converting the stat packet response to the standardized fs.FileInfo struct could allow for the use of FileMode.IsRegular()? I'd be happy to take a stab at making the change, but I'm just looking for some guidance or alternative suggestions first.
Thanks!
Hello, Im with the Go on z/OS dev team at IBM. We got a request to look into some performance issues with this package and zos. (#578
& #579)
When reading a file located on a linux machine to a zos machine, we see the poor performance reported by our users. The issue seems to be that despite enabling concurrent reads, checking the filemode forces sequential reading.
The fs.Mode returned from the remote machine is consistent with the linux format, but the zos
syscallconstants are used to mask and compare the value inisRegular(). These constants do not match the linux format and cause incorrect behaviour inisRegular()(And possibly any other functions that rely on the stat constants being consistent between machines)Bypassing the
!isRegular()check (forcing concurrent reads) shows performance consistent with the systems default sftp.Maybe converting the stat packet response to the standardized fs.FileInfo struct could allow for the use of FileMode.IsRegular()? I'd be happy to take a stab at making the change, but I'm just looking for some guidance or alternative suggestions first.
Thanks!