Git Product home page Git Product logo

softlab-ntua / bencherl Goto Github PK

View Code? Open in Web Editor NEW
53.0 19.0 23.0 154.15 MB

A scalability benchmark suite for Erlang/OTP

Home Page: http://release.softlab.ntua.gr/bencherl/

Makefile 0.60% Erlang 73.41% Shell 2.58% ApacheConf 0.17% Perl 0.03% Ruby 1.40% HTML 2.66% Java 12.59% PigLatin 0.01% Gnuplot 0.01% CSS 0.83% Diff 0.04% JavaScript 2.20% Python 1.30% TeX 2.16% Awk 0.01% OpenEdge ABL 0.01%

bencherl's Issues

Compile ui error on OTP 17

I try to make ui and it show:
Compile Error, "src/lib/rfc4627.erl" -> [{"/home/haimh/git/softlab-ntua/bencherl/ui/bencherlui/src/lib/rfc4627.erl",[{382,erl_parse,["syntax error before: ","unsigned"]}]}]
11:28:46.427 [error] Load Module Error lib_modules : [[{"/home/haimh/git/softlab-ntua/bencherl/ui/bencherlui/src/lib/rfc4627.erl",[{382,erl_parse,["syntax error before: ","unsigned"]}]}]]
11:28:46.723 [error] Compile Error, "src/controller/bencherlui_results_controller.erl" -> [{"/home/haimh/git/softlab-ntua/bencherl/ui/bencherlui/src/controller/bencherlui_results_controller.erl",[{137,erl_parse,["syntax error before: ","length"]}]}]
11:28:46.723 [error] Load Module Error controller_modules : [[{"/home/haimh/git/softlab-ntua/bencherl/ui/bencherlui/src/controller/bencherlui_results_controller.erl",[{137,erl_parse,["syntax error before: ","length"]}]}]]

web-ui incompatible with Erlang/OTP R16B

Kjell's nice UI currently needs to be compiled and started with an older version of Erlang.

For now, a workaround is to change the otp version used for bencherl after starting the UI.

bencherl fails to produce correct data file with mawk

When using mawk 1.3.3 bencherl fails with the following error message after running the ets_bench benchmark:

awk: run time error: not enough arguments passed to printf("(delwait,"mixed=l:0.00%,=u:100.00%=131072"-[ordered_set,14,15,17,1.0,rw,1,{0,0,0}])")
FILENAME="-" FNR=1 NR=1

The problem seems to be the percentage sign. The result is that at least one data file is not produced correctly. It could be fixed by replacing all % signs with %% in the strings that are printed with awk's printf function. Everything works correctly when using gnu awk 4.1.0 instead of mawk.

issues in ets_test benchmark

See bencherl/bench/ets_test/src/ets_test.erl for the referenced code.

main bug in ets_test

The ets_test microbenchmark has a severe bug that is not catched by bencherl:
When running concurrently, the w-workers will inserts numbers from N down to 1, while the r-workers will lookup these same values from N down to 1.
If one r-worker does this faster, the match in line 75 will fail, and the worker process wil crash (badmatch). This will then bring the main Process down, as they are linked, and subsequently bring the entire benchmark to a hold.
bencherl does not catch that the benchmark application crashed, which probably could be changed to find such errors more easily on future benchmark applications.
Thus this benchmark currently measures how long it takes for a r-worker to overtake all w-workers.

The easiest way to solve this problem would be to just remove the match in line 75, but reversing lines 65 and 66 would also be an option. However, this would change the semantics of the benchmark even more than the easier change.

other problems

Another problem with the ets_test benchmark is that it uses
T = ets:new(x, [public]),
in line 43, which creates an ETS table of type set with read_concurrency and write_concurrency both set to false.
This somewhat counteracts any kind of scaling behaviour expected from this benchmark.

As there are more issues to the usefulness of this benchmark, like all workers having the exactly same access pattern to the table, the long term solution maybe is to replace it with some more expressive ETS benchmarks. I will create a pull request for mine once it is stable.

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.