Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ArgumentError: Data object has already been freed #3003

Closed
tmornini opened this issue Apr 4, 2014 · 3 comments
Closed

ArgumentError: Data object has already been freed #3003

tmornini opened this issue Apr 4, 2014 · 3 comments

Comments

@tmornini
Copy link
Contributor

tmornini commented Apr 4, 2014

Hey all.

I wanted you to know that our app is now running fairly cleanly in local development on my laptop!

Congratulations: this is the first time I've seen Rubinius 2.2.6 outperform 2.1.1, with Rubinius clocking in at 676 req/second and 2.1.1 at 428 req/second.

Rubinius serves nearly 58% more req/sec!

Rubinius used around 2.3x as much CPU capacity as MRI did, so 2.1.1 remains more processor efficient, but it sure is nice to to see Rubinius doing more work by using more cores, and knowing that it can only get better from here.

I distinctly remember Rubinius being hundreds of times slowing that MRI back in the day! :-)

The only issues that currently stand in the way of deploying on Rubinius are:

  1. Rubinius + examples/websockets.rb leads to "ArgumentError: Data object has already been freed" on master intermittently celluloid/reel#136
  2. Rubinius memory use appeared to be ever expanding, exceeding 700MB at the end of the run, whereas 2.1.1 quickly grew to 45MB and was rock steady at that number for the rest of the run

Finally, while it wouldn't prevent me from deploying, it's interesting to note the longest transaction times number, where 2.1.1 has a 50ms(ish) maximum request duration, compared to Rubinius' 150ms(isn) max

Ruby 2.1.1

v3 $ siege -c 4 -b -r 125000 -q "http://0.0.0.0:3000/v3/orgs POST < payload.json"
      done.

Transactions:         500000 hits
Availability:         100.00 %
Elapsed time:        1167.65 secs
Data transferred:       124.93 MB
Response time:            0.01 secs
Transaction rate:       428.21 trans/sec
Throughput:           0.11 MB/sec
Concurrency:            3.98
Successful transactions:      500000
Failed transactions:             0
Longest transaction:          0.05
Shortest transaction:         0.00

Rubinius 2.2.6

ruby: 2.1.1 | master *%
v3 $ siege -c 4 -b -r 125000 -q "http://0.0.0.0:3000/v3/orgs POST < payload.json"
      done.

Transactions:         500000 hits
Availability:         100.00 %
Elapsed time:         739.19 secs
Data transferred:       124.93 MB
Response time:            0.01 secs
Transaction rate:       676.42 trans/sec
Throughput:           0.17 MB/sec
Concurrency:            3.98
Successful transactions:      500000
Failed transactions:             0
Longest transaction:          0.15
Shortest transaction:         0.00
@tmornini
Copy link
Contributor Author

tmornini commented Apr 6, 2014

Here's some more information on celluloid/reel#136, including reproducible example, output from siege, and exceptions involved for both 2.1.1 and Rubinius 2.2.6: https://gist.github.com/tmornini/9986499

@tmornini tmornini changed the title Congrats ArgumentError: Data object has already been freed Apr 9, 2014
@tmornini
Copy link
Contributor Author

tmornini commented Apr 9, 2014

@tmornini
Copy link
Contributor Author

I see this issue on JRuby as well, so closing this out as a Rubinius issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant