Skip to content

figure out what made startup of the connector slow #74

@ensonic

Description

@ensonic

Prepare:

# stop the connector
sudo systemctl stop openrobertalab
# eventually delete update to simplify measurements
rm -rf /home/robot/.local/lib/python/roberta/

Run

strace -e file -o /tmp/strace.log -ttt /usr/bin/openrobertalab

then download it and analyze:

scp robot@ev3dev.local:/tmp/strace.log ./
# remove everything after SIGINT
~/bin/plot-timeline-strace.py strace.log -o strace.png

Stats for which syscalls take how much time.

strace -e file -o /tmp/strace.log -c /usr/bin/openrobertalab
cat /tmp/strace.log 
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 59.60    0.051897         200       259         6 open
 40.40    0.035181          37       961       151 stat64
  0.00    0.000000           0         3         1 execve
  0.00    0.000000           0        36        36 access
  0.00    0.000000           0         1         1 mkdir
  0.00    0.000000           0         4         2 readlink
  0.00    0.000000           0         1         1 statfs
  0.00    0.000000           0        13         1 lstat64
  0.00    0.000000           0         2         2 statfs64
  0.00    0.000000           0        38         2 openat
------ ----------- ----------- --------- --------- ----------------
100.00    0.087078                  1318       203 total

Find the slowest calls

strace -e file -o /tmp/strace.log -r -ttt /usr/bin/openrobertalab

then download it and analyze:

scp robot@ev3dev.local:/tmp/strace.log ./strace.rel.log
# remove everything after SIGINT
sort -n strace.rel.log

To see all the files accessed sorted by path:

grep "open(" strace.rel.log | sed 's/open(/open (/' | sort -k 3

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions