[jira] [Updated] (CASSANDRA-5360) Disable Thread Biased Locking in the JVM

2014-04-29 Thread Ryan McGuire (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-5360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ryan McGuire updated CASSANDRA-5360:


Labels: qa-resolved  (was: )

 Disable Thread Biased Locking in the JVM
 

 Key: CASSANDRA-5360
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5360
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Affects Versions: 1.0.12, 1.1.10, 1.2.3
Reporter: amorton
Assignee: amorton
Priority: Minor
  Labels: qa-resolved
 Attachments: 5360.txt, cassandra-biased-locking-tests.txt


 Biased Locking 
 (https://blogs.oracle.com/dave/entry/biased_locking_in_hotspot) is enabled by 
 default in JVM 6 and is designed to optimise applications where a locks are 
 normally used by one thread. This is the opposite of how the worker pools 
 cassandra work. Disabling Biased Locking (-XX:-UseBiasedLocking) has yielded 
 improvements of 5% to 10% in throughput and reduced JVM pauses. 
 Details follow.
 h1. Application Pausing 
 The following was observed on a 16 core EC2 SSD instance...
 {noformat}
 Heap after GC invocations=32 (full 0):
  par new generation   total 1024000K, used 59799K [0x0006fae0, 
 0x000745e0, 0x000745e0)
   eden space 819200K,   0% used [0x0006fae0, 0x0006fae0, 
 0x00072ce0)
   from space 204800K,  29% used [0x00072ce0, 0x000730865ff8, 
 0x00073960)
   to   space 204800K,   0% used [0x00073960, 0x00073960, 
 0x000745e0)
  concurrent mark-sweep generation total 2965504K, used 416618K 
 [0x000745e0, 0x0007fae0, 0x0007fae0)
  concurrent-mark-sweep perm gen total 22592K, used 22578K 
 [0x0007fae0, 0x0007fc41, 0x0008)
 }
 Total time for which application threads were stopped: 0.0175680 seconds
 Total time for which application threads were stopped: 0.0008680 seconds
 Total time for which application threads were stopped: 0.0004030 seconds
 Total time for which application threads were stopped: 0.0006460 seconds
 Total time for which application threads were stopped: 0.0009210 seconds
 Total time for which application threads were stopped: 0.0007250 seconds
 Total time for which application threads were stopped: 0.0016340 seconds
 Total time for which application threads were stopped: 0.0005570 seconds
 Total time for which application threads were stopped: 0.0007270 seconds
 Total time for which application threads were stopped: 0.0010170 seconds
 Total time for which application threads were stopped: 0.0006240 seconds
 Total time for which application threads were stopped: 0.0013250 seconds
 {Heap before GC invocations=32 (full 0):
  par new generation   total 1024000K, used 878999K [0x0006fae0, 
 0x000745e0, 0x000745e0)
   eden space 819200K, 100% used [0x0006fae0, 0x00072ce0, 
 0x00072ce0)
   from space 204800K,  29% used [0x00072ce0, 0x000730865ff8, 
 0x00073960)
   to   space 204800K,   0% used [0x00073960, 0x00073960, 
 0x000745e0)
  concurrent mark-sweep generation total 2965504K, used 416618K 
 [0x000745e0, 0x0007fae0, 0x0007fae0)
  concurrent-mark-sweep perm gen total 22784K, used 22591K 
 [0x0007fae0, 0x0007fc44, 0x0008)
 2013-03-15T21:21:17.015+: 1038.849: [GC Before GC:
 Statistics for BinaryTreeDictionary:
 {noformat}
 The extra were stopped lines were annoying me, and the JVM Performance book 
 offered this explanation:
 bq. If there happens to be additional safepoints between garbage collections, 
 the output will show Application time: and Total time for which application 
 threads were stopped: messages for each safepoint that occurs between garbage 
 collections.
 h1. Safepoints 
 Safepoints are times when the JVM pauses all application threads to run a 
 single VM thread that needs to know the heap is not going to change. GC is 
 one cause, others are (from Java Performance):
 bq. There many other safepoints, such as biased locking revocation, thread 
 stack dumps, thread suspension or stopping (i.e., java.lang.Thread.stop() 
 method), and numerous inspection and modification operations requested 
 through JVMTI.
 On my MBP (corei7, 16Gb, ssd) I ran cassandra with the stress test with 
 -XX:-PrintGCApplicationConcurrentTime and -XX:-PrintSafepointStatistics which 
 outputs information when the JVM exits. The biased-locking-tests.txt 
 attachment shows that stress took  1m 23 seconds to complete and the 
 safepoint statistics show most of the pauses were to revoke biased locks. 
 A second test was run (both with a clean data dir) with biased locking 
 disabled that took 1 minute 18 seconds. The  safepoint stats did not 

[jira] [Updated] (CASSANDRA-5360) Disable Thread Biased Locking in the JVM

2013-04-04 Thread Ryan McGuire (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-5360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ryan McGuire updated CASSANDRA-5360:


Tester: enigmacurry

 Disable Thread Biased Locking in the JVM
 

 Key: CASSANDRA-5360
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5360
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Affects Versions: 1.0.12, 1.1.10, 1.2.3
Reporter: amorton
Assignee: amorton
Priority: Minor
 Attachments: 5360.txt, cassandra-biased-locking-tests.txt


 Biased Locking 
 (https://blogs.oracle.com/dave/entry/biased_locking_in_hotspot) is enabled by 
 default in JVM 6 and is designed to optimise applications where a locks are 
 normally used by one thread. This is the opposite of how the worker pools 
 cassandra work. Disabling Biased Locking (-XX:-UseBiasedLocking) has yielded 
 improvements of 5% to 10% in throughput and reduced JVM pauses. 
 Details follow.
 h1. Application Pausing 
 The following was observed on a 16 core EC2 SSD instance...
 {noformat}
 Heap after GC invocations=32 (full 0):
  par new generation   total 1024000K, used 59799K [0x0006fae0, 
 0x000745e0, 0x000745e0)
   eden space 819200K,   0% used [0x0006fae0, 0x0006fae0, 
 0x00072ce0)
   from space 204800K,  29% used [0x00072ce0, 0x000730865ff8, 
 0x00073960)
   to   space 204800K,   0% used [0x00073960, 0x00073960, 
 0x000745e0)
  concurrent mark-sweep generation total 2965504K, used 416618K 
 [0x000745e0, 0x0007fae0, 0x0007fae0)
  concurrent-mark-sweep perm gen total 22592K, used 22578K 
 [0x0007fae0, 0x0007fc41, 0x0008)
 }
 Total time for which application threads were stopped: 0.0175680 seconds
 Total time for which application threads were stopped: 0.0008680 seconds
 Total time for which application threads were stopped: 0.0004030 seconds
 Total time for which application threads were stopped: 0.0006460 seconds
 Total time for which application threads were stopped: 0.0009210 seconds
 Total time for which application threads were stopped: 0.0007250 seconds
 Total time for which application threads were stopped: 0.0016340 seconds
 Total time for which application threads were stopped: 0.0005570 seconds
 Total time for which application threads were stopped: 0.0007270 seconds
 Total time for which application threads were stopped: 0.0010170 seconds
 Total time for which application threads were stopped: 0.0006240 seconds
 Total time for which application threads were stopped: 0.0013250 seconds
 {Heap before GC invocations=32 (full 0):
  par new generation   total 1024000K, used 878999K [0x0006fae0, 
 0x000745e0, 0x000745e0)
   eden space 819200K, 100% used [0x0006fae0, 0x00072ce0, 
 0x00072ce0)
   from space 204800K,  29% used [0x00072ce0, 0x000730865ff8, 
 0x00073960)
   to   space 204800K,   0% used [0x00073960, 0x00073960, 
 0x000745e0)
  concurrent mark-sweep generation total 2965504K, used 416618K 
 [0x000745e0, 0x0007fae0, 0x0007fae0)
  concurrent-mark-sweep perm gen total 22784K, used 22591K 
 [0x0007fae0, 0x0007fc44, 0x0008)
 2013-03-15T21:21:17.015+: 1038.849: [GC Before GC:
 Statistics for BinaryTreeDictionary:
 {noformat}
 The extra were stopped lines were annoying me, and the JVM Performance book 
 offered this explanation:
 bq. If there happens to be additional safepoints between garbage collections, 
 the output will show Application time: and Total time for which application 
 threads were stopped: messages for each safepoint that occurs between garbage 
 collections.
 h1. Safepoints 
 Safepoints are times when the JVM pauses all application threads to run a 
 single VM thread that needs to know the heap is not going to change. GC is 
 one cause, others are (from Java Performance):
 bq. There many other safepoints, such as biased locking revocation, thread 
 stack dumps, thread suspension or stopping (i.e., java.lang.Thread.stop() 
 method), and numerous inspection and modification operations requested 
 through JVMTI.
 On my MBP (corei7, 16Gb, ssd) I ran cassandra with the stress test with 
 -XX:-PrintGCApplicationConcurrentTime and -XX:-PrintSafepointStatistics which 
 outputs information when the JVM exits. The biased-locking-tests.txt 
 attachment shows that stress took  1m 23 seconds to complete and the 
 safepoint statistics show most of the pauses were to revoke biased locks. 
 A second test was run (both with a clean data dir) with biased locking 
 disabled that took 1 minute 18 seconds. The  safepoint stats did not include 
 any pauses to revoke biased locks 

[jira] [Updated] (CASSANDRA-5360) Disable Thread Biased Locking in the JVM

2013-03-19 Thread T Jake Luciani (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-5360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

T Jake Luciani updated CASSANDRA-5360:
--

Fix Version/s: 1.2.4

 Disable Thread Biased Locking in the JVM
 

 Key: CASSANDRA-5360
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5360
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Affects Versions: 1.0.12, 1.1.10, 1.2.3
Reporter: amorton
Assignee: amorton
Priority: Minor
 Fix For: 1.2.4

 Attachments: 5360.txt, cassandra-biased-locking-tests.txt


 Biased Locking 
 (https://blogs.oracle.com/dave/entry/biased_locking_in_hotspot) is enabled by 
 default in JVM 6 and is designed to optimise applications where a locks are 
 normally used by one thread. This is the opposite of how the worker pools 
 cassandra work. Disabling Biased Locking (-XX:-UseBiasedLocking) has yielded 
 improvements of 5% to 10% in throughput and reduced JVM pauses. 
 Details follow.
 h1. Application Pausing 
 The following was observed on a 16 core EC2 SSD instance...
 {noformat}
 Heap after GC invocations=32 (full 0):
  par new generation   total 1024000K, used 59799K [0x0006fae0, 
 0x000745e0, 0x000745e0)
   eden space 819200K,   0% used [0x0006fae0, 0x0006fae0, 
 0x00072ce0)
   from space 204800K,  29% used [0x00072ce0, 0x000730865ff8, 
 0x00073960)
   to   space 204800K,   0% used [0x00073960, 0x00073960, 
 0x000745e0)
  concurrent mark-sweep generation total 2965504K, used 416618K 
 [0x000745e0, 0x0007fae0, 0x0007fae0)
  concurrent-mark-sweep perm gen total 22592K, used 22578K 
 [0x0007fae0, 0x0007fc41, 0x0008)
 }
 Total time for which application threads were stopped: 0.0175680 seconds
 Total time for which application threads were stopped: 0.0008680 seconds
 Total time for which application threads were stopped: 0.0004030 seconds
 Total time for which application threads were stopped: 0.0006460 seconds
 Total time for which application threads were stopped: 0.0009210 seconds
 Total time for which application threads were stopped: 0.0007250 seconds
 Total time for which application threads were stopped: 0.0016340 seconds
 Total time for which application threads were stopped: 0.0005570 seconds
 Total time for which application threads were stopped: 0.0007270 seconds
 Total time for which application threads were stopped: 0.0010170 seconds
 Total time for which application threads were stopped: 0.0006240 seconds
 Total time for which application threads were stopped: 0.0013250 seconds
 {Heap before GC invocations=32 (full 0):
  par new generation   total 1024000K, used 878999K [0x0006fae0, 
 0x000745e0, 0x000745e0)
   eden space 819200K, 100% used [0x0006fae0, 0x00072ce0, 
 0x00072ce0)
   from space 204800K,  29% used [0x00072ce0, 0x000730865ff8, 
 0x00073960)
   to   space 204800K,   0% used [0x00073960, 0x00073960, 
 0x000745e0)
  concurrent mark-sweep generation total 2965504K, used 416618K 
 [0x000745e0, 0x0007fae0, 0x0007fae0)
  concurrent-mark-sweep perm gen total 22784K, used 22591K 
 [0x0007fae0, 0x0007fc44, 0x0008)
 2013-03-15T21:21:17.015+: 1038.849: [GC Before GC:
 Statistics for BinaryTreeDictionary:
 {noformat}
 The extra were stopped lines were annoying me, and the JVM Performance book 
 offered this explanation:
 bq. If there happens to be additional safepoints between garbage collections, 
 the output will show Application time: and Total time for which application 
 threads were stopped: messages for each safepoint that occurs between garbage 
 collections.
 h1. Safepoints 
 Safepoints are times when the JVM pauses all application threads to run a 
 single VM thread that needs to know the heap is not going to change. GC is 
 one cause, others are (from Java Performance):
 bq. There many other safepoints, such as biased locking revocation, thread 
 stack dumps, thread suspension or stopping (i.e., java.lang.Thread.stop() 
 method), and numerous inspection and modification operations requested 
 through JVMTI.
 On my MBP (corei7, 16Gb, ssd) I ran cassandra with the stress test with 
 -XX:-PrintGCApplicationConcurrentTime and -XX:-PrintSafepointStatistics which 
 outputs information when the JVM exits. The biased-locking-tests.txt 
 attachment shows that stress took  1m 23 seconds to complete and the 
 safepoint statistics show most of the pauses were to revoke biased locks. 
 A second test was run (both with a clean data dir) with biased locking 
 disabled that took 1 minute 18 seconds. The  safepoint stats did not include 
 

[jira] [Updated] (CASSANDRA-5360) Disable Thread Biased Locking in the JVM

2013-03-19 Thread T Jake Luciani (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-5360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

T Jake Luciani updated CASSANDRA-5360:
--

Fix Version/s: (was: 1.2.4)

 Disable Thread Biased Locking in the JVM
 

 Key: CASSANDRA-5360
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5360
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Affects Versions: 1.0.12, 1.1.10, 1.2.3
Reporter: amorton
Assignee: amorton
Priority: Minor
 Attachments: 5360.txt, cassandra-biased-locking-tests.txt


 Biased Locking 
 (https://blogs.oracle.com/dave/entry/biased_locking_in_hotspot) is enabled by 
 default in JVM 6 and is designed to optimise applications where a locks are 
 normally used by one thread. This is the opposite of how the worker pools 
 cassandra work. Disabling Biased Locking (-XX:-UseBiasedLocking) has yielded 
 improvements of 5% to 10% in throughput and reduced JVM pauses. 
 Details follow.
 h1. Application Pausing 
 The following was observed on a 16 core EC2 SSD instance...
 {noformat}
 Heap after GC invocations=32 (full 0):
  par new generation   total 1024000K, used 59799K [0x0006fae0, 
 0x000745e0, 0x000745e0)
   eden space 819200K,   0% used [0x0006fae0, 0x0006fae0, 
 0x00072ce0)
   from space 204800K,  29% used [0x00072ce0, 0x000730865ff8, 
 0x00073960)
   to   space 204800K,   0% used [0x00073960, 0x00073960, 
 0x000745e0)
  concurrent mark-sweep generation total 2965504K, used 416618K 
 [0x000745e0, 0x0007fae0, 0x0007fae0)
  concurrent-mark-sweep perm gen total 22592K, used 22578K 
 [0x0007fae0, 0x0007fc41, 0x0008)
 }
 Total time for which application threads were stopped: 0.0175680 seconds
 Total time for which application threads were stopped: 0.0008680 seconds
 Total time for which application threads were stopped: 0.0004030 seconds
 Total time for which application threads were stopped: 0.0006460 seconds
 Total time for which application threads were stopped: 0.0009210 seconds
 Total time for which application threads were stopped: 0.0007250 seconds
 Total time for which application threads were stopped: 0.0016340 seconds
 Total time for which application threads were stopped: 0.0005570 seconds
 Total time for which application threads were stopped: 0.0007270 seconds
 Total time for which application threads were stopped: 0.0010170 seconds
 Total time for which application threads were stopped: 0.0006240 seconds
 Total time for which application threads were stopped: 0.0013250 seconds
 {Heap before GC invocations=32 (full 0):
  par new generation   total 1024000K, used 878999K [0x0006fae0, 
 0x000745e0, 0x000745e0)
   eden space 819200K, 100% used [0x0006fae0, 0x00072ce0, 
 0x00072ce0)
   from space 204800K,  29% used [0x00072ce0, 0x000730865ff8, 
 0x00073960)
   to   space 204800K,   0% used [0x00073960, 0x00073960, 
 0x000745e0)
  concurrent mark-sweep generation total 2965504K, used 416618K 
 [0x000745e0, 0x0007fae0, 0x0007fae0)
  concurrent-mark-sweep perm gen total 22784K, used 22591K 
 [0x0007fae0, 0x0007fc44, 0x0008)
 2013-03-15T21:21:17.015+: 1038.849: [GC Before GC:
 Statistics for BinaryTreeDictionary:
 {noformat}
 The extra were stopped lines were annoying me, and the JVM Performance book 
 offered this explanation:
 bq. If there happens to be additional safepoints between garbage collections, 
 the output will show Application time: and Total time for which application 
 threads were stopped: messages for each safepoint that occurs between garbage 
 collections.
 h1. Safepoints 
 Safepoints are times when the JVM pauses all application threads to run a 
 single VM thread that needs to know the heap is not going to change. GC is 
 one cause, others are (from Java Performance):
 bq. There many other safepoints, such as biased locking revocation, thread 
 stack dumps, thread suspension or stopping (i.e., java.lang.Thread.stop() 
 method), and numerous inspection and modification operations requested 
 through JVMTI.
 On my MBP (corei7, 16Gb, ssd) I ran cassandra with the stress test with 
 -XX:-PrintGCApplicationConcurrentTime and -XX:-PrintSafepointStatistics which 
 outputs information when the JVM exits. The biased-locking-tests.txt 
 attachment shows that stress took  1m 23 seconds to complete and the 
 safepoint statistics show most of the pauses were to revoke biased locks. 
 A second test was run (both with a clean data dir) with biased locking 
 disabled that took 1 minute 18 seconds. The  safepoint stats did not include 
 any pauses to 

[jira] [Updated] (CASSANDRA-5360) Disable Thread Biased Locking in the JVM

2013-03-18 Thread amorton (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-5360?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

amorton updated CASSANDRA-5360:
---

Attachment: cassandra-biased-locking-tests.txt

 Disable Thread Biased Locking in the JVM
 

 Key: CASSANDRA-5360
 URL: https://issues.apache.org/jira/browse/CASSANDRA-5360
 Project: Cassandra
  Issue Type: Improvement
  Components: Core
Affects Versions: 1.0.12, 1.1.10, 1.2.3
Reporter: amorton
Priority: Minor
 Attachments: cassandra-biased-locking-tests.txt


 Biased Locking 
 (https://blogs.oracle.com/dave/entry/biased_locking_in_hotspot) is enabled by 
 default in JVM 6 and is designed to optimise applications where a locks are 
 normally used by one thread. This is the opposite of how the worker pools 
 cassandra work. Disabling Biased Locking (-XX:-UseBiasedLocking) has yielded 
 improvements of 5% to 10% in throughput and reduced JVM pauses. 
 Details follow.
 h1. Application Pausing 
 The following was observed on a 16 core EC2 SSD instance...
 {noformat}
 Heap after GC invocations=32 (full 0):
  par new generation   total 1024000K, used 59799K [0x0006fae0, 
 0x000745e0, 0x000745e0)
   eden space 819200K,   0% used [0x0006fae0, 0x0006fae0, 
 0x00072ce0)
   from space 204800K,  29% used [0x00072ce0, 0x000730865ff8, 
 0x00073960)
   to   space 204800K,   0% used [0x00073960, 0x00073960, 
 0x000745e0)
  concurrent mark-sweep generation total 2965504K, used 416618K 
 [0x000745e0, 0x0007fae0, 0x0007fae0)
  concurrent-mark-sweep perm gen total 22592K, used 22578K 
 [0x0007fae0, 0x0007fc41, 0x0008)
 }
 Total time for which application threads were stopped: 0.0175680 seconds
 Total time for which application threads were stopped: 0.0008680 seconds
 Total time for which application threads were stopped: 0.0004030 seconds
 Total time for which application threads were stopped: 0.0006460 seconds
 Total time for which application threads were stopped: 0.0009210 seconds
 Total time for which application threads were stopped: 0.0007250 seconds
 Total time for which application threads were stopped: 0.0016340 seconds
 Total time for which application threads were stopped: 0.0005570 seconds
 Total time for which application threads were stopped: 0.0007270 seconds
 Total time for which application threads were stopped: 0.0010170 seconds
 Total time for which application threads were stopped: 0.0006240 seconds
 Total time for which application threads were stopped: 0.0013250 seconds
 {Heap before GC invocations=32 (full 0):
  par new generation   total 1024000K, used 878999K [0x0006fae0, 
 0x000745e0, 0x000745e0)
   eden space 819200K, 100% used [0x0006fae0, 0x00072ce0, 
 0x00072ce0)
   from space 204800K,  29% used [0x00072ce0, 0x000730865ff8, 
 0x00073960)
   to   space 204800K,   0% used [0x00073960, 0x00073960, 
 0x000745e0)
  concurrent mark-sweep generation total 2965504K, used 416618K 
 [0x000745e0, 0x0007fae0, 0x0007fae0)
  concurrent-mark-sweep perm gen total 22784K, used 22591K 
 [0x0007fae0, 0x0007fc44, 0x0008)
 2013-03-15T21:21:17.015+: 1038.849: [GC Before GC:
 Statistics for BinaryTreeDictionary:
 {noformat}
 The extra were stopped lines were annoying me, and the JVM Performance book 
 offered this explanation:
 bq. If there happens to be additional safepoints between garbage collections, 
 the output will show Application time: and Total time for which application 
 threads were stopped: messages for each safepoint that occurs between garbage 
 collections.
 h1. Safepoints 
 Safepoints are times when the JVM pauses all application threads to run a 
 single VM thread that needs to know the heap is not going to change. GC is 
 one cause, others are (from Java Performance):
 bq. There many other safepoints, such as biased locking revocation, thread 
 stack dumps, thread suspension or stopping (i.e., java.lang.Thread.stop() 
 method), and numerous inspection and modification operations requested 
 through JVMTI.
 On my MBP (corei7, 16Gb, ssd) I ran cassandra with the stress test with 
 -XX:-PrintGCApplicationConcurrentTime and -XX:-PrintSafepointStatistics which 
 outputs information when the JVM exits. The biased-locking-tests.txt 
 attachment shows that stress took  1m 23 seconds to complete and the 
 safepoint statistics show most of the pauses were to revoke biased locks. 
 A second test was run (both with a clean data dir) with biased locking 
 disabled that took 1 minute 18 seconds. The  safepoint stats did not include 
 any pauses to revoke biased locks (in attachment). 
 The