CreateFile() taking a long time for small files on disk (sometimes)
-
Dienstag, 19. März 2013 17:09
Ever since upgrading a server of mine from Server 2008 R2 to Server 2012, I've been having trouble with shared files not serving quickly at times. I've traced the problem all the way back to the local machine. CreateFile() can take up to a minute to return for small (few KB) files on disk, but it doesn't happen all the time. It happens more when the file is being requested by a lot of clients via network shares.
Here is an example. The top shows an example of a long request while the bottom shows a normal request.

I'm curious if anyone might know the cause for this sort of issue. I would think read cache alone would prevent this sort of thing from happening, and even if it had to come from disk each time I don't understand how it could take so long. The disks are basically unloaded during these times.
This problem only seems to occur for files being served over the network. If I start randomly loading a copy of these files with even 128 different threads, I don't get any sort of weird contention issues if the file is local and not shared. Maximum service times peak at 0.009s. SMB must be blocking the files somehow? As soon as the file is shared across the network, I start having the weird blocking issue even for local file requests on the server when the requests are to the local path of those shared files.
- Bearbeitet AMD Avenger Dienstag, 19. März 2013 18:00
Alle Antworten
-
Dienstag, 19. März 2013 19:27Do you have antivirus (or some kind of a malware) running on your machine?
-
Dienstag, 19. März 2013 20:57That is a good question, but in this case no, the file server in question is not running third party security software. It's just a vanilla install of Server 2012 with default settings outside of StrictNameChecking being disabled. A number of CNAMEs point to the file server.
-
Donnerstag, 21. März 2013 15:48SMB seems to have some role to play in this. I disabled 2.0/3.0 for one day and didn't have any issues. I know SMB 2.0 as implemented by 2008 R2 didn't cause this problem, so I'm not really sure what to point at specifically. 2.0 and 3.0 are handled by the same DLL, but I don't know if 2012 made tweaks to how 2.0 is implemented as well. I have to suspect it may have. Leaving 2.0 disabled isn't really a permanent solution of course.
- Bearbeitet AMD Avenger Donnerstag, 21. März 2013 15:49

