rocksdb/options
Baptiste Lemaire 5879053fd0 Dynamically changeable `MemPurge` option (#10011)
Summary:
**Summary**
Make the mempurge option flag a Mutable Column Family option flag. Therefore, the mempurge feature can be dynamically toggled.

**Motivation**
RocksDB users prefer having the ability to switch features on and off without having to close and reopen the DB. This is particularly important if the feature causes issues and needs to be turned off. Dynamically changing a DB option flag does not seem currently possible.
Moreover, with this new change, the MemPurge feature can be toggled on or off independently between column families, which we see as a major improvement.

**Content of this PR**
This PR includes removal of the `experimental_mempurge_threshold` flag as a DB option flag, and its re-introduction as a `MutableCFOption` flag. I updated the code to handle dynamic changes of the flag (in particular inside the `FlushJob` file). Additionally, this PR includes a new test to demonstrate the capacity of the code to toggle the MemPurge feature on and off, as well as the addition in the `db_stress` module of 2 different mempurge threshold values (0.0 and 1.0) that can be randomly changed with the `set_option_one_in` flag. This is useful to stress test the dynamic changes.

**Benchmarking**
I will add numbers to prove that there is no performance impact within the next 12 hours.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/10011

Reviewed By: pdillinger

Differential Revision: D36462357

Pulled By: bjlemaire

fbshipit-source-id: 5e3d63bdadf085c0572ecc2349e7dd9729ce1802
2022-06-23 09:42:18 -07:00
..
cf_options.cc Dynamically changeable `MemPurge` option (#10011) 2022-06-23 09:42:18 -07:00
cf_options.h Dynamically changeable `MemPurge` option (#10011) 2022-06-23 09:42:18 -07:00
configurable.cc Option type info functions (#9411) 2022-05-13 04:57:08 -07:00
configurable_helper.h Fix some minor issues in the Customizable infrastructure (#8566) 2021-08-19 10:10:47 -07:00
configurable_test.cc Remove own ToString() (#9955) 2022-05-06 13:03:58 -07:00
configurable_test.h Move RegisterOptions into the Configurable API (#8223) 2021-04-26 03:13:24 -07:00
customizable.cc Option type info functions (#9411) 2022-05-13 04:57:08 -07:00
customizable_test.cc Added GetFactoryCount/Names/Types to ObjectRegistry (#9358) 2022-05-16 09:44:43 -07:00
db_options.cc Dynamically changeable `MemPurge` option (#10011) 2022-06-23 09:42:18 -07:00
db_options.h Dynamically changeable `MemPurge` option (#10011) 2022-06-23 09:42:18 -07:00
options.cc Dynamically changeable `MemPurge` option (#10011) 2022-06-23 09:42:18 -07:00
options_helper.cc Dynamically changeable `MemPurge` option (#10011) 2022-06-23 09:42:18 -07:00
options_helper.h New backup meta schema, with file temperatures (#9660) 2022-03-18 11:06:17 -07:00
options_parser.cc fix a false positive case of parsing table factory from options file (#10094) 2022-06-14 13:20:54 -07:00
options_parser.h Bring the Configurable options together (#5753) 2020-09-14 17:01:01 -07:00
options_settable_test.cc Dynamically changeable `MemPurge` option (#10011) 2022-06-23 09:42:18 -07:00
options_test.cc Dynamically changeable `MemPurge` option (#10011) 2022-06-23 09:42:18 -07:00