Performance and scalability: Load Distribution Problem - Multiple CPU

  1. Hi, We are running a heavy duty application on a 2-CPU Quad Core Xeon X5460 Processor with 16 GB RAM running on CentOS. The application is a multi-threaded Java-5 based application running on top of JBoss-4.0.4GA. We have a framework responsible for processing data in the range of 60-80 GB per day. The processing of data consists of performing a specific type of activity, which involves both CPU and I/O activities. Now, to attain parallelism and better utilization of the number of cores available, the activity of data processing is done by distributing the data uniformly across a number of threads (in the range of 8 - 24) and making them do the same thing (data processing - involving CPU and I/O) in parallel. Again, to cater to effective functionality, the application needs to cache a certain amount of data(in the range of 5 GB - total). Individual threads, as mentioned above, use their own instance of the Cache. For our caching needs, we have used EHCache-1.5. The problem we are facing is that at any given point of time, of the avaiable 8 cores only 1 of them is being used, instead of the load being distributed uniformly across all the cores. Using linux sar command to monitor the system, we have found that only one core is being used in the range of 97-99 percent, while all the other remaining cores are 99-100 percent idle. We would really appreciate any effort that enlightens us regarding the afore-mentioned problem.
  2. Dear Prithanka, As it happens I have just made a blog post on this subject on Java-monitor. The text is a bit more elaborate, but it boils down to this: take thread dumps, then examine them and answer the following question: what is keeping my threads from reaching the cores they so desperately desire to run on? http://java-monitor.com/forum/showthread.php?t=317 Let me know if this helps. Kees Jan