Gather-arrange-scatter: Node-level request reordering for parallel file systems on multi-core clusters