diff --git a/app/vmselect/netstorage/netstorage.go b/app/vmselect/netstorage/netstorage.go index 0bcbd546a5..a024f59b8e 100644 --- a/app/vmselect/netstorage/netstorage.go +++ b/app/vmselect/netstorage/netstorage.go @@ -786,6 +786,14 @@ func ProcessSearchQuery(at *auth.Token, sq *storage.SearchQuery, fetchData bool, pts.addrs = addrs } + // Sort rss.packedTimeseries by the first addr offset in order + // to reduce the number of disk seeks during unpacking in RunParallel. + // In this case tmpBlocksFile must be read almost sequentially. + sort.Slice(rss.packedTimeseries, func(i, j int) bool { + pts := rss.packedTimeseries + return pts[i].addrs[0].offset < pts[j].addrs[0].offset + }) + return &rss, isPartialResult, nil }