Quick hack to benchmark Raspberry Pi 2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python2 | |
# !!! IMPORTANT !!! | |
# This is just something I threw together when benchmarking my Raspberry Pi 2 | |
# don't expect it to work on anything else. | |
# Check out my blog post for more info: | |
# http://blog.kwarf.com/2015/02/arch-and-kodi-on-the-raspberry-pi-2/ | |
# The graphs in the post were generated using the following commands: | |
# rrdtool graph pinetwork.png -W http://blog.kwarf.com/2015/02/arch-and-kodi-on-the-raspberry-pi-2/ -s end-90s -e `rrdtool last pi.rrd` -w 900 -h 200 DEF:downbytes=pi.rrd:down:AVERAGE CDEF:down=downbytes,8,* AREA:down#00ff00:down DEF:upbytes=pi.rrd:up:AVERAGE CDEF:up=upbytes,8,* AREA:up#ff0000:up | |
# rrdtool graph picores.png -W http://blog.kwarf.com/2015/02/arch-and-kodi-on-the-raspberry-pi-2/ -s end-90s -e `rrdtool last pi.rrd` -w 900 -h 200 -l 0 -u 100 -r DEF:core0=pi.rrd:core0:AVERAGE LINE:core0#ff0000:core0 DEF:core1=pi.rrd:core1:AVERAGE LINE:core1#00ff00:core1 DEF:core2=pi.rrd:core2:AVERAGE LINE:core2#0000ff:core2 DEF:core3=pi.rrd:core3:AVERAGE LINE:core3#ffff00:core3 | |
# rrdtool graph piperf.png -W http://blog.kwarf.com/2015/02/arch-and-kodi-on-the-raspberry-pi-2/ -s end-90s -e `rrdtool last pi.rrd` -w 900 -h 200 -l 0 -u 100 -r DEF:core0=pi.rrd:core0:AVERAGE DEF:core1=pi.rrd:core1:AVERAGE DEF:core2=pi.rrd:core2:AVERAGE DEF:core3=pi.rrd:core3:AVERAGE CDEF:cpu=core0,core1,+,core2,+,core3,+,4,/ LINE:cpu#00ff00:cpu DEF:mem=pi.rrd:mem:AVERAGE LINE:mem#0000ff:mem DEF:temp=pi.rrd:temp:AVERAGE LINE:temp#ff0000:temp | |
import os | |
import psutil | |
import rrdtool | |
import threading | |
FILENAME = "pi.rrd" | |
def core_temp(): | |
path = "/sys/class/thermal/thermal_zone0/temp" | |
return int(open(path, "r").read()) / 1000 | |
def tick(): | |
threading.Timer(1, tick).start() | |
cpu = psutil.cpu_percent(percpu=True) | |
mem = psutil.phymem_usage().percent | |
temp = core_temp() | |
net = psutil.network_io_counters(pernic=True).get("eth0") | |
down = net.bytes_recv | |
up = net.bytes_sent | |
update_string = "N:{}:{}:{}:{}:{}:{}:{}:{}".format( | |
cpu[0], cpu[1], cpu[2], cpu[3], mem, temp, down, up | |
) | |
rrdtool.update(FILENAME, update_string) | |
# Create RRD database for 1 second log interval, 90 samples (1.5 minute) | |
rrdtool.create( | |
FILENAME, | |
"--step", "1", | |
"DS:core0:GAUGE:2:0:100", | |
"DS:core1:GAUGE:2:0:100", | |
"DS:core2:GAUGE:2:0:100", | |
"DS:core3:GAUGE:2:0:100", | |
"DS:mem:GAUGE:2:0:100", | |
"DS:temp:GAUGE:2:0:100", | |
"DS:down:COUNTER:2:U:U", | |
"DS:up:COUNTER:2:U:U", | |
"RRA:AVERAGE:0.5:1:90" | |
) | |
tick() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment