I'm relatively new to JPPF and really enjoying the scalability is is bringing to my project.
I am running my nodes on the Rackspace Cloud and debating between server flavors with variable virtual cores (I plan on benchmarking to see which one is most cost effective). One problem I'm encountering is how to best deconflict the multiple possible ways to make use of a multi-core CPU:
- I can run multiple nodes on the machine
- I can configure the JPPF node using the jppf.processing.threads directive to use multiple threads
- Internally, my code takes advantage of multi-threading in multiple places where asynchronous calculations are permitted, using java.util.concurrent.ExecutorService, although there are several points where the separate processes need to synchronize.
Presently on a 4-core machine I'm playing with I have a single node with 5 concurrent tasks, each of them using the internal multithreading... I'm worried that I'm putting too much workload on the thread manager and actually slowing things down with all the different things fighting for the same CPU.
Any advice/experience on whether I should try to reduce to 1 thread on 1 node (using my own code for concurrency), use multiple threads on the node but constrain my own code to single threaded, or a mix of both?