summaryrefslogtreecommitdiff
path: root/tests/unit/memefficiency.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/memefficiency.tcl')
-rw-r--r--tests/unit/memefficiency.tcl48
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/unit/memefficiency.tcl b/tests/unit/memefficiency.tcl
index 7ca9a705b..f452f0224 100644
--- a/tests/unit/memefficiency.tcl
+++ b/tests/unit/memefficiency.tcl
@@ -35,3 +35,51 @@ start_server {tags {"memefficiency"}} {
}
}
}
+
+if 0 {
+ start_server {tags {"defrag"}} {
+ if {[string match {*jemalloc*} [s mem_allocator]]} {
+ test "Active defrag" {
+ r config set activedefrag no
+ r config set active-defrag-threshold-lower 5
+ r config set active-defrag-ignore-bytes 2mb
+ r config set maxmemory 100mb
+ r config set maxmemory-policy allkeys-lru
+ r debug populate 700000 asdf 150
+ r debug populate 170000 asdf 300
+ set frag [s mem_fragmentation_ratio]
+ assert {$frag >= 1.7}
+ r config set activedefrag yes
+ after 1500 ;# active defrag tests the status once a second.
+ set hits [s active_defrag_hits]
+
+ # wait for the active defrag to stop working
+ set tries 0
+ while { True } {
+ incr tries
+ after 500
+ set prev_hits $hits
+ set hits [s active_defrag_hits]
+ if {$hits == $prev_hits} {
+ break
+ }
+ assert {$tries < 100}
+ }
+
+ # TODO: we need to expose more accurate fragmentation info
+ # i.e. the allocator used and active pages
+ # instead we currently look at RSS so we need to ask for purge
+ r memory purge
+
+ # Test the the fragmentation is lower and that the defragger
+ # stopped working
+ set frag [s mem_fragmentation_ratio]
+ assert {$frag < 1.55}
+ set misses [s active_defrag_misses]
+ after 500
+ set misses2 [s active_defrag_misses]
+ assert {$misses2 == $misses}
+ }
+ }
+ }
+}