This is a continuation of a discussion in another thread. Link
I got myself caught up a bit on XP/Vista and SMB1/SMB2 by reading these threads (great stuff):
How To Build a Really Fast NAS - Part 6: The Vista (SP1) Difference
Building High Performance NAS / HTPC
00Roush, based on your quote above and what I read in the links, if I set the request size to 128K for a SMB1.0 transfer the requests will most likely be broken down into multiple 32K or 64K requests. So I won't actually get true 128K blocks which might help with my apparent HDD performance problem. I think I would only benefit from changing the request size if I had a Vista SP1 client (per one of your posts in the linked threads) as it's kernel can handle the larger block sizes. Am I getting this right or have I got mixed up?
My head is spinning and I think it might be from beating my head against XP32. I think I'll go back to basics and try and find another client machine with a fast hdd setup and Vista SP1.
For your information, here are the results I got with test2.exe (a modest improvement with a 128K request size but nowhere near the expected 70-75MB/s indicated in the ATTO benchmark):
[Conclusion]
If my understanding of how files are transferred in my setup is correct, I definitely think I'm up against two interconnected issues:
1. My HDD and/or I/O controller are not happy with writing buffered 32K/64K chunks.
2. Using an XP client in a SMB1.0 transfer is going to limit you to 32K/64K chunks.
Thanks for all your help 00Roush, and congratulations on your program! I think it definitely improves "push" performance and will probably improve "pull" performance on other systems.
Any thoughts on the above?
Moezilla
[[[EDIT]: Based on this post Link I enabled the LargeSystemCache registry setting and these are the results:
Seems that setting is important and in conjunction with 00Roush's program I can now get speeds very close to the maximum the drive can produce.
]]
00Roush said:Basically the reason I set the request size to 32k on network drives is because it has given me the best performance. Vista also uses this size when copying files from SMB1.0 computers. SMB1.0 is limited to a max of 60k reads across the network but if I use that size reads and writes will be odd sized. I believe this odd size causes performance to suffer due to the read actually being broken up into 32k, 16k, 8k or 4k reads by the system. I can explain more in depth if you would like. Also currently all reads are set to unbuffered no matter the drive type. Writes are set to be buffered except when transferring between two local disks. I have tried to use unbuffered writes when writing to a local drive and reading from a network drive but performance has always been worse. Still working on it. (and still learning) Anyway... feel free to try any sizes you want.
I got myself caught up a bit on XP/Vista and SMB1/SMB2 by reading these threads (great stuff):
How To Build a Really Fast NAS - Part 6: The Vista (SP1) Difference
Building High Performance NAS / HTPC
00Roush, based on your quote above and what I read in the links, if I set the request size to 128K for a SMB1.0 transfer the requests will most likely be broken down into multiple 32K or 64K requests. So I won't actually get true 128K blocks which might help with my apparent HDD performance problem. I think I would only benefit from changing the request size if I had a Vista SP1 client (per one of your posts in the linked threads) as it's kernel can handle the larger block sizes. Am I getting this right or have I got mixed up?
My head is spinning and I think it might be from beating my head against XP32. I think I'll go back to basics and try and find another client machine with a fast hdd setup and Vista SP1.
For your information, here are the results I got with test2.exe (a modest improvement with a 128K request size but nowhere near the expected 70-75MB/s indicated in the ATTO benchmark):
[Conclusion]
If my understanding of how files are transferred in my setup is correct, I definitely think I'm up against two interconnected issues:
1. My HDD and/or I/O controller are not happy with writing buffered 32K/64K chunks.
2. Using an XP client in a SMB1.0 transfer is going to limit you to 32K/64K chunks.
Thanks for all your help 00Roush, and congratulations on your program! I think it definitely improves "push" performance and will probably improve "pull" performance on other systems.
Any thoughts on the above?
Moezilla
[[[EDIT]: Based on this post Link I enabled the LargeSystemCache registry setting and these are the results:
Seems that setting is important and in conjunction with 00Roush's program I can now get speeds very close to the maximum the drive can produce.
]]
Last edited: