[jira] [Commented] (CASSANDRA-15810) Default StringTableSize parameter causes GC slowdown

2020-12-17 Thread Brandon Williams (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-15810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17251142#comment-17251142
 ] 

Brandon Williams commented on CASSANDRA-15810:
--

+1

> Default StringTableSize parameter causes GC slowdown
> 
>
> Key: CASSANDRA-15810
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15810
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Tom van der Woerdt
>Assignee: Benjamin Lerer
>Priority: Normal
>  Labels: gc, performance
> Fix For: 4.0-beta
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> While looking at tail latency on a Cassandra cluster, it came up that the 
> default StringTableSize in Cassandra is set to a million:
> {code:java}
> # Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> -XX:StringTableSize=103{code}
> This was done for CASSANDRA-6410 by [~jbellis] in '13, to optimize heap usage 
> on a test case, running with 500 nodes and num_tokens=512.
> Until Java 13, this string table is implemented as native code, and has to be 
> traversed entirely during the GC initial marking phase, which is a STW event.
> Some testing on my end shows that the pause time of a GC cycle can be reduced 
> by approximately 10 milliseconds if we lower the string table size back to 
> the Java 8 default of 60013 entries.
> Thus, I would recommend this patch (3.11 branch, similar patch for 4.0):
> {code:java}
> diff --git a/conf/jvm.options b/conf/jvm.options
> index 01bb1685b3..c184d18c5d 100644
> --- a/conf/jvm.options
> +++ b/conf/jvm.options
> @@ -107,9 +107,6 @@
>  # Per-thread stack size.
>  -Xss256k
> -# Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> --XX:StringTableSize=103
> -
>  # Make sure all memory is faulted and zeroed on startup.
>  # This helps prevent soft faults in containers and makes
>  # transparent hugepage allocation more effective.
>  {code}
> It does need some testing on more extreme clusters than I have access to, but 
> I ran some Cassandra nodes with {{-XX:+PrintStringTableStatistics}} which 
> suggested that the Java default will suffice here.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-15810) Default StringTableSize parameter causes GC slowdown

2020-12-17 Thread Benjamin Lerer (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-15810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17250981#comment-17250981
 ] 

Benjamin Lerer commented on CASSANDRA-15810:


[~brandon.williams] do you have the time to review this patch?

> Default StringTableSize parameter causes GC slowdown
> 
>
> Key: CASSANDRA-15810
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15810
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Tom van der Woerdt
>Assignee: Benjamin Lerer
>Priority: Normal
>  Labels: gc, performance
> Fix For: 4.0-beta
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> While looking at tail latency on a Cassandra cluster, it came up that the 
> default StringTableSize in Cassandra is set to a million:
> {code:java}
> # Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> -XX:StringTableSize=103{code}
> This was done for CASSANDRA-6410 by [~jbellis] in '13, to optimize heap usage 
> on a test case, running with 500 nodes and num_tokens=512.
> Until Java 13, this string table is implemented as native code, and has to be 
> traversed entirely during the GC initial marking phase, which is a STW event.
> Some testing on my end shows that the pause time of a GC cycle can be reduced 
> by approximately 10 milliseconds if we lower the string table size back to 
> the Java 8 default of 60013 entries.
> Thus, I would recommend this patch (3.11 branch, similar patch for 4.0):
> {code:java}
> diff --git a/conf/jvm.options b/conf/jvm.options
> index 01bb1685b3..c184d18c5d 100644
> --- a/conf/jvm.options
> +++ b/conf/jvm.options
> @@ -107,9 +107,6 @@
>  # Per-thread stack size.
>  -Xss256k
> -# Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> --XX:StringTableSize=103
> -
>  # Make sure all memory is faulted and zeroed on startup.
>  # This helps prevent soft faults in containers and makes
>  # transparent hugepage allocation more effective.
>  {code}
> It does need some testing on more extreme clusters than I have access to, but 
> I ran some Cassandra nodes with {{-XX:+PrintStringTableStatistics}} which 
> suggested that the Java default will suffice here.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-15810) Default StringTableSize parameter causes GC slowdown

2020-12-17 Thread Benjamin Lerer (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-15810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17250980#comment-17250980
 ] 

Benjamin Lerer commented on CASSANDRA-15810:


I pushed a [PR|https://github.com/apache/cassandra/pull/857] for 4.0. Ci 
results 
[j8|https://app.circleci.com/pipelines/github/blerer/cassandra/84/workflows/05e5708a-0378-4b67-bd3b-427487a866a0],
 
[j11|https://app.circleci.com/pipelines/github/blerer/cassandra/84/workflows/5fe0c950-9886-4df1-9246-711a5a542ae2].
 

> Default StringTableSize parameter causes GC slowdown
> 
>
> Key: CASSANDRA-15810
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15810
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Tom van der Woerdt
>Assignee: Benjamin Lerer
>Priority: Normal
>  Labels: gc, performance
> Fix For: 4.0-beta
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> While looking at tail latency on a Cassandra cluster, it came up that the 
> default StringTableSize in Cassandra is set to a million:
> {code:java}
> # Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> -XX:StringTableSize=103{code}
> This was done for CASSANDRA-6410 by [~jbellis] in '13, to optimize heap usage 
> on a test case, running with 500 nodes and num_tokens=512.
> Until Java 13, this string table is implemented as native code, and has to be 
> traversed entirely during the GC initial marking phase, which is a STW event.
> Some testing on my end shows that the pause time of a GC cycle can be reduced 
> by approximately 10 milliseconds if we lower the string table size back to 
> the Java 8 default of 60013 entries.
> Thus, I would recommend this patch (3.11 branch, similar patch for 4.0):
> {code:java}
> diff --git a/conf/jvm.options b/conf/jvm.options
> index 01bb1685b3..c184d18c5d 100644
> --- a/conf/jvm.options
> +++ b/conf/jvm.options
> @@ -107,9 +107,6 @@
>  # Per-thread stack size.
>  -Xss256k
> -# Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> --XX:StringTableSize=103
> -
>  # Make sure all memory is faulted and zeroed on startup.
>  # This helps prevent soft faults in containers and makes
>  # transparent hugepage allocation more effective.
>  {code}
> It does need some testing on more extreme clusters than I have access to, but 
> I ran some Cassandra nodes with {{-XX:+PrintStringTableStatistics}} which 
> suggested that the Java default will suffice here.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-15810) Default StringTableSize parameter causes GC slowdown

2020-12-15 Thread Tom van der Woerdt (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-15810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17249621#comment-17249621
 ] 

Tom van der Woerdt commented on CASSANDRA-15810:


Added a Fix Version here; if a main selling point for 4.0 is lower tail latency 
then this makes that impact even more pronounced.

> Default StringTableSize parameter causes GC slowdown
> 
>
> Key: CASSANDRA-15810
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15810
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Tom van der Woerdt
>Priority: Normal
>  Labels: gc, performance
> Fix For: 4.0-beta
>
>
> While looking at tail latency on a Cassandra cluster, it came up that the 
> default StringTableSize in Cassandra is set to a million:
> {code:java}
> # Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> -XX:StringTableSize=103{code}
> This was done for CASSANDRA-6410 by [~jbellis] in '13, to optimize heap usage 
> on a test case, running with 500 nodes and num_tokens=512.
> Until Java 13, this string table is implemented as native code, and has to be 
> traversed entirely during the GC initial marking phase, which is a STW event.
> Some testing on my end shows that the pause time of a GC cycle can be reduced 
> by approximately 10 milliseconds if we lower the string table size back to 
> the Java 8 default of 60013 entries.
> Thus, I would recommend this patch (3.11 branch, similar patch for 4.0):
> {code:java}
> diff --git a/conf/jvm.options b/conf/jvm.options
> index 01bb1685b3..c184d18c5d 100644
> --- a/conf/jvm.options
> +++ b/conf/jvm.options
> @@ -107,9 +107,6 @@
>  # Per-thread stack size.
>  -Xss256k
> -# Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> --XX:StringTableSize=103
> -
>  # Make sure all memory is faulted and zeroed on startup.
>  # This helps prevent soft faults in containers and makes
>  # transparent hugepage allocation more effective.
>  {code}
> It does need some testing on more extreme clusters than I have access to, but 
> I ran some Cassandra nodes with {{-XX:+PrintStringTableStatistics}} which 
> suggested that the Java default will suffice here.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-15810) Default StringTableSize parameter causes GC slowdown

2020-08-13 Thread Brandon Williams (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-15810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17177017#comment-17177017
 ] 

Brandon Williams commented on CASSANDRA-15810:
--

bq. This change feels IMO safe for 4.0 and also safe to be backported to 3.11 + 
3.0.

I personally feel it's a bit much to do in a point release in stable versions.  
If there's any chance of regression, I don't want to burn new users on those 
versions, but if experts want to do this, it's just JVM options they can change 
themselves.

> Default StringTableSize parameter causes GC slowdown
> 
>
> Key: CASSANDRA-15810
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15810
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Tom van der Woerdt
>Priority: Normal
>  Labels: gc, performance
>
> While looking at tail latency on a Cassandra cluster, it came up that the 
> default StringTableSize in Cassandra is set to a million:
> {code:java}
> # Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> -XX:StringTableSize=103{code}
> This was done for CASSANDRA-6410 by [~jbellis] in '13, to optimize heap usage 
> on a test case, running with 500 nodes and num_tokens=512.
> Until Java 13, this string table is implemented as native code, and has to be 
> traversed entirely during the GC initial marking phase, which is a STW event.
> Some testing on my end shows that the pause time of a GC cycle can be reduced 
> by approximately 10 milliseconds if we lower the string table size back to 
> the Java 8 default of 60013 entries.
> Thus, I would recommend this patch (3.11 branch, similar patch for 4.0):
> {code:java}
> diff --git a/conf/jvm.options b/conf/jvm.options
> index 01bb1685b3..c184d18c5d 100644
> --- a/conf/jvm.options
> +++ b/conf/jvm.options
> @@ -107,9 +107,6 @@
>  # Per-thread stack size.
>  -Xss256k
> -# Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> --XX:StringTableSize=103
> -
>  # Make sure all memory is faulted and zeroed on startup.
>  # This helps prevent soft faults in containers and makes
>  # transparent hugepage allocation more effective.
>  {code}
> It does need some testing on more extreme clusters than I have access to, but 
> I ran some Cassandra nodes with {{-XX:+PrintStringTableStatistics}} which 
> suggested that the Java default will suffice here.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-15810) Default StringTableSize parameter causes GC slowdown

