Thanks for the useful information Maxim!
We ended up using strace to monitor the system calls and it looks like that with our current setup (i.e. default buffer size) the record length is 65536 bytes.
read(17, "\355\247=^\256\36\361\235~\356z"..., 65536) = 65536
write(18, "\355\247=^\256\36\361\235~\356z"..., 65536) = 65536
At the moment we are setting use_temp_path=on using tmpfs as our temporary location which triggers a failed rename system call and then the above read/write calls happen.
rename("/var/lib/nginx/tmp/proxy/1/00/0000001", "/dev/shm/cache/a/f8/0c725bfea12c2f361c37") = -1 EXDEV (Invalid cross-device link)
Do you think that having use_temp_path=on in combination with tmpfs has any advantages or we should set use_temp_path=off as suggested in the docs?
Regards,
Nik