4 Replies Latest reply on Dec 11, 2009 4:27 AM by chtimi2

    JBC spends 90% of its time in TPE$Worker.run

      I'm benchmarking JBC writes with our application POJOs (80% update, 10% create, 10% delete).
      So far it is too slow for our requirements, but i haven't spent a lot of time tuning it yet.

      The topology of the bench is:
      -there are two nodes, on a local network
      -i write to a node A (always the same), and writes are replicated to the other node B.

      I profiled A with Visula VM, and 90% of the time is spent in

      java.util.concurrent.ThreadPoolExecutor$Worker.run
      .
      VVM also says that this is called by threads like "OOB-something", and that all the time is spent in the "self-time" of the Worker.run method.

      What do these symptoms mean and how can i speed up my writes?

        • 1. Re: JBC spends 90% of its time in TPE$Worker.run

          I don't get it: replication is asynchronous (async tag), but when i remove replication (only launching the A node), my ManyWritesTest completes in half the time!
          Why does replication slow down the writes, since it is async?

          • 2. Re: JBC spends 90% of its time in TPE$Worker.run
            manik

            Marshalling/serialization... ?

            • 3. Re: JBC spends 90% of its time in TPE$Worker.run

              Hi Manik
              yes it might be serialization. But still with the async tag, this serialization is supposed to happen asynchronously after the commit right? So by definition it shouldn't increase latency.

              I have reduced the latency a lot (more than half) by:
              -using invalidation instead of replication
              -setting a Heap size that is a bit more than what is really used, instead of the big heap i used before

              But it is still a bit slow, and CPU usage (another of our requirements) is at 50% instead of 10%. Isn't a 50% CPU load too much for this use case? (A and B are quad-core 2.33GHz 4G RAM, linked by a 100Mega switch (yes that is slow but this too is a requirement))

              At any rate from what i saw in VisualVM i suspect that the threads that i mentioned are what makes CPU usage so high.

              Anyway any clue? What can i do to investigate further?

              • 4. Re: JBC spends 90% of its time in TPE$Worker.run

                Are there GC options that are specially adapted to this use case?