|
@@ -0,0 +1,230 @@
|
|
|
+1. malloc_test Module
|
|
|
+
|
|
|
+Andrei Pelinescu-Onciul
|
|
|
+
|
|
|
+ iptelorg GmbH
|
|
|
+
|
|
|
+ Copyright © 2010 iptelorg GmbH
|
|
|
+ Revision History
|
|
|
+ Revision $Revision$ $Date$
|
|
|
+ __________________________________________________________________
|
|
|
+
|
|
|
+ 1.1. Overview
|
|
|
+ 1.2. Parameters
|
|
|
+
|
|
|
+ 1.2.1. check_content
|
|
|
+
|
|
|
+ 1.3. Functions
|
|
|
+
|
|
|
+ 1.3.1. mt_mem_alloc(size)
|
|
|
+ 1.3.2. mt_mem_free()
|
|
|
+
|
|
|
+ 1.4. malloc_test RPC Functions
|
|
|
+
|
|
|
+ 1.4.1. mt.mem_alloc size [unit]
|
|
|
+ 1.4.2. mt.mem_free [size] [unit]
|
|
|
+ 1.4.3. mt.mem_used [unit]
|
|
|
+ 1.4.4. mt.mem_rnd_alloc min max total [unit]
|
|
|
+ 1.4.5. mt.mem_test_start min max total min_int max_int total_time
|
|
|
+ [unit]
|
|
|
+
|
|
|
+ 1.4.6. mt.mem_test_stop id
|
|
|
+ 1.4.7. mt.mem_test_destroy id
|
|
|
+ 1.4.8. mt.mem_test_destroy_all id
|
|
|
+ 1.4.9. mt.mem_test_list [id] [unit]
|
|
|
+
|
|
|
+1.1. Overview
|
|
|
+
|
|
|
+ This is a debugging/test module. It implements functions (both script
|
|
|
+ and rpcs) that can be used to stress the memory allocator or force
|
|
|
+ memory leaks.
|
|
|
+
|
|
|
+Warning
|
|
|
+
|
|
|
+ This module should never be used in a production environment.
|
|
|
+
|
|
|
+1.2. Parameters
|
|
|
+
|
|
|
+ Revision History
|
|
|
+ Revision $Revision$ $Date$
|
|
|
+
|
|
|
+1.2.1. check_content
|
|
|
+
|
|
|
+ When doing the tests, check also for the possibility of the memory
|
|
|
+ being overwritten. When activated, the allocated memory will be filled
|
|
|
+ with a special pattern, that will be checked on free.
|
|
|
+
|
|
|
+ Default: 0 (off).
|
|
|
+
|
|
|
+ It can be changed also at runtime, via the rpc interface.
|
|
|
+
|
|
|
+ Example 1. Set check_content in the config file
|
|
|
+modparam("malloc_test", "check_content", 1)
|
|
|
+
|
|
|
+ Example 2. Set check_content at runtime via sercmd
|
|
|
+$ sercmd cfg.set_now_int malloc_test check_content 1
|
|
|
+
|
|
|
+1.3. Functions
|
|
|
+
|
|
|
+ Revision History
|
|
|
+ Revision $Revision$ $Date$
|
|
|
+
|
|
|
+1.3.1. mt_mem_alloc(size)
|
|
|
+
|
|
|
+ Allocates size bytes.
|
|
|
+
|
|
|
+Note
|
|
|
+
|
|
|
+ This is a debugging function for simulating memory leaks or stressing
|
|
|
+ the memory allocator. It should not be used in production setups
|
|
|
+
|
|
|
+ Example 3. men_alloc usage
|
|
|
+...
|
|
|
+mem_alloc(1048576); # 1MB
|
|
|
+...
|
|
|
+
|
|
|
+1.3.2. mt_mem_free()
|
|
|
+
|
|
|
+ Frees all the memory allocated with mem_alloc() up to this point.
|
|
|
+
|
|
|
+Note
|
|
|
+
|
|
|
+ This is a debugging function for simulating memory leaks or stressing
|
|
|
+ the memory allocator. It should not be used in production setups
|
|
|
+
|
|
|
+ Example 4. mem_free usage
|
|
|
+...
|
|
|
+mem_free();
|
|
|
+...
|
|
|
+
|
|
|
+1.4. malloc_test RPC Functions
|
|
|
+
|
|
|
+ Revision History
|
|
|
+ Revision $Revision$ $Date$
|
|
|
+
|
|
|
+1.4.1. mt.mem_alloc size [unit]
|
|
|
+
|
|
|
+ Allocates the specified number of bytes. unit is optional and can be
|
|
|
+ one of:
|
|
|
+ * b - bytes
|
|
|
+ * k - KB
|
|
|
+ * m - MB
|
|
|
+ * g - GB
|
|
|
+
|
|
|
+ Example 5. mt.mem_alloc usage
|
|
|
+ $ sercmd mt.mem_alloc 10 k
|
|
|
+
|
|
|
+1.4.2. mt.mem_free [size] [unit]
|
|
|
+
|
|
|
+ Frees at least size bytes from the memory allocated by other
|
|
|
+ malloc_test functions (e.g. mt.mem_alloc).
|
|
|
+
|
|
|
+ size is optional. If missing, everything will be freed.
|
|
|
+
|
|
|
+ unit is optional and can be one of:
|
|
|
+ * b - bytes
|
|
|
+ * k - KB
|
|
|
+ * m - MB
|
|
|
+ * g - GB
|
|
|
+
|
|
|
+ Example 6. mt.mem_free usage
|
|
|
+ $ sercmd mt.mem_free 1 m
|
|
|
+
|
|
|
+1.4.3. mt.mem_used [unit]
|
|
|
+
|
|
|
+ Returns/displays how many bytes are allocated. The default unit is
|
|
|
+ bytes (for all the possible units see above).
|
|
|
+
|
|
|
+ unit is optional and can be one of:
|
|
|
+ * b - bytes
|
|
|
+ * k - KB
|
|
|
+ * m - MB
|
|
|
+ * g - GB
|
|
|
+
|
|
|
+ Example 7. mt.mem_used usage
|
|
|
+ $ sercmd mt.mem_used
|
|
|
+9221460
|
|
|
+
|
|
|
+1.4.4. mt.mem_rnd_alloc min max total [unit]
|
|
|
+
|
|
|
+ Allocates total_size memory, in pieces of random size between min ..
|
|
|
+ max (inclusive). unit is optional and represents the unit for all the
|
|
|
+ given sizes (see above).
|
|
|
+
|
|
|
+ Example 8. mt.mem_rnd_alloc usage
|
|
|
+ $ sercmd mt.mem_rnd_alloc 1 64 10240 k
|
|
|
+
|
|
|
+1.4.5. mt.mem_test_start min max total min_int max_int total_time [unit]
|
|
|
+
|
|
|
+ Starts a malloc test that will take total_time to execute. Memory
|
|
|
+ allocations will be performed at intervals randomly chosen between
|
|
|
+ min_int and max_int (in ms). Each allocation will have a randomly
|
|
|
+ chosen size between min and max unit bytes. After total unit bytes are
|
|
|
+ allocated, everything is released/freed again and the allocations are
|
|
|
+ restarted. All the times are expressed in milliseconds. unit is
|
|
|
+ optional and represents the unit for all the given sizes (see above).
|
|
|
+
|
|
|
+ Several tests can be run in parallel.
|
|
|
+
|
|
|
+ Returns the test id.
|
|
|
+
|
|
|
+ Example 9. mt.mem_test_start usage
|
|
|
+ $ sercmd mt.mem_test_start 15 64 25000 128 1500 3600000 k
|
|
|
+1
|
|
|
+
|
|
|
+1.4.6. mt.mem_test_stop id
|
|
|
+
|
|
|
+ Stops the test indentified by id.
|
|
|
+
|
|
|
+ Example 10. mt.mem_test_stop usage
|
|
|
+ $ sercmd mt.mem_test_stop 1
|
|
|
+
|
|
|
+1.4.7. mt.mem_test_destroy id
|
|
|
+
|
|
|
+ Destroys the test indentified by id (besides stopping it, it also frees
|
|
|
+ all the data, including the statistics).
|
|
|
+
|
|
|
+ Example 11. mt.mem_test_destroy usage
|
|
|
+ $ sercmd mt.mem_test_destroy 1
|
|
|
+
|
|
|
+1.4.8. mt.mem_test_destroy_all id
|
|
|
+
|
|
|
+ Destroys all the running or stopped tests.
|
|
|
+
|
|
|
+ Example 12. mt.mem_test_destroy_all usage
|
|
|
+ $ sercmd mt.mem_test_destroy_all
|
|
|
+
|
|
|
+1.4.9. mt.mem_test_list [id] [unit]
|
|
|
+
|
|
|
+ Returns/displays data about the test identified by id, or if no id is
|
|
|
+ specified, it lists all the tests (running or stopped).
|
|
|
+
|
|
|
+ unit is optional. The default is is bytes (for all the possible units
|
|
|
+ see above).
|
|
|
+
|
|
|
+ Example 13. mt.mem_test_list usage
|
|
|
+ $ sercmd mt.mem_test_list
|
|
|
+{
|
|
|
+ ID : 2
|
|
|
+ run time (s) : 1471
|
|
|
+ remaining (s): 2128
|
|
|
+ allocations : 1749
|
|
|
+ errors : 24
|
|
|
+ overflows : 2
|
|
|
+ total alloc : 69614530
|
|
|
+ min : 15360
|
|
|
+ max : 65536
|
|
|
+ total : 25600000
|
|
|
+}
|
|
|
+{
|
|
|
+ ID : 1
|
|
|
+ run time (s) : 3600
|
|
|
+ remaining (s): 0
|
|
|
+ allocations : 4268
|
|
|
+ errors : 640
|
|
|
+ overflows : 4
|
|
|
+ total alloc : 144220713
|
|
|
+ min : 15360
|
|
|
+ max : 65536
|
|
|
+ total : 29696000
|
|
|
+}
|