If your problem is log-write-related (as per David's suggestion), then this can easily be solved in newer nginx by enabling the buffering of the
access_log writes and using on-the-fly gzip compression (together with buffering), or, alternatively, using a filesystem like zfs that may do some of these things automatically without your involvement.
access_log /path/to/log.gz combined gzip flush=5m;
Alternatively, your issue may be related to the way that nginx caching works (specifically, the default of
proxy_buffering on; and such).
Nginx does caching through the filesystem, therefore, it might do various writes to disc (which may or may not show up as reads, since those reads that are following the writes, depending on the methodology of your experiments, would very likely be memory-served).
Depending on your resources, you might consider setting up a memory-based disc as the directory to buffer your stuff. Else, you might also consider setting up varnish in front of your nginx — varnish does all the caching through the virtual memory subsystem.