2020-08-13 Thread Robert Stupp (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-15810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17176876#comment-17176876
 ] 

Robert Stupp commented on CASSANDRA-15810:
--

Yea - I think, the biggest "consumer" is probably the list of tokens, which is 
also quite unique per node. So no savings for that one.
Potential saving might happen for "release-version", "dc", "rack" and current 
"schema-version" - not particularly long strings so I doubt that it's actually 
not worth the {{String.intern()}} as the total savings are rather low. The 
other values of {{VersionedValue}} are unique per peer and put unnecessary 
pressure on the string-intern-map.

Other usages of {{String.intern()}} in the whole production code (i.e. 
including JDK and libraries) are (intentionally) not on a hot-path.

This change feels IMO safe for 4.0 and also safe to be backported to 3.11 + 3.0.

> Default StringTableSize parameter causes GC slowdown
> 
>
> Key: CASSANDRA-15810
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15810
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Tom van der Woerdt
>Priority: Normal
>  Labels: gc, performance
>
> While looking at tail latency on a Cassandra cluster, it came up that the 
> default StringTableSize in Cassandra is set to a million:
> {code:java}
> # Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> -XX:StringTableSize=103{code}
> This was done for CASSANDRA-6410 by [~jbellis] in '13, to optimize heap usage 
> on a test case, running with 500 nodes and num_tokens=512.
> Until Java 13, this string table is implemented as native code, and has to be 
> traversed entirely during the GC initial marking phase, which is a STW event.
> Some testing on my end shows that the pause time of a GC cycle can be reduced 
> by approximately 10 milliseconds if we lower the string table size back to 
> the Java 8 default of 60013 entries.
> Thus, I would recommend this patch (3.11 branch, similar patch for 4.0):
> {code:java}
> diff --git a/conf/jvm.options b/conf/jvm.options
> index 01bb1685b3..c184d18c5d 100644
> --- a/conf/jvm.options
> +++ b/conf/jvm.options
> @@ -107,9 +107,6 @@
>  # Per-thread stack size.
>  -Xss256k
> -# Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> --XX:StringTableSize=103
> -
>  # Make sure all memory is faulted and zeroed on startup.
>  # This helps prevent soft faults in containers and makes
>  # transparent hugepage allocation more effective.
>  {code}
> It does need some testing on more extreme clusters than I have access to, but 
> I ran some Cassandra nodes with {{-XX:+PrintStringTableStatistics}} which 
> suggested that the Java default will suffice here.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-15810) Default StringTableSize parameter causes GC slowdown

2020-08-13 Thread Benedict Elliott Smith (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-15810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17176851#comment-17176851
 ] 

Benedict Elliott Smith commented on CASSANDRA-15810:


+1; I saw this recently and was unconvinced by the usage, but didn't try to 
explore removing it.  If this is the only source of interning, I'd be strongly 
in favour of removing.  If we _really_ need to "intern" here, we can use 
something like a {{WeakHashMap}}, and perhaps intern the specific 
{{ApplicationState}} we think will benefit, but I'm uncertain if it's needed at 
all.  Perhaps we should do some back-of-envelope calculations for how much heap 
will be used in a huge cluster without "interning" vs with.

> Default StringTableSize parameter causes GC slowdown
> 
>
> Key: CASSANDRA-15810
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15810
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Tom van der Woerdt
>Priority: Normal
>  Labels: gc, performance
>
> While looking at tail latency on a Cassandra cluster, it came up that the 
> default StringTableSize in Cassandra is set to a million:
> {code:java}
> # Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> -XX:StringTableSize=103{code}
> This was done for CASSANDRA-6410 by [~jbellis] in '13, to optimize heap usage 
> on a test case, running with 500 nodes and num_tokens=512.
> Until Java 13, this string table is implemented as native code, and has to be 
> traversed entirely during the GC initial marking phase, which is a STW event.
> Some testing on my end shows that the pause time of a GC cycle can be reduced 
> by approximately 10 milliseconds if we lower the string table size back to 
> the Java 8 default of 60013 entries.
> Thus, I would recommend this patch (3.11 branch, similar patch for 4.0):
> {code:java}
> diff --git a/conf/jvm.options b/conf/jvm.options
> index 01bb1685b3..c184d18c5d 100644
> --- a/conf/jvm.options
> +++ b/conf/jvm.options
> @@ -107,9 +107,6 @@
>  # Per-thread stack size.
>  -Xss256k
> -# Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> --XX:StringTableSize=103
> -
>  # Make sure all memory is faulted and zeroed on startup.
>  # This helps prevent soft faults in containers and makes
>  # transparent hugepage allocation more effective.
>  {code}
> It does need some testing on more extreme clusters than I have access to, but 
> I ran some Cassandra nodes with {{-XX:+PrintStringTableStatistics}} which 
> suggested that the Java default will suffice here.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-15810) Default StringTableSize parameter causes GC slowdown

2020-08-13 Thread Benedict Elliott Smith (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-15810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17176850#comment-17176850
 ] 

Benedict Elliott Smith commented on CASSANDRA-15810:


+1; I saw this recently and was unconvinced by the usage, but didn't try to 
explore removing it.  If this is the only source of interning, I'd be strongly 
in favour of removing.  If we _really_ need to "intern" here, we can use 
something like a {{WeakHashMap}}, and perhaps intern the specific 
{{ApplicationState}} we think will benefit, but I'm uncertain if it's needed at 
all.  Perhaps we should do some back-of-envelope calculations for how much heap 
will be used in a huge cluster without "interning" vs with.

