Mercurial > dovecot > core-2.2
changeset 22612:9cc4ce6f3920
lib-storage: Add settings to configure lib-index optimization parameters
The defaults are expected to be pretty good, but these settings make it
easier to test whether other values might be more optimal.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Mon, 09 Oct 2017 16:37:08 +0300 |
parents | 65ada9976a7f |
children | bb127acc6c9b |
files | src/lib-storage/index/index-storage.c src/lib-storage/mail-storage-settings.c src/lib-storage/mail-storage-settings.h |
diffstat | 3 files changed, 64 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/index-storage.c Mon Oct 09 15:37:51 2017 +0300 +++ b/src/lib-storage/index/index-storage.c Mon Oct 09 16:37:08 2017 +0300 @@ -247,6 +247,29 @@ mail_index_set_lock_method(box->index, box->storage->set->parsed_lock_method, mail_storage_get_lock_timeout(box->storage, UINT_MAX)); + + const struct mail_storage_settings *set = box->storage->set; + struct mail_index_optimization_settings optimization_set = { + .index = { + .rewrite_min_log_bytes = set->mail_index_rewrite_min_log_bytes, + .rewrite_max_log_bytes = set->mail_index_rewrite_max_log_bytes, + }, + .log = { + .min_size = set->mail_index_log_rotate_min_size, + .max_size = set->mail_index_log_rotate_max_size, + .min_age_secs = set->mail_index_log_rotate_min_age, + .log2_max_age_secs = set->mail_index_log2_max_age, + }, + .cache = { + .unaccessed_field_drop_secs = set->mail_cache_unaccessed_field_drop, + .record_max_size = set->mail_cache_record_max_size, + .compress_min_size = set->mail_cache_compress_min_size, + .compress_delete_percentage = set->mail_cache_compress_delete_percentage, + .compress_continued_percentage = set->mail_cache_compress_continued_percentage, + .compress_header_continue_count = set->mail_cache_compress_header_continue_count, + }, + }; + mail_index_set_optimization_settings(box->index, &optimization_set); return 0; }
--- a/src/lib-storage/mail-storage-settings.c Mon Oct 09 15:37:51 2017 +0300 +++ b/src/lib-storage/mail-storage-settings.c Mon Oct 09 16:37:08 2017 +0300 @@ -38,6 +38,18 @@ DEF(SET_STR, mail_server_comment), DEF(SET_STR, mail_server_admin), DEF(SET_UINT, mail_cache_min_mail_count), + DEF(SET_TIME, mail_cache_unaccessed_field_drop), + DEF(SET_SIZE, mail_cache_record_max_size), + DEF(SET_SIZE, mail_cache_compress_min_size), + DEF(SET_UINT, mail_cache_compress_delete_percentage), + DEF(SET_UINT, mail_cache_compress_continued_percentage), + DEF(SET_UINT, mail_cache_compress_header_continue_count), + DEF(SET_SIZE, mail_index_rewrite_min_log_bytes), + DEF(SET_SIZE, mail_index_rewrite_max_log_bytes), + DEF(SET_SIZE, mail_index_log_rotate_min_size), + DEF(SET_SIZE, mail_index_log_rotate_max_size), + DEF(SET_TIME, mail_index_log_rotate_min_age), + DEF(SET_TIME, mail_index_log2_max_age), DEF(SET_TIME, mailbox_idle_check_interval), DEF(SET_UINT, mail_max_keyword_length), DEF(SET_TIME, mail_max_lock_timeout), @@ -81,6 +93,18 @@ .mail_server_comment = "", .mail_server_admin = "", .mail_cache_min_mail_count = 0, + .mail_cache_unaccessed_field_drop = 60*60*24*30, + .mail_cache_record_max_size = 64 * 1024, + .mail_cache_compress_min_size = 32 * 1024, + .mail_cache_compress_delete_percentage = 20, + .mail_cache_compress_continued_percentage = 200, + .mail_cache_compress_header_continue_count = 4, + .mail_index_rewrite_min_log_bytes = 8 * 1024, + .mail_index_rewrite_max_log_bytes = 128 * 1024, + .mail_index_log_rotate_min_size = 32 * 1024, + .mail_index_log_rotate_max_size = 1024 * 1024, + .mail_index_log_rotate_min_age = 5 * 60, + .mail_index_log2_max_age = 3600 * 24 * 2, .mailbox_idle_check_interval = 30, .mail_max_keyword_length = 50, .mail_max_lock_timeout = 0, @@ -414,6 +438,11 @@ return FALSE; } + if (set->mail_cache_compress_delete_percentage > 100) { + *error_r = "mail_cache_compress_delete_percentage can't be over 100"; + return FALSE; + } + uidl_format_ok = FALSE; for (p = set->pop3_uidl_format; *p != '\0'; p++) { if (p[0] != '%' || p[1] == '\0')
--- a/src/lib-storage/mail-storage-settings.h Mon Oct 09 15:37:51 2017 +0300 +++ b/src/lib-storage/mail-storage-settings.h Mon Oct 09 16:37:08 2017 +0300 @@ -24,6 +24,18 @@ const char *mail_server_comment; const char *mail_server_admin; unsigned int mail_cache_min_mail_count; + unsigned int mail_cache_unaccessed_field_drop; + uoff_t mail_cache_record_max_size; + uoff_t mail_cache_compress_min_size; + unsigned int mail_cache_compress_delete_percentage; + unsigned int mail_cache_compress_continued_percentage; + unsigned int mail_cache_compress_header_continue_count; + uoff_t mail_index_rewrite_min_log_bytes; + uoff_t mail_index_rewrite_max_log_bytes; + uoff_t mail_index_log_rotate_min_size; + uoff_t mail_index_log_rotate_max_size; + unsigned int mail_index_log_rotate_min_age; + unsigned int mail_index_log2_max_age; unsigned int mailbox_idle_check_interval; unsigned int mail_max_keyword_length; unsigned int mail_max_lock_timeout;