VictoriaMetrics/app/vmselect
Aliaksandr Valialkin 98931449c1
app/vmselect/netstorage: reduce tail latency during query processing
Previously the selected time series were split evenly among available CPU cores
for further processing - e.g unpacking the data and applying the given rollup
function to the unpacked data.
Some time series could be processed slower than others.
This could result in uneven work distribution among available CPU cores,
e.g. some CPU cores could complete their work sooner than others.
This could slow down query execution.

The new algorithm allows stealing time series to process from other CPU cores
when all the local work is done. This should reduce the maximum time
needed for query execution (aka tail latency).

The new algorithm should also scale better on systems with many CPU cores,
since every CPU processes locally assigned time series without inter-CPU communications.

The inter-CPU communications are used only when all the local work is finished
and the pending work from other CPUs needs to be stealed.
2023-01-10 13:42:26 -08:00
..
bufferedwriter app/vmselect: do not export NaN values for stale metrics at /federate endpoint 2022-10-01 19:48:21 +03:00
clusternative lib/vmselectapi: limit the number of concurrently executed requests 2023-01-06 18:39:46 -08:00
deployment Rootless docker images by default (#358) 2020-03-27 21:18:32 +02:00
graphite all: use metricsql.CompileRegexp instead of regexp.Compile for compiling regexps used in graphite queries 2023-01-09 21:45:34 -08:00
graphiteql Graphite vmalert wip (#112) 2021-02-01 15:28:30 +02:00
multiarch app: fix make publish-* after ed93330e66 2022-07-14 11:01:34 +03:00
netstorage app/vmselect/netstorage: reduce tail latency during query processing 2023-01-10 13:42:26 -08:00
prometheus app/vmselect/prometheus: no need manually call queryDuration.UpdateDuration (#3564) 2022-12-29 10:41:51 -08:00
promql app/vmselect/promql: eliminate memory allocation when sorting values inside float64s 2023-01-09 23:06:57 -08:00
querystats app/vmselect: do not track queries with less than 1ms execution time at /api/v1/status/top_queries 2021-07-15 16:53:35 +03:00
searchutils app/vmselect/searchutils: accept partial RFC3339 values at time, start and end query args 2022-12-28 19:46:21 -08:00
static/css app/vmselect: properly serve static css for /select/.../metric-relabel-debug page 2022-12-10 03:04:43 -08:00
vmui vmui: improve Explore metrics (#3598) 2023-01-05 02:24:05 -08:00
main.go all: small improvements in error messages and command-line flag descriptions related to concurrency limiters 2023-01-07 00:12:24 -08:00
Makefile app/{vminsert,vmselect,vmstorage}: add package-{vminsert,vmselect,vmstorage}-{goarch} Makefile rules for building arch-specific docker images 2022-10-07 20:17:01 +03:00
README.md app/vmselect: expose vmui at /vmselect/<accountID>/vmui/ instead of /vmselect/<accountID>/prometheus/vmui/ 2021-07-10 12:32:21 +03:00

vmselect performs the following tasks:

  • Splits incoming selects to tasks for vmstorage nodes and issues these tasks to all the vmstorage nodes in the cluster.

  • Merges responses from all the vmstorage nodes and returns a single response.

The vmui directory contains static contents built from app/vmui package with make vmui-update command. The vmui page is available at http://<vmselect>:8481/select/<accountID>/vmui/.