[ https://issues.apache.org/jira/browse/CASSANDRA-14436?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16569011#comment-16569011 ]
ASF GitHub Bot commented on CASSANDRA-14436: -------------------------------------------- Github user dineshjoshi commented on a diff in the pull request: https://github.com/apache/cassandra/pull/244#discussion_r207697637 --- Diff: src/java/org/apache/cassandra/tools/nodetool/ProfileLoad.java --- @@ -0,0 +1,178 @@ +package org.apache.cassandra.tools.nodetool; + +import static com.google.common.base.Preconditions.checkArgument; +import static org.apache.commons.lang3.StringUtils.join; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; + +import javax.management.openmbean.CompositeData; +import javax.management.openmbean.OpenDataException; + +import org.apache.cassandra.metrics.Sampler.SamplerType; +import org.apache.cassandra.tools.NodeProbe; +import org.apache.cassandra.tools.NodeTool.NodeToolCmd; +import org.apache.cassandra.tools.nodetool.formatter.TableBuilder; +import org.apache.cassandra.utils.Pair; + +import com.google.common.collect.Lists; + +import io.airlift.airline.Arguments; +import io.airlift.airline.Command; +import io.airlift.airline.Option; + +@Command(name = "profileload", description = "Low footprint profiling of activity for a period of time") +public class ProfileLoad extends NodeToolCmd +{ + @Arguments(usage = "<keyspace> <cfname> <duration>", description = "The keyspace, column family name, and duration in milliseconds") + private List<String> args = new ArrayList<>(); + + @Option(name = "-s", description = "Capacity of the sampler, higher for more accuracy (Default: 256)") + private int capacity = 256; + + @Option(name = "-k", description = "Number of the top samples to list (Default: 10)") + private int topCount = 10; + + @Option(name = "-a", description = "Comma separated list of samplers to use (Default: all)") + private String samplers = join(SamplerType.values(), ','); + + @Override + public void execute(NodeProbe probe) + { + checkArgument(args.size() == 3 || args.size() == 1 || args.size() == 0, "Invalid arguments, either [keyspace table duration] or [duration] or no args"); + checkArgument(topCount < capacity, "TopK count (-k) option must be smaller then the summary capacity (-s)"); + String keyspace = null; + String table = null; + Integer duration = 10000; --- End diff -- What is the unit for `duration`? It might be better to just use `java.time.Duration`? > Add sampler for query time and expose with nodetool > --------------------------------------------------- > > Key: CASSANDRA-14436 > URL: https://issues.apache.org/jira/browse/CASSANDRA-14436 > Project: Cassandra > Issue Type: Improvement > Reporter: Chris Lohfink > Assignee: Chris Lohfink > Priority: Major > > Create a new {{nodetool profileload}} that functions just like toppartitions > but with more data, returning the slowest local reads and writes on the host > during a given duration and highest frequency touched partitions (same as > {{nodetool toppartitions}}). Refactor included to extend use of the sampler > for uses outside of top frequency (max instead of total sample values). > Future work to this is to include top cpu and allocations by query and > possibly tasks/cpu/allocations by stage during time window. -- This message was sent by Atlassian JIRA (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org