Hi, My app writes 100K rows per seconds to a C* cluster (including 30 nodes
and using version 3.11.2). There are 20 threads, each writing 10K (list size in
below code is 100K) statements using async API: for (Statement s:list) {
ResultSetFuture future = session.executeAsync(s); tasks.add(future); if
(tasks.size() < 10000) continue; for (ResultSetFuture t:tasks)
t.getUninterruptibly(10000, TimeUnit.MILLISECONDS); tasks.clear(); } if
(tasks.size() != 0) { for (ResultSetFuture t:tasks)
t.getUninterruptibly(10000, TimeUnit.MILLISECONDS); } CPU usage for my loader
application is > 80% on a Xeon 20 core, using sample on jvisualvm find out
these at top by percentage of all CPU time:
io.netty.channel.epoll.Native.epollWait0 40%
shade.com.datastax.spark.connecto.google.common.util.concurrent.AbstractFuture$Sync.get()
10% com.datastax.driver.core.RequestHanlder.init 10% It seems like that, it
checks for finishing all tasks every some nano seconds. Is there any workaround
to decrease CPU usage of my application, which currently is the bottleneck?
Sent using Zoho Mail