Merge pull request #5138 from oranagra/improve_defrag_test

make active defrag test more stable
This commit is contained in:
Salvatore Sanfilippo 2018-07-18 11:05:03 +02:00 committed by GitHub
commit 22e9321c3e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 5 deletions

View File

@ -867,9 +867,8 @@ void defragDictBucketCallback(void *privdata, dictEntry **bucketref) {
* or not, a false detection can cause the defragmenter to waste a lot of CPU * or not, a false detection can cause the defragmenter to waste a lot of CPU
* without the possibility of getting any results. */ * without the possibility of getting any results. */
float getAllocatorFragmentation(size_t *out_frag_bytes) { float getAllocatorFragmentation(size_t *out_frag_bytes) {
size_t resident = server.cron_malloc_stats.allocator_resident; size_t resident, active, allocated;
size_t active = server.cron_malloc_stats.allocator_active; zmalloc_get_allocator_info(&allocated, &active, &resident);
size_t allocated = server.cron_malloc_stats.allocator_allocated;
float frag_pct = ((float)active / allocated)*100 - 100; float frag_pct = ((float)active / allocated)*100 - 100;
size_t frag_bytes = active - allocated; size_t frag_bytes = active - allocated;
float rss_pct = ((float)resident / allocated)*100 - 100; float rss_pct = ((float)resident / allocated)*100 - 100;

View File

@ -41,7 +41,7 @@ start_server {tags {"defrag"}} {
test "Active defrag" { test "Active defrag" {
r config set activedefrag no r config set activedefrag no
r config set active-defrag-threshold-lower 5 r config set active-defrag-threshold-lower 5
r config set active-defrag-cycle-min 25 r config set active-defrag-cycle-min 65
r config set active-defrag-cycle-max 75 r config set active-defrag-cycle-max 75
r config set active-defrag-ignore-bytes 2mb r config set active-defrag-ignore-bytes 2mb
r config set maxmemory 100mb r config set maxmemory 100mb
@ -66,9 +66,10 @@ start_server {tags {"defrag"}} {
} }
# Wait for the active defrag to stop working. # Wait for the active defrag to stop working.
wait_for_condition 100 100 { wait_for_condition 150 100 {
[s active_defrag_running] eq 0 [s active_defrag_running] eq 0
} else { } else {
after 120 ;# serverCron only updates the info once in 100ms
puts [r info memory] puts [r info memory]
puts [r memory malloc-stats] puts [r memory malloc-stats]
fail "defrag didn't stop." fail "defrag didn't stop."
@ -175,6 +176,7 @@ start_server {tags {"defrag"}} {
wait_for_condition 500 100 { wait_for_condition 500 100 {
[s active_defrag_running] eq 0 [s active_defrag_running] eq 0
} else { } else {
after 120 ;# serverCron only updates the info once in 100ms
puts [r info memory] puts [r info memory]
puts [r memory malloc-stats] puts [r memory malloc-stats]
fail "defrag didn't stop." fail "defrag didn't stop."