Table of Contents
mt.mem_alloc size [unit]
mt.mem_free [size] [unit]
mt.mem_used [unit]
mt.mem_rnd_alloc min max total [unit]
mt.mem_test_start min max total min_int max_int total_time
[unit]
mt.mem_test_stop id
mt.mem_test_destroy id
mt.mem_test_destroy_all id
mt.mem_test_list [id] [unit]
mt.lock_test [executions]
List of Examples
memory in the config file
mem_check_content in the config file
mem_check_content at runtime via kamctl
message in the config file
message_data in the config file
message_file in the config file
lock_threads_mode in the config file
men_alloc usagemem_free usagemt_tcp_thread_exec usagemt_lock_test usagemt_lock_threads usagemt_lock_threads usagemt.mem_alloc usagemt.mem_free usagemt.mem_used usagemt.mem_rnd_alloc usagemt.mem_test_start usagemt.mem_test_stop usagemt.mem_test_destroy usagemt.mem_test_destroy_all usagemt.mem_test_list usageTable of Contents
mt.mem_alloc size [unit]
mt.mem_free [size] [unit]
mt.mem_used [unit]
mt.mem_rnd_alloc min max total [unit]
mt.mem_test_start min max total min_int max_int total_time
[unit]
mt.mem_test_stop id
mt.mem_test_destroy id
mt.mem_test_destroy_all id
mt.mem_test_list [id] [unit]
mt.lock_test [executions]
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.
This module should never be used in a production environment.
Initialize for memory testing. Set it to 1 to prepare the memory testing.
Default: 0 (off).
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.2.
Set mem_check_content in the config file
...
modparam("misctest", "mem_check_content", 1)
...
Example 1.3.
Set mem_check_content at runtime via kamctl
... $ kamctl rpc cfg.seti misctest mem_check_content 1 ...
Initialize and perform message testing.
Default: 0 (off).
Set SIP message data for testing.
Default: NULL (not set).
Example 1.5.
Set message_data in the config file
...
modparam("misctest", "message_data", "...")
...
Allocates size bytes.
This is a debugging function for simulating memory leaks or stressing the memory allocator. It should not be used in production setups
Frees all the memory allocated with mem_alloc() up to this point.
This is a debugging function for simulating memory leaks or stressing the memory allocator. It should not be used in production setups
Print the text via the tcp main process threads.
This is a debugging function for simulating execution on tcp main process threads. It should not be used in production setups
Lock and unlock the global lock count times.
This is a debugging function for simulating locking and unlocking of global lock. It should not be used in production setups
Creates a set of threads that try to use the internal lock (see also lock_threads_mode parameter).
This is a debugging function to do locking and unlocking of an internal global lock from threads. It should not be used in production setups.
Unlock the internal global lock used by mt_lock_threads(). It is done nrops-times.
This is a debugging function to do locking and unlocking of an internal global lock from threads. It should not be used in production setups.
Allocates the specified number of bytes.
unit is optional and can be one of:
b - bytes
k - KB
m - MB
g - GB
Frees at least size bytes from the memory
allocated by other misctest 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
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
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).
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 1.18.
mt.mem_test_start usage
$ kamctl rpc mt.mem_test_start 15 64 25000 128 1500 3600000 k 1
Stops the test identified by id.
Destroys the test identified by id
(besides stopping it, it also frees all the data, including the
statistics).
Destroys all the running or stopped tests.
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 1.22.
mt.mem_test_list usage
$ kamcmd 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
}
The mt.lock_test RPC command performs a lock/unlock stress test using a global lock. It is primarily intended for debugging and performance testing of the locking subsystem.
Usage:
kamctl rpc mt.lock_test [executions]
executions (integer): Number of times to lock and unlock.
If the argument is provided, it must be a positive integer. If if the argument is not a positive integer, the command will return an error.
Example:
kamctl rpc mt.lock_test 10000
This will perform 10,000 lock/unlock operations.