From e1355d72386d74d18baaf19fe93fdef91a7aa8b3 Mon Sep 17 00:00:00 2001 From: Stefan Miklosovic Date: Wed, 15 Nov 2023 22:02:04 +0100 Subject: [PATCH] Set default disk_access_mode to mmap_index_only patch by Stefan Miklosovic; reviewed by Paulo Motta, Caleb Rackliffe, Brandon Williams for CASSANDRA-19021 --- CHANGES.txt | 1 + NEWS.txt | 2 ++ conf/cassandra.yaml | 17 +++++++++++++++++ .../org/apache/cassandra/config/Config.java | 2 +- .../cassandra-mtls-backward-compatibility.yaml | 2 +- test/conf/cassandra-mtls.yaml | 2 +- test/conf/cassandra-murmur.yaml | 2 +- test/conf/cassandra-old.yaml | 2 +- .../cassandra-pem-jks-sslcontextfactory.yaml | 2 +- ...-sslcontextfactory-invalidconfiguration.yaml | 2 +- ...sslcontextfactory-mismatching-passwords.yaml | 2 +- ...a-pem-sslcontextfactory-unencryptedkeys.yaml | 2 +- test/conf/cassandra-pem-sslcontextfactory.yaml | 2 +- test/conf/cassandra-seeds.yaml | 2 +- ...-sslcontextfactory-invalidconfiguration.yaml | 2 +- test/conf/cassandra-sslcontextfactory.yaml | 2 +- test/conf/cassandra.yaml | 2 +- test/conf/unit-test-conf/test-native-port.yaml | 2 +- 18 files changed, 35 insertions(+), 15 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index e8e1eea9c7..5102f80bff 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.0-beta1 + * Set default disk_access_mode to mmap_index_only (CASSANDRA-19021) * Exclude net.java.dev.jna:jna dependency from dependencies of org.caffinitas.ohc:ohc-core (CASSANDRA-18992) * Add UCS sstable_growth and min_sstable_size options (CASSANDRA-18945) * Make cqlsh's min required Python version 3.7+ instead of 3.6+ (CASSANDRA-18960) diff --git a/NEWS.txt b/NEWS.txt index a9599cd0e5..742424da08 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -190,6 +190,8 @@ New features Upgrading --------- + - Default disk_access_mode value changed from "auto" to "mmap_index_only". Override this setting with "disk_access_mode: auto" on + cassandra.yaml to keep the previous default. See CASSANDRA-19021 for details. - The minimumn Python version to run cqlsh has been bumped from 3.6 to 3.7. Python 3.6 is past its end-of-life, and 3.7 is the minimum version supported by the Python driver. - Java 8 has been removed. Lowest supported version is Java 11. diff --git a/conf/cassandra.yaml b/conf/cassandra.yaml index dd153e6b5c..b8a528a625 100644 --- a/conf/cassandra.yaml +++ b/conf/cassandra.yaml @@ -369,6 +369,23 @@ cdc_enabled: false # $CASSANDRA_HOME/data/cdc_raw. # cdc_raw_directory: /var/lib/cassandra/cdc_raw +# Policy for accessing disk: +# +# auto +# Enable mmap on both data and index files on a 64-bit JVM. +# +# standard +# Disable mmap entirely. +# +# mmap +# Map index and data files. mmap can cause excessive paging if all actively read SSTables do not fit into RAM. +# +# mmap_index_only +# Similar to mmap but maps only index files. Using this setting might also help if you observe high number of page +# faults or steals along with increased latencies. This setting is default. +# +# disk_access_mode: mmap_index_only + # Policy for data disk failures: # # die diff --git a/src/java/org/apache/cassandra/config/Config.java b/src/java/org/apache/cassandra/config/Config.java index 08f90e47cb..8a49e4f6e1 100644 --- a/src/java/org/apache/cassandra/config/Config.java +++ b/src/java/org/apache/cassandra/config/Config.java @@ -117,7 +117,7 @@ public class Config public volatile boolean force_new_prepared_statement_behaviour = false; public ParameterizedClass seed_provider; - public DiskAccessMode disk_access_mode = DiskAccessMode.auto; + public DiskAccessMode disk_access_mode = DiskAccessMode.mmap_index_only; public DiskFailurePolicy disk_failure_policy = DiskFailurePolicy.ignore; public CommitFailurePolicy commit_failure_policy = CommitFailurePolicy.stop; diff --git a/test/conf/cassandra-mtls-backward-compatibility.yaml b/test/conf/cassandra-mtls-backward-compatibility.yaml index d5e4bc24a2..7e5a2fd29d 100644 --- a/test/conf/cassandra-mtls-backward-compatibility.yaml +++ b/test/conf/cassandra-mtls-backward-compatibility.yaml @@ -37,7 +37,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra-mtls.yaml b/test/conf/cassandra-mtls.yaml index de477d3188..84c7f9b2b6 100644 --- a/test/conf/cassandra-mtls.yaml +++ b/test/conf/cassandra-mtls.yaml @@ -37,7 +37,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra-murmur.yaml b/test/conf/cassandra-murmur.yaml index a6edea7ea4..32170a1a74 100644 --- a/test/conf/cassandra-murmur.yaml +++ b/test/conf/cassandra-murmur.yaml @@ -19,7 +19,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra-old.yaml b/test/conf/cassandra-old.yaml index 13f46b2fa3..05d1b64fed 100644 --- a/test/conf/cassandra-old.yaml +++ b/test/conf/cassandra-old.yaml @@ -23,7 +23,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra-pem-jks-sslcontextfactory.yaml b/test/conf/cassandra-pem-jks-sslcontextfactory.yaml index ad9d998551..f0115b4814 100644 --- a/test/conf/cassandra-pem-jks-sslcontextfactory.yaml +++ b/test/conf/cassandra-pem-jks-sslcontextfactory.yaml @@ -41,7 +41,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra-pem-sslcontextfactory-invalidconfiguration.yaml b/test/conf/cassandra-pem-sslcontextfactory-invalidconfiguration.yaml index 15aaae0148..fb1cf319c3 100644 --- a/test/conf/cassandra-pem-sslcontextfactory-invalidconfiguration.yaml +++ b/test/conf/cassandra-pem-sslcontextfactory-invalidconfiguration.yaml @@ -41,7 +41,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra-pem-sslcontextfactory-mismatching-passwords.yaml b/test/conf/cassandra-pem-sslcontextfactory-mismatching-passwords.yaml index 5d64354208..90ca4c52ca 100644 --- a/test/conf/cassandra-pem-sslcontextfactory-mismatching-passwords.yaml +++ b/test/conf/cassandra-pem-sslcontextfactory-mismatching-passwords.yaml @@ -41,7 +41,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra-pem-sslcontextfactory-unencryptedkeys.yaml b/test/conf/cassandra-pem-sslcontextfactory-unencryptedkeys.yaml index 7b08bcce03..9a66c2829e 100644 --- a/test/conf/cassandra-pem-sslcontextfactory-unencryptedkeys.yaml +++ b/test/conf/cassandra-pem-sslcontextfactory-unencryptedkeys.yaml @@ -41,7 +41,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra-pem-sslcontextfactory.yaml b/test/conf/cassandra-pem-sslcontextfactory.yaml index 36daecd117..029fc4147c 100644 --- a/test/conf/cassandra-pem-sslcontextfactory.yaml +++ b/test/conf/cassandra-pem-sslcontextfactory.yaml @@ -41,7 +41,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra-seeds.yaml b/test/conf/cassandra-seeds.yaml index 7a6ed7dcbe..6b3814f817 100644 --- a/test/conf/cassandra-seeds.yaml +++ b/test/conf/cassandra-seeds.yaml @@ -20,7 +20,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra-sslcontextfactory-invalidconfiguration.yaml b/test/conf/cassandra-sslcontextfactory-invalidconfiguration.yaml index 8999ca1dad..cfe6f5538b 100644 --- a/test/conf/cassandra-sslcontextfactory-invalidconfiguration.yaml +++ b/test/conf/cassandra-sslcontextfactory-invalidconfiguration.yaml @@ -41,7 +41,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra-sslcontextfactory.yaml b/test/conf/cassandra-sslcontextfactory.yaml index 39b4be139f..177459f175 100644 --- a/test/conf/cassandra-sslcontextfactory.yaml +++ b/test/conf/cassandra-sslcontextfactory.yaml @@ -41,7 +41,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/cassandra.yaml b/test/conf/cassandra.yaml index 0e0da455a9..bfb58b3e65 100644 --- a/test/conf/cassandra.yaml +++ b/test/conf/cassandra.yaml @@ -23,7 +23,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: diff --git a/test/conf/unit-test-conf/test-native-port.yaml b/test/conf/unit-test-conf/test-native-port.yaml index ee4d30d7ed..0cf6fb2e97 100644 --- a/test/conf/unit-test-conf/test-native-port.yaml +++ b/test/conf/unit-test-conf/test-native-port.yaml @@ -23,7 +23,7 @@ column_index_size: 4KiB saved_caches_directory: build/test/cassandra/saved_caches data_file_directories: - build/test/cassandra/data -disk_access_mode: mmap +disk_access_mode: mmap_index_only seed_provider: - class_name: org.apache.cassandra.locator.SimpleSeedProvider parameters: