You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We have 17 threadpools today, and while all of them are configured individually to create a number of threads that is reasonable for the number of cores, summing up all created threads gives a high number. For instance a machine with 4 cores starts between 30 (only considering fixed threadpools) and 59 threads (considering fixed + scaling threadpools), and a machine with 32 cores starts between 215 and 373 threads. And this doesn't account for threads that are created by Lucene itself.
These numbers look too high to me, and while we could decrease the size of individual thread pools, this would have the downside that eg. only issuing get requests could not make use of a whole machine's resources. So maybe we could look at better sharing threadpools across tasks? For instance I was thinking we could merge the following threadpools:
Because we have thread pools for almost everything, even if each of them has a
reasonable size, the total number of threads that elasticsearch creates is
high-ish. For instance, with 8 processors, elasticsearch creates between 58
(only fixed thread pools) and 111 threads (including fixed and scaling pools).
With this change, the numbers go down to 33/59.
Ideally the SEARCH and GET thread pools should be the same, but I couldn't do
it now given that some SEARCH requests block on GET requests in order to
retrieve indexed scripts or geo shapes. So they are still separate pools for
now.
However, the INDEX, BULK, REFRESH and FLUSH thread pools have been merged into
a single WRITE thread pool, the SEARCH, PERCOLATE and SUGGEST have been merged
into a single READ thread pool and FETCH_SHARD_STARTED and FETCH_SHARD_STORE
have been merged into FETCH_SHARD. Also the WARMER pool has been removed: it
was useful to parallelize fielddata loading but now that we have doc values by
default, we can make things simpler by just loading them in the current thread.
Closeelastic#12666
We have 17 threadpools today, and while all of them are configured individually to create a number of threads that is reasonable for the number of cores, summing up all created threads gives a high number. For instance a machine with 4 cores starts between 30 (only considering fixed threadpools) and 59 threads (considering fixed + scaling threadpools), and a machine with 32 cores starts between 215 and 373 threads. And this doesn't account for threads that are created by Lucene itself.
These numbers look too high to me, and while we could decrease the size of individual thread pools, this would have the downside that eg. only issuing get requests could not make use of a whole machine's resources. So maybe we could look at better sharing threadpools across tasks? For instance I was thinking we could merge the following threadpools:
The text was updated successfully, but these errors were encountered: