I have attached an vi which demonstrates the problem. It reads data chunks with 1/2 buffer size from files and pass them to the DIO Write. The files I use have a typical size of 500 MB, but you can take any file of reasonable size for demonstration. Just replace the filepath repetitively into the "mulitfilename.txt" file I have also attached. In my real application I move through a list of different pattern files.
What you will see is, that upon reaching 4.3 GB of read data, the number of generated bytes grows faster than the number of bytes read and the transfer rate drops. When you let the file run, you will find the the transfer rate will go up again when the number of generated bytes reaches 8.6 GB, will drop again at 12.9 GB and so on.