1. Basic usage[edit source]
When an animation is running on the display, the related framerate can be monitored from the display driver[1] level thanks to the command:
(while true; do export fps=`cat /sys/kernel/debug/dri/0/state | grep fps -m1 | grep -o '[0-9]\+'`; echo display ${fps}fps; sleep 4; done) &
The display framerate is then periodically output in the user console in "fps" (frames per second):
display 50fps display 50fps display 50fps
2. Advanced usage[edit source]
The display can be composed of several layers which can be refreshed independently. Associated framerates can be monitored from the display driver[1] level thanks to the command:
(while true; do cat /sys/kernel/debug/dri/0/state | sed -nE '/user|plane-/p' | sed -e ':a;N;$!ba;s/\n\t//g;s/user_updates=/ /g;s/plane-/display layer/g;' | sed -e 's/^.\{,11\}//g'; sleep 4; done) &
The display layer framerates are then periodically output in the user console in "fps" (frames per second):
display layer0 60fps display layer1 25fps display layer2 30fps
3. Tips[edit source]
- Stop monitoring the display framerate with the command "kill -9 `ps -o ppid= -C sleep`". This command may not work depending on your system configuration (busybox ps features, sh shell configuration...). Alternative method is to use the command "fg" followed by "CTRL+C" in your terminal.
- Debugfs[2] configuration needs to be enabled in order to be able to monitor the display framerate thanks to the DRM/KMS framework[1] debug directory "/sys/kernel/debug/dri".
- Adjust the display framerate update period by modifying the "sleep" value (4 seconds in the above examples).
- Use the dmesg[3] command "dmesg -n8" to mix both user and kernel console outputs.
4. References[edit source]