Live data from Hacker News

My OTP 21 Highlights

blog.erlang.org

11–19 of 19 posts

Re: My OTP 21 Highlights

#11
7.5% speed gain from BEAMJIT. 2.8x faster file ops because of dirty nifs support. Multiple poll sets. This is good stuff, I can't wait to benchmark it and play with it!

Re: My OTP 21 Highlights

#12
post #2

> Also it is now possible to open device files using file:open Anyone want to write a high-performance, highly distributed object store in a BEAM language?

Based on my time at Basho observing and assisting with the development of Riak[1], I don't think you'll get the performance you want from built-in I/O, even with the new dirty scheduler support. We (well, primarily Matthew Von-Maszewski) spent countless hours optimizing LevelDB as the most performant backend for most use cases. You'd be much better off building atop Riak than starting your own object store from scrat…

Ha! I wonder whether all them Brexiteers knew that they weren't just saving the NHS but also Riak!

Re: My OTP 21 Highlights

#13
>>>> While working on the BEAMJIT development I’ve been looking a lot at the luajit project and what Mike Pall has done both in the JIT but also in the interpreter. Inspired by this and some other ideas that we got from the BEAMJIT project we decided it was time to do a major overhaul of the way that the BEAM interpreter is created

As a long time Openresty (luajit) user, I have always feel a deep admiration for Mike Pall's work. After reading this, more so.

Re: My OTP 21 Highlights

#14
post #11

7.5% speed gain from BEAMJIT. 2.8x faster file ops because of dirty nifs support. Multiple poll sets. This is good stuff, I can't wait to benchmark it and play with it!

I was unsure what nifs referred to, is it Native Implemented Functions? [0]

[0] http://erlang.org/doc/tutorial/nif.html

Re: My OTP 21 Highlights

#15
post #14
post #11

7.5% speed gain from BEAMJIT. 2.8x faster file ops because of dirty nifs support. Multiple poll sets. This is good stuff, I can't wait to benchmark it and play with it!

I was unsure what nifs referred to, is it Native Implemented Functions? [0] [0] http://erlang.org/doc/tutorial/nif.html

Yes. The problem earlier was that NIFs had a maximum runtime of 1 millisecond before they needed to store their work and return control to BEAM, to avoid blocking the BEAM schedulers. Dirty NIFs refer to NIFs that can run for longer, on special dirty schedulers, without affecting the stability of the BEAM system.

Re: My OTP 21 Highlights

#16
post #2

> Also it is now possible to open device files using file:open Anyone want to write a high-performance, highly distributed object store in a BEAM language?

Based on my time at Basho observing and assisting with the development of Riak[1], I don't think you'll get the performance you want from built-in I/O, even with the new dirty scheduler support. We (well, primarily Matthew Von-Maszewski) spent countless hours optimizing LevelDB as the most performant backend for most use cases. You'd be much better off building atop Riak than starting your own object store from scrat…

Having said that, Martin Sumner with the NHS created a Leveldb replacement in Erlang with some impressive performance characteristics before the latest BEAM I/O enhancements.

https://github.com/martinsumner/leveled

Re: My OTP 21 Highlights

#17
post #2

> Also it is now possible to open device files using file:open Anyone want to write a high-performance, highly distributed object store in a BEAM language?

Based on my time at Basho observing and assisting with the development of Riak[1], I don't think you'll get the performance you want from built-in I/O, even with the new dirty scheduler support. We (well, primarily Matthew Von-Maszewski) spent countless hours optimizing LevelDB as the most performant backend for most use cases. You'd be much better off building atop Riak than starting your own object store from scrat…

Correction: Basho's repository is still canonical. https://github.com/basho/riak/

Re: My OTP 21 Highlights

#18
post #2

> Also it is now possible to open device files using file:open Anyone want to write a high-performance, highly distributed object store in a BEAM language?

Based on my time at Basho observing and assisting with the development of Riak[1], I don't think you'll get the performance you want from built-in I/O, even with the new dirty scheduler support. We (well, primarily Matthew Von-Maszewski) spent countless hours optimizing LevelDB as the most performant backend for most use cases. You'd be much better off building atop Riak than starting your own object store from scrat…

I doubt for most distributed object stores (with consistency or availability guarantees), performance is bottlenecked by the underlying filesystem access. Probably, network latency runs the show.

Re: My OTP 21 Highlights

#19

Earlier quoted context omitted.

Based on my time at Basho observing and assisting with the development of Riak[1], I don't think you'll get the performance you want from built-in I/O, even with the new dirty scheduler support. We (well, primarily Matthew Von-Maszewski) spent countless hours optimizing LevelDB as the most performant backend for most use cases. You'd be much better off building atop Riak than starting your own object store from scrat…

I doubt for most distributed object stores (with consistency or availability guarantees), performance is bottlenecked by the underlying filesystem access. Probably, network latency runs the show.

To what degree that's true depends significantly on use case and architectural choices.

One design error we made with Riak in its early days was shuffling data around the servers via distributed Erlang, which led to some serious performance bottlenecks.

Distributed Erlang is better used for control messages; large blocks of data should be distributed out of band.

Nonetheless, our customers regularly needed assistance with disk tuning, because disk access does matter quite a bit.

Post reply on HN