System information¶
This example shows how to get system information (memory usage, cpu usage and temperature) from the board.
Demo¶
Example script output
Ddr used / total - 0.13 / 414.80 MiB
Cmx used / total - 2.24 / 2.50 MiB
LeonCss heap used / total - 4.17 / 46.41 MiB
LeonMss heap used / total - 2.87 / 27.58 MiB
Chip temperature - average: 38.59, css: 39.81, mss: 37.71, upa: 38.65, dss: 38.18
Cpu usage - Leon CSS: 7.08%, Leon MSS: 1.48 %
----------------------------------------
Ddr used / total - 0.13 / 414.80 MiB
Cmx used / total - 2.24 / 2.50 MiB
LeonCss heap used / total - 4.17 / 46.41 MiB
LeonMss heap used / total - 2.87 / 27.58 MiB
Chip temperature - average: 38.59, css: 39.58, mss: 37.94, upa: 38.18, dss: 38.65
Cpu usage - Leon CSS: 1.55%, Leon MSS: 0.30 %
----------------------------------------
Ddr used / total - 0.13 / 414.80 MiB
Cmx used / total - 2.24 / 2.50 MiB
LeonCss heap used / total - 4.17 / 46.41 MiB
LeonMss heap used / total - 2.87 / 27.58 MiB
Chip temperature - average: 38.94, css: 40.04, mss: 38.18, upa: 39.35, dss: 38.18
Cpu usage - Leon CSS: 0.56%, Leon MSS: 0.06 %
----------------------------------------
Ddr used / total - 0.13 / 414.80 MiB
Cmx used / total - 2.24 / 2.50 MiB
LeonCss heap used / total - 4.17 / 46.41 MiB
LeonMss heap used / total - 2.87 / 27.58 MiB
Chip temperature - average: 39.46, css: 40.28, mss: 38.88, upa: 39.81, dss: 38.88
Cpu usage - Leon CSS: 0.51%, Leon MSS: 0.06 %
----------------------------------------
upa
represents the temperature of the SHAVE blockdss
represents the temperature of the DDR subsystem
Setup¶
Please run the install script to download all required dependencies. Please note that this script must be ran from git context, so you have to download the depthai-python repository first and then run the script
git clone https://github.com/luxonis/depthai-python.git
cd depthai-python/examples
python3 install_requirements.py
For additional information, please follow installation guide
Source code¶
Also available on GitHub
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #!/usr/bin/env python3
import cv2
import depthai as dai
def printSystemInformation(info):
m = 1024 * 1024 # MiB
print(f"Ddr used / total - {info.ddrMemoryUsage.used / m:.2f} / {info.ddrMemoryUsage.total / m:.2f} MiB")
print(f"Cmx used / total - {info.cmxMemoryUsage.used / m:.2f} / {info.cmxMemoryUsage.total / m:.2f} MiB")
print(f"LeonCss heap used / total - {info.leonCssMemoryUsage.used / m:.2f} / {info.leonCssMemoryUsage.total / m:.2f} MiB")
print(f"LeonMss heap used / total - {info.leonMssMemoryUsage.used / m:.2f} / {info.leonMssMemoryUsage.total / m:.2f} MiB")
t = info.chipTemperature
print(f"Chip temperature - average: {t.average:.2f}, css: {t.css:.2f}, mss: {t.mss:.2f}, upa: {t.upa:.2f}, dss: {t.dss:.2f}")
print(f"Cpu usage - Leon CSS: {info.leonCssCpuUsage.average * 100:.2f}%, Leon MSS: {info.leonMssCpuUsage.average * 100:.2f} %")
print("----------------------------------------")
# Create pipeline
pipeline = dai.Pipeline()
# Define source and output
sysLog = pipeline.create(dai.node.SystemLogger)
linkOut = pipeline.create(dai.node.XLinkOut)
linkOut.setStreamName("sysinfo")
# Properties
sysLog.setRate(1) # 1 Hz
# Linking
sysLog.out.link(linkOut.input)
# Connect to device and start pipeline
with dai.Device(pipeline) as device:
# Output queue will be used to get the system info
qSysInfo = device.getOutputQueue(name="sysinfo", maxSize=4, blocking=False)
while True:
sysInfo = qSysInfo.get() # Blocking call, will wait until a new data has arrived
printSystemInformation(sysInfo)
|
Also available on GitHub
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #include <iostream>
// Includes common necessary includes for development using depthai library
#include "depthai/depthai.hpp"
void printSystemInformation(dai::SystemInformation info) {
printf("Ddr used / total - %.2f / %.2f MiB\n", info.ddrMemoryUsage.used / (1024.0f * 1024.0f), info.ddrMemoryUsage.total / (1024.0f * 1024.0f));
printf("Cmx used / total - %.2f / %.2f MiB\n", info.cmxMemoryUsage.used / (1024.0f * 1024.0f), info.cmxMemoryUsage.total / (1024.0f * 1024.0f));
printf("LeonCss heap used / total - %.2f / %.2f MiB\n",
info.leonCssMemoryUsage.used / (1024.0f * 1024.0f),
info.leonCssMemoryUsage.total / (1024.0f * 1024.0f));
printf("LeonMss heap used / total - %.2f / %.2f MiB\n",
info.leonMssMemoryUsage.used / (1024.0f * 1024.0f),
info.leonMssMemoryUsage.total / (1024.0f * 1024.0f));
const auto& t = info.chipTemperature;
printf("Chip temperature - average: %.2f, css: %.2f, mss: %.2f, upa: %.2f, dss: %.2f\n", t.average, t.css, t.mss, t.upa, t.dss);
printf("Cpu usage - Leon CSS: %.2f %%, Leon MSS: %.2f %%\n", info.leonCssCpuUsage.average * 100, info.leonMssCpuUsage.average * 100);
printf("----------------------------------------\n");
}
int main() {
// Create pipeline
dai::Pipeline pipeline;
// Define source and output
auto sysLog = pipeline.create<dai::node::SystemLogger>();
auto xout = pipeline.create<dai::node::XLinkOut>();
xout->setStreamName("sysinfo");
// Properties
sysLog->setRate(1.0f); // 1 hz updates
// Linking
sysLog->out.link(xout->input);
// Connect to device and start pipeline
dai::Device device(pipeline);
// Output queue will be used to get the system info
auto qSysInfo = device.getOutputQueue("sysinfo", 4, false);
while(true) {
auto sysInfo = qSysInfo->get<dai::SystemInformation>();
printSystemInformation(*sysInfo);
}
return 0;
}
|