Use the attached multidump.sh script to take thread dumps and generate top -H output at regular intervals while your nodes are experiencing high CPU utilization. The multidump.sh script must be run as the same user that owns the DSE java process; otherwise, the jstack command will not work. The usage is:
$ multidump.sh pid interval count
NOTE: I would like to reiterate that you must run this as the same user that owns the dse process. For example, if the process owner is cassandra, you can run the script using the following syntax:
$ sudo -u cassandra multidump.sh interval count
If DSE is running as a service, use the pid from /var/run/dse.pid. If DSE is started from the command line, use 'ps -ef | grep java' to determine the pid. The recommended parameters are an interval of 5 seconds and a count of 60, which would run for a total of 5 minutes. This will generate two files, jstack.out and top.out, which you should send to us.
If you have difficulties using the multidump script, you can use the multidump-alt script instead. The usage is the same, but it uses kill -3 to take the thread dumps instead of jstack. This will not kill the process; the JVM interprets the -3 signal as a request to print a thread dump on stdout. When DSE is run as a service, stdout is redirected to /var/log/cassandra/output.log file, so send us that as well as top.out. If DSE is run as a standalone process, find out where its output is redirected and capture the thread dumps from there.