rocksdb cache adjustments

This commit is contained in:
2025-01-21 09:23:43 -06:00
parent be678e8f9c
commit fe2a1b96b2

View File

@ -19,6 +19,8 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
*/ */
#include "rocksdb/table.h"
#include "utils/utils.hpp" #include "utils/utils.hpp"
#include "app_config.hpp" #include "app_config.hpp"
@ -38,12 +40,9 @@ void calculate_allocation_size(bool directory, std::uint64_t file_size,
return; return;
} }
if (file_size > allocation_size) {
allocation_size = file_size;
}
allocation_size = allocation_size =
utils::divide_with_ceiling(allocation_size, WINFSP_ALLOCATION_UNIT) * utils::divide_with_ceiling(std::max(file_size, allocation_size),
WINFSP_ALLOCATION_UNIT) *
WINFSP_ALLOCATION_UNIT; WINFSP_ALLOCATION_UNIT;
allocation_meta_size = std::to_string(allocation_size); allocation_meta_size = std::to_string(allocation_size);
} }
@ -51,8 +50,8 @@ void calculate_allocation_size(bool directory, std::uint64_t file_size,
auto create_rocksdb( auto create_rocksdb(
const app_config &cfg, const std::string &name, const app_config &cfg, const std::string &name,
const std::vector<rocksdb::ColumnFamilyDescriptor> &families, const std::vector<rocksdb::ColumnFamilyDescriptor> &families,
std::vector<rocksdb::ColumnFamilyHandle *> &handles, std::vector<rocksdb::ColumnFamilyHandle *> &handles, bool clear)
bool clear) -> std::unique_ptr<rocksdb::TransactionDB> { -> std::unique_ptr<rocksdb::TransactionDB> {
REPERTORY_USES_FUNCTION_NAME(); REPERTORY_USES_FUNCTION_NAME();
auto db_dir = utils::path::combine(cfg.get_data_directory(), {"db"}); auto db_dir = utils::path::combine(cfg.get_data_directory(), {"db"});
@ -67,11 +66,18 @@ auto create_rocksdb(
"failed to remove " + name + " db|" + path); "failed to remove " + name + " db|" + path);
} }
rocksdb::BlockBasedTableOptions table_options{};
table_options.block_cache =
rocksdb::NewLRUCache(2ULL * 1024ULL * 1024LL * 1024LL);
table_options.cache_index_and_filter_blocks = true;
rocksdb::Options options{}; rocksdb::Options options{};
options.create_if_missing = true; options.create_if_missing = true;
options.create_missing_column_families = true; options.create_missing_column_families = true;
options.db_log_dir = cfg.get_log_directory(); options.db_log_dir = cfg.get_log_directory();
options.keep_log_file_num = 10; options.keep_log_file_num = 10;
options.table_factory.reset(
rocksdb::NewBlockBasedTableFactory(table_options));
rocksdb::TransactionDB *ptr{}; rocksdb::TransactionDB *ptr{};
auto status = rocksdb::TransactionDB::Open( auto status = rocksdb::TransactionDB::Open(