Hello Ignite-Community!
as some of you might have read, I'm using Ignite as local Off-heap caches
only.
I limited the discovery to localhost and therefore I don't need threads
which are just active to handle e.g. grid topics.
I would like to reduce the amount of threads to an minimum.
The Off-heap cache-access (read/write) should be fast, but everything else
isn't needed.
It might not matter a lot in an average case to have some additional
threads, however, the server as well as the cache are under heavy load and
therefore every useless context-switch should be avoided.
I'm currently experimenting with the following config:
IgniteConfiguration configuration = new IgniteConfiguration()
.setDiscoverySpi(localNodeDiscovery) //limit to localhost
.setDaemon(false);
TcpCommunicationSpi communicationSpi = new TcpCommunicationSpi();
communicationSpi.setSelectorsCount(1);
configuration.setCommunicationSpi(communicationSpi);
ConnectorConfiguration connectorConfiguration = new
ConnectorConfiguration();
connectorConfiguration.setSelectorCount(1);
configuration.setConnectorConfiguration(connectorConfiguration);
configuration.setClockSyncFrequency(Integer.MAX_VALUE);
configuration.setUtilityCachePoolSize(1);
configuration.setManagementThreadPoolSize(1);
configuration.setPublicThreadPoolSize(1);
configuration.setRebalanceThreadPoolSize(1);
configuration.setSystemThreadPoolSize(4);
and CacheConfiguration.setEagerTtl(false) for caches which don't need a TTL
for its entries.
1)
Do you see any issue with this config that impacts the described use-case?
2)
Are there other threads I can get rid of as well?
(currently there are still ~20 threads from Ignite on an average
developer-machine.)
I'm e.g. wondering about
a) disco-event-worker
b) exchange-worker
c) grid-time-coordinator
d) grid-time-server-reader
e) ignite-clock
f) nio-acceptor
g) pub-*
h) session-timeout-worker
i) tcp-disco-msg-worker
j) tcp-disco-srvr
Any hint is appreciated,
Peter