added memstat to both core/scale

This commit is contained in:
Marc Mance
2024-07-31 12:47:11 -04:00
parent 6c1bcae724
commit 53a01c6c89

View File

@@ -82,6 +82,94 @@ def scaleIostat_cpu():
print(f"Error running command: {collect}") print(f"Error running command: {collect}")
def convert_to_megabytes(data_size):
try:
unit = data_size[-1].upper()
size = data_size[:-1]
size = float(size)
except (ValueError, AttributeError):
return None
unit_map = {
"K": 1 / (1024**1),
"M": 1,
"G": 1024,
"T": 1024**2,
}
if unit not in unit_map:
return None
return int(size * unit_map[unit])
def scaleMemstat():
command = ["top", "-n", "1"]
filename = "memStat.csv"
collect = runCollect(command)
if collect:
mem = re.search("Mem :.*", collect).group()
mem = re.sub("^.*Mem..", "", mem.strip())
mem = re.sub("[total|free|used|buff.cache|,]", "", mem.strip()).split()
meminmeg = []
for x in mem:
meminmeg.append(convert_to_megabytes(f"{int(x)}M"))
mem = meminmeg
mem_wired = mem[0]
mem_free = mem[1]
mem_active = mem[2]
mem_inactive = mem[3]
lineData = [mem_active, mem_inactive, mem_wired, mem_free]
if lineData:
with open(filename, "a", newline="") as csvfile:
csv_writer = csv.writer(csvfile)
lineData.insert(0, "mem")
lineData.insert(0, getTimestamp())
csv_writer.writerow(lineData)
else:
print(f"Error running command: {collect}")
def coreMemstat():
command = ["top", "-n", "1"]
filename = "memStat.csv"
collect = runCollect(command)
if collect:
mem = re.search("Mem:.*", collect).group()
mem = re.sub("Mem.", "", mem.strip())
mem = re.sub("[Active|Inact|Wired|Free|,]", "", mem.strip()).split()
meminmeg = []
for x in mem:
meminmeg.append(convert_to_megabytes(x))
mem = meminmeg
mem_active = mem[0]
mem_inactive = mem[1]
mem_wired = mem[2]
mem_free = mem[3]
lineData = [mem_active, mem_inactive, mem_wired, mem_free]
if lineData:
with open(filename, "a", newline="") as csvfile:
csv_writer = csv.writer(csvfile)
lineData.insert(0, "mem")
lineData.insert(0, getTimestamp())
csv_writer.writerow(lineData)
else:
print(f"Error running command: {collect}")
def ifstat(): def ifstat():
command = ["ifstat", "-znq", "1", "1"] command = ["ifstat", "-znq", "1", "1"]
@@ -193,17 +281,18 @@ def collect_data(minutes):
if is_debian(): if is_debian():
scaleIostat_cpu() scaleIostat_cpu()
scaleIostat_disk() scaleIostat_disk()
scaleMemstat()
if is_freebsd(): if is_freebsd():
coreCPUstat() coreCPUstat()
coreMemstat()
if i == minutes: if i == minutes:
print("")
break break
time.sleep(60) time.sleep(60)
print("")
# kill gstat if freebsd # kill gstat if freebsd
if is_freebsd(): if is_freebsd():
process.kill() process.kill()