[ovirt-devel] Thread pools and ManageExecutorService

Eldad Marciano emarcian at redhat.com
Mon Jan 16 16:55:53 UTC 2017


+1
Sounds very effective. And this is one of strongest points of jboss.

Im very curious to see the engine performance of it.

Regards,
-Eldad

On 16 בינו׳ 2017, at 11:46, Roy Golan <rgolan at redhat.com> wrote:

Java EE 7 included ManageExecutorService in its spec. Using Wildfly (as
certified EE 7 container) we can use it to replace our own ThreadPoolUtil
implementation and (possibly) Quarz usage.

Managed executor service is a thread pool resource, manage by the container
and can be controlled via JMX or the startup ovirt-egine.xml.in facility.
This means that it could be tweaked at runtime as well. The service has
configured thread factory and queue as well, all described by the xml

In the engine we are using mutli pools, with little to no capabilities of
tweaking them
- ThreadPoolUtil - our general threading facade
- SchedulerThreadPool - the pool we create to pass to quarz
- HostUpdatesCheckerService.java - internal pool
- CommandExecutor - coco's pool

EE gave us a standard way to handle threads, with runtime configuration and
ability to @inject it into the code, this means once again less code with
using something the platform already supplies with real tuninig abilities.
I know #infra has an item quarts, this should be considered as well.

Following this thread, if there is no suitable bug already, I'll open one
for this.

Some code snippets:

@Resource
private ManagedExecutorService mes;

...  Future f = mes.submit(() -> doThis())


The configuration in ovirt-engine.xml.in (already there today!):

<managed-executor-services>
  <managed-executor-service
  name="default"
  jndi-name="java:jboss/ee/concurrency/executor/default"
  context-service="default"
  thread-factory="default"
  hung-task-threshold="60000"
  core-threads="5"
  max-threads="25"
  keepalive-time="5000"
  queue-length="1000000"
  reject-policy="RETRY_ABORT" />
</managed-executor-services>

Please head here for wildfly docs [1] and here [2] to see a simple example
(from one of the members of the EG of EE, recommended blog in general)

[1]
https://docs.jboss.org/author/display/WFLY8/EE+Concurrency+Utilities+Configuration
[2]
http://www.adam-bien.com/roller/abien/entry/injecting_an_executorservice_with_java



_______________________________________________
Devel mailing list
Devel at ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/devel/attachments/20170116/a63b863e/attachment-0001.html>


More information about the Devel mailing list