On 07/20/2011 11:08 PM, Jon Brisbin wrote:
> I'm seeing a ton of CPU usage in
> org.glassfish.grizzly.threadpool.FixedThreadPool$BasicWorker.getTask()
> in my profiling (34%).
This method can not slow down the server, it just waits for a new task
to execute.
If you don't run any load, you can find the server spending almost 100%
of time in that method.
WBR,
Alexey.
>
> I'm doing 200,000 PUTs of 1MB of data within an 8 second time span
> (200 simultaneous users).
>
> Here's a CSV of the profile results for this run:
>
> "Name","Time (ms)","Samples"
> "<All threads>","5931","100"
> "java.lang.Thread.run()","5901","80"
> "org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run()","5890","60"
> "org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork()","5890","60"
> "org.glassfish.grizzly.threadpool.FixedThreadPool$BasicWorker.getTask()","4292","34"
> "org.glassfish.grizzly.utils.LinkedTransferQueue.take()","4292","34"
> "org.glassfish.grizzly.utils.LinkedTransferQueue.xfer(Object, int,
> long)","4292","34"
> "org.glassfish.grizzly.utils.LinkedTransferQueue.awaitFulfill(LinkedTransferQueue$QNode,
> LinkedTransferQueue$QNode, Object, int, long)","4292","34"
> "java.util.concurrent.locks.LockSupport.park(Object)","4292","34"
> "org.glassfish.grizzly.nio.SelectorRunner.run()","736","20"
> "org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$1.run()","717","5"
> "org.glassfish.grizzly.threadpool.AbstractThreadPool.onTaskDequeued(Runnable)","145","1"
> "org.glassfish.grizzly.utils.DelayedExecutor$DelayedRunnable.run()","10","5"
> "java.lang.Object.wait(long)","10","5"
> "java.lang.ref.Finalizer$FinalizerThread.run()","22","5"
> "java.lang.ref.Reference$ReferenceHandler.run()","7","5"
> "com.mongodb.Mongo$DBCleanerThread.run()","0","5"
> "com.intellij.rt.execution.application.AppMain.main(String[])","0","5"
>
> The last two columns are time in ms and CPU%.
>
> This is limiting my tests as the CPU usage is slowing down my server.
>
> Thanks!
>
> Jon Brisbin
> http//jbrisbin.com
>
>