version of rtslib-fb is 2.1.58
It seems that when I have a new BlockStorageObject created, it has memory leak.
code:
def create_block_storage(name, dev):
if not name or not dev:
return -1
rv = 0
disk = get_block_storage(name)
if disk is not None:
return 99
try:
disk = BlockStorageObject(name, dev)
except:
rv = 2
return rv
def delete_block_storage(name):
if not name:
return -1
disk = get_block_storage(name)
if disk is None:
return 99
disk.delete()
return 0
def get_block_storage(name):
if not name:
return None
disk = None
try:
disk = BlockStorageObject(name)
except:
disk = None
return disk
def memory_usage_psutil():
# return the memory usage in MB
import psutil
process = psutil.Process(os.getpid())
mem = process.get_memory_info()[1]
return mem
iqn = "iqn.2000-01.org.iders:target1"
name = "bs1"
dev = "/dev/sdb"
ip = "0.0.0.0";
tag = 1
port = 3333
auth = 0
port2 = 4444
auth2 = 1
rv = 0
while True:
rv = 0;
rv += create_block_storage(name, dev)
rv += create_iscsi_target(iqn)
rv += create_target_tpg(iqn, tag, ip, port, auth, "", "")
rv += set_target_tpg_ip_port(iqn, tag, ip, port2);
rv += set_target_tpg_authentication(iqn, tag, auth2, "dong", "1234")
rv += add_lun_in_tpg(iqn, tag, name)
rv += remove_lun_from_tpg(iqn, tag, name)
rv += delete_target_tpg(iqn, tag)
rv += delete_iscsi_target(iqn)
rv += delete_block_storage(name)
print "rv:",rv
print "vms:",memory_usage_psutil()
time.sleep(1)
the "vms" get increased.
if I comment out "rv += delete_block_storage(name)", it won't have memory
leak(vms keeps in constant) because it only create a new "BlockStorageObject"
once.