I have an HP Proliant DL385 G5p server which I use to host a personal Debian 9 fileserver via a VM on a hypervisor. This VM has its own 1Gb/s ethernet connection to a switch of the same speed, which my regular PC is also connected to. All three devices are capable of running at 1Gb/s.
I previously used a Debian install direct to the disk on the server with the rest of the network the same, and could acheive transfer speeds near enough to the 1Gb/s advertised, however, since I have started runnning the fileserver on a VM, transfer speeds are somewhere in the 5MB/s (40Mb/s) range, on a good day.
The software I am using to transfer my files from my PC (running Windows 10) is called "SFTP Net Drive", which allows me to veiw the contents of the fileserver from within Explorer (I didn't want to have to use a different software tool to connect to the server every time just because Windows doesn't support SFTP). When I was running the server directly on the disk without a hypervisor, I was using a program called "WinSCP", which allows multiple (up to 9) simultaneous transfers over the same network. This would saturate the 1000Mb/s connection and I would see no poor speeds except when transferring really small files (less than 1KB).
I have used IPerf to test the connection to the server from my PC (and vice-versa to be sure) and the connection is near enough what it should be, ~1000Mb/s. I have also tested disk write speeds on the server but thet also seem to be running fine (I think around 6000MB/s but I can't quite remember. Don't remember what tool I used to test with either). There are 4 72GB physical disks in RAID 5, which the hypervisor interprets as one logical drive. The hypervisor then assigns the VM another logical partition of this drive, which can presumably be split up again - by Debian in my case - using LVM. (Don't think you need all of that info but it might be useful).
Using the fact that the server perfomed fine before, I believe it's safe to assume that this is a software issue or misconfiguration, probably on the Windows side. One possible explanation for the slowness could be the fact that Windows seems to be able to transfer only one thing at a time using SFTP Drive? Any help in figuring this out and rectifying it will be much appreciated.
Edit: Okay, so I've found another strange thing that happens when I'm transferring files to the server using the software that I used to use, WinSCP. When transferring some music files to the server (~50MB each, roughly 300 of them) after all 9 simultaneous connections had been established, the transfer rate peaked at 110MB/s, where it stayed for about 20 seconds. It then promptly dropped back to 20-30MB/s and stayed there until the transfer was complete. This leads me to believe that there is some kind of buffer that, once saturated, slows down the transfer rate to keep up with the requests to wirte to disk? Not really sure if that makes any sense but it seems logical to me.