add cpu average

This commit is contained in:
Sergey Krashevich 2023-05-03 04:09:50 +03:00
parent f12a9ccf8c
commit 6fc6f20407
No known key found for this signature in database
GPG Key ID: 625171324E7D3856
2 changed files with 23 additions and 0 deletions

View File

@ -803,6 +803,26 @@ def get_cpu_stats() -> dict[str, dict]:
pid = process.info["pid"] pid = process.info["pid"]
try: try:
cpu_percent = process.info["cpu_percent"] cpu_percent = process.info["cpu_percent"]
with open(f"/proc/{pid}/stat", "r") as f:
stats = f.readline().split()
utime = int(stats[13])
stime = int(stats[14])
starttime = int(stats[21])
with open("/proc/uptime") as f:
system_uptime_sec = int(float(f.read().split()[0]))
clk_tck = os.sysconf(os.sysconf_names["SC_CLK_TCK"])
process_utime_sec = utime // clk_tck
process_stime_sec = stime // clk_tck
process_starttime_sec = starttime // clk_tck
process_elapsed_sec = system_uptime_sec - process_starttime_sec
process_usage_sec = process_utime_sec + process_stime_sec
cpu_average_usage = process_usage_sec * 100 // process_elapsed_sec
with open(f"/proc/{pid}/statm", "r") as f: with open(f"/proc/{pid}/statm", "r") as f:
mem_stats = f.readline().split() mem_stats = f.readline().split()
mem_res = int(mem_stats[1]) * os.sysconf("SC_PAGE_SIZE") / 1024 mem_res = int(mem_stats[1]) * os.sysconf("SC_PAGE_SIZE") / 1024
@ -814,6 +834,7 @@ def get_cpu_stats() -> dict[str, dict]:
usages[pid] = { usages[pid] = {
"cpu": str(cpu_percent), "cpu": str(cpu_percent),
"cpu_average": str(round(cpu_average_usage, 2)),
"mem": f"{mem_pct}", "mem": f"{mem_pct}",
} }
except: except:

View File

@ -359,12 +359,14 @@ export default function System() {
<Thead> <Thead>
<Tr> <Tr>
<Th>CPU %</Th> <Th>CPU %</Th>
<Th>AvgCPU %</Th>
<Th>Memory %</Th> <Th>Memory %</Th>
</Tr> </Tr>
</Thead> </Thead>
<Tbody> <Tbody>
<Tr key="ffmpeg" index="0"> <Tr key="ffmpeg" index="0">
<Td>{cpu_usages[processes[process]['pid']]?.['cpu'] || '- '}%</Td> <Td>{cpu_usages[processes[process]['pid']]?.['cpu'] || '- '}%</Td>
<Td>{cpu_usages[processes[process]['pid']]?.['cpu_average'] || '- '}%</Td>
<Td>{cpu_usages[processes[process]['pid']]?.['mem'] || '- '}%</Td> <Td>{cpu_usages[processes[process]['pid']]?.['mem'] || '- '}%</Td>
</Tr> </Tr>
</Tbody> </Tbody>