Search code examples
windowsperformanceioldcifs

increasing write speed through CIFS when compiling/linking gcc/ld on windows


Our application takes ages to build when objects & target DLL are located on a networked drive: I have focused on the DLL creation since it takes 400 seconds to complete.

On a local drive, the DLL creation is around 60 seconds. Both drives share the same characteristics, our network is very fast.

I have tried to copy/create big files using the networked drive as a target and got good results when the write size was big enough. So I investigated with ProcessMonitor, and found that the ld is using a lot of WriteFile calls with 2 bytes, and biggest write-at-once size was around 200.

So I'm guessing that CIFS reacts very poorly to a series of unbuffered small writes, whereas the local drive does not care.

I could ask my gcc-compiler based vendor to convert his write calls by some buffered fwrite, but isn't there something that we're missing on the CIFS write cache parameter?

I mean: if there was such a cache on the CIFS side, bigger blocks would be written and performance would be close to a file copy/create. Is there some way to print cache size/change it? (sorry for the noob CIFS question, but I have googled for stuff like "SMB CIFS windows write cache size" and only found stuff for Linux.


Solution

  • If possible, use the iSCSI you will have Best Quality Performance after you must know that the CIFS is not for compilation or other small files.

    The solutions on local disks or SAN are more efficient

    dok