> Default StringTableSize parameter causes GC slowdown
> 
>
> Key: CASSANDRA-15810
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15810
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Tom van der Woerdt
>Priority: Normal
>  Labels: gc, performance
>
> While looking at tail latency on a Cassandra cluster, it came up that the 
> default StringTableSize in Cassandra is set to a million:
> {code:java}
> # Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> -XX:StringTableSize=103{code}
> This was done for CASSANDRA-6410 by [~jbellis] in '13, to optimize heap usage 
> on a test case, running with 500 nodes and num_tokens=512.
> Until Java 13, this string table is implemented as native code, and has to be 
> traversed entirely during the GC initial marking phase, which is a STW event.
> Some testing on my end shows that the pause time of a GC cycle can be reduced 
> by approximately 10 milliseconds if we lower the string table size back to 
> the Java 8 default of 60013 entries.
> Thus, I would recommend this patch (3.11 branch, similar patch for 4.0):
> {code:java}
> diff --git a/conf/jvm.options b/conf/jvm.options
> index 01bb1685b3..c184d18c5d 100644
> --- a/conf/jvm.options
> +++ b/conf/jvm.options
> @@ -107,9 +107,6 @@
>  # Per-thread stack size.
>  -Xss256k
> -# Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> --XX:StringTableSize=103
> -
>  # Make sure all memory is faulted and zeroed on startup.
>  # This helps prevent soft faults in containers and makes
>  # transparent hugepage allocation more effective.
>  {code}
> It does need some testing on more extreme clusters than I have access to, but 
> I ran some Cassandra nodes with {{-XX:+PrintStringTableStatistics}} which 
> suggested that the Java default will suffice here.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org



[jira] [Commented] (CASSANDRA-15810) Default StringTableSize parameter causes GC slowdown

2020-08-13 Thread Robert Stupp (Jira)


[ 
https://issues.apache.org/jira/browse/CASSANDRA-15810?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17176835#comment-17176835
 ] 

Robert Stupp commented on CASSANDRA-15810:
--

ISTM that it's better to remove the only usage of {{String.intern()}} in 
{{org.apache.cassandra.gms.VersionedValue#VersionedValue(java.lang.String)}} 
and the {{-XX:StringTableSize}} JVM argument entirely. [~benedict] WDYT?

There's [evidence|https://shipilev.net/jvm/anatomy-quarks/10-string-intern/] 
that String-interning can cause GC and performance issues.


> Default StringTableSize parameter causes GC slowdown
> 
>
> Key: CASSANDRA-15810
> URL: https://issues.apache.org/jira/browse/CASSANDRA-15810
> Project: Cassandra
>  Issue Type: Improvement
>  Components: Local/Config
>Reporter: Tom van der Woerdt
>Priority: Normal
>  Labels: gc, performance
>
> While looking at tail latency on a Cassandra cluster, it came up that the 
> default StringTableSize in Cassandra is set to a million:
> {code:java}
> # Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> -XX:StringTableSize=103{code}
> This was done for CASSANDRA-6410 by [~jbellis] in '13, to optimize heap usage 
> on a test case, running with 500 nodes and num_tokens=512.
> Until Java 13, this string table is implemented as native code, and has to be 
> traversed entirely during the GC initial marking phase, which is a STW event.
> Some testing on my end shows that the pause time of a GC cycle can be reduced 
> by approximately 10 milliseconds if we lower the string table size back to 
> the Java 8 default of 60013 entries.
> Thus, I would recommend this patch (3.11 branch, similar patch for 4.0):
> {code:java}
> diff --git a/conf/jvm.options b/conf/jvm.options
> index 01bb1685b3..c184d18c5d 100644
> --- a/conf/jvm.options
> +++ b/conf/jvm.options
> @@ -107,9 +107,6 @@
>  # Per-thread stack size.
>  -Xss256k
> -# Larger interned string table, for gossip's benefit (CASSANDRA-6410)
> --XX:StringTableSize=103
> -
>  # Make sure all memory is faulted and zeroed on startup.
>  # This helps prevent soft faults in containers and makes
>  # transparent hugepage allocation more effective.
>  {code}
> It does need some testing on more extreme clusters than I have access to, but 
> I ran some Cassandra nodes with {{-XX:+PrintStringTableStatistics}} which 
> suggested that the Java default will suffice here.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

-
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org