Git Product home page Git Product logo

buildfarm_perf_tests's Introduction

About

The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it's all open source. Full project details on ROS.org

Getting Started

Looking to get started with ROS? Our installation guide is here. Once you've installed ROS start by learning some basic concepts and take a look at our beginner tutorials.

Join the ROS Community

Community Resources

Developer Resources

Project Resources

ROS is made possible through the generous support of open source contributors and the non-profit Open Source Robotics Foundation (OSRF). Tax deductible donations to the OSRF can be made here.

buildfarm_perf_tests's People

Contributors

ahcorde avatar cottsay avatar dirk-thomas avatar eduponz avatar ivanpauno avatar jparisu avatar sloretz avatar wjwwood avatar y-okumura-isp avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

buildfarm_perf_tests's Issues

Provide color consistency of plots

Currently the plots can be quite confusing to read as the colors are often close enough to not be able to distinguish at a quick glance. But even harder is that between two plots in the same result the color selection for the different implementations are inconsistent between side by side plots.

For example at: http://build.ros2.org/view/Eci/job/Eci__nightly-performance_ubuntu_bionic_amd64/plot/

The rmw_connext is yellow for the first 2 and last 2 graphs, but for the middle 2 FastRTPS is yellow.

Implementing a consistent coloring would be really helpful for quick reading of the graphs. They all have the same 7 items in the legend.

ROS 2 Performance test

  • Static load - create one process and spin for 1 minute
    • x86_64/EC2
DDS Process 1
rmw_fastrtps_cpp ✔️
rmw_opensplice_cpp ✔️
rmw_cyclonedds_cpp ✔️
rmw_fastrtps_dynamic_cpp ✔️
rmw_connext_cpp ✔️
  • Simple pub/sub - create two processes, the publisher publishes a 1kArray every 200ms, for 30 seconds (150 messages in total)
    • x86_64/EC2
Publisher/Subscriber rmw_fastrtps_cpp rmw_opensplice_cpp rmw_cyclonedds_cpp rmw_fastrtps_dynamic_cpp rmw_connext_cpp
rmw_fastrtps_cpp ✔️ ✔️ ✔️ ✔️ ✔️
rmw_opensplice_cpp ✔️ ✔️ ✔️ ✔️ ✔️
rmw_cyclonedds_cpp ✔️ ✔️ ✔️ ✔️ ✔️
rmw_fastrtps_dynamic_cpp ✔️ ✔️ ✔️ ✔️ ✔️
rmw_connext_cpp ✔️ ✔️ ✔️ ✔️ ✔️

Metrics

  • CPU usage per-process collected every 1 second
  • Virtual Memory usage per-process collected every 1 second
  • Physical Memory usage per-process collected every 1 second

Per-Test Data

  • [Graph] metrics variation over time for 1 test run.
    • X = time, Y = metric value
  • [Text] Test summary with per-process aggregated values: mean/median/P95
    • Text report / log output
    • *Metrics should not be aggregated between processes.

Over-Time Data

  • [Graph] Variation of the metrics commit-after-commit
  • X = commit ID, Y = aggregated metric value (mean/median/P95)
  • One graph per process.
  • Each value on X axis means a “run” of the job on a particular commit. Not all commits need to be
    evaluated.

Test failures in Foxy, Eloquent and Dashing

As commented in this issue #21 (comment) there are some test failing

Dashing

It is not working yet.

Eloquent

Foxy

The latest Foxy build shows numerous test failures: http://build.ros2.org/view/Fci/job/Fci__nightly-performance_ubuntu_focal_amd64/10/testReport/

Refactor test/C

refactor the calls to get_filename_component, configure_file, add_launch_test, etc... into a new function.

Re-enable perf jobs on build.ros2.org

The performance testing jobs that were running on build.ros2.org have temporarily been made private while the test suite is improved to provide more informative results and avoid potential confusion or premature conclusions from the preliminary results. The test suite remains available for anyone to use.

The jobs will be made public again after the following issues have been addressed:

  • add additional performance tests covering more usage scenarios

    • for example: varying the message sizes, publish frequency, and number of entities involved
  • improve the visibility of context surrounding the test results

    • make sure this information is prominently displayed next to graphs
    • include more details about each scenario, e.g., how data were gathered, what QoS settings were used, other important factors in the test
  • resolve known discrepancies between rmw implementations

add CycloneDDS to Two Processes Test Results

Refactor test/CMakeLists.txt

As discussed here #14 we should refactor the calls to get_filename_component, configure_file, add_launch_test, etc... into a new function.

System resource usage collection

Hi @ahcorde @cottsay,

While comparing the ROS 2 performance test tools here there were some questions about different approaches used by each tool to collect the system resources.

It seems that buildfarm_perf_tests use system_metric_collector to collect the system data (#12), while performance_test uses getrusage (see analysis_result.cpp). I think it makes sense to re-use an existing tool such as system_metric_collector and join efforts to add new features there. First, I would like understand what are the pros and cons of each approach. Hopefully, this could be a step forward to reduce divergences between all the exiting tools.

cc @fadi-labib @SniderThanYou

fail to build and test according to README

I compared several benchmark programs before (ros-realtime/community#6) to discuss real-time tests. Additionally, I hope we can use this repository to compare the performances between several machines (for example, to answer what machine we should use).

Now, I am trying to build&run buildfarm_perf_test on my Raspberry Pi4 and found some lacks in README.md.
If my memory is correct, they happened when I tried to build&run before.

OS: Ubuntu 20.04-raspi
ROS2: build, master
buildfarm_perf_test: build, master(bc4e002)

  1. build failure
    1. boost not found
    2. -D option error: PERF_TEST_MAX_RUNTIME or PERF_TEST_TOPIC. Their name has been chaned at 5d88c11, for example.
  2. test failue
    1. pandas and matplotlib not found althogh I set up my RPi4 with https://index.ros.org/doc/ros2/Installation/Rolling/Linux-Development-Setup/ or README.md. (launch_test.py: error: No module named 'matplotlib' for example)
    2. colcon test -D option at README.md (colcon test: error: argument --packages-select: unrecognized argument: -DPERF_TEST_MAX_RUNTIME=30 for example)

I'm going to send PR after this.

Thank you.

Can't convert raw/csv to images manually

The functions _raw_to_csv and _raw_to_png are called directly from the test which prevent the user to e.g. run the test manually (a publisher and subscriber on two machines) and then call a script to generate the graphs.

Build failure in performance_test on Dashing

In file included from performance_test/performance_test/src/data_running/data_runner_factory.cpp:28:0:
performance_test/performance_test/src/data_running/../communication_abstractions/fast_rtps_communicator.hpp: In member function ‘void performance_test::FastRTPSCommunicator<Topic>::update_subscription()’:
performance_test/performance_test/src/data_running/../communication_abstractions/fast_rtps_communicator.hpp:213:21: error: ‘class eprosima::fastrtps::Subscriber’ has no member named ‘wait_for_unread_samples’; did you mean ‘waitForUnreadMessage’?
       m_subscriber->wait_for_unread_samples({3, 0});
                     ^~~~~~~~~~~~~~~~~~~~~~~
                     waitForUnreadMessage

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.