[erlang-questions] Light-weight operating systems supporting Erlang in production web servers

Joe Armstrong erlang@REDACTED
Sat Sep 16 11:29:03 CEST 2017


Old timer here :-)

Just out of interest how large is Apline? (in MB?)

Just out of interest the last time I made a minimal erlang is ended up
at 4.7 MB -
with the following files (and sizes)

> /Dropbox/experiments/erlang_embedded/tiny_erl_19.1 > tree -s

├── [      11859]  COPYRIGHT
├── [        238]  bin
│   ├── [    2827272]  beam.smp
│   ├── [      22580]  erl_child_setup
│   ├── [      53548]  erlexec
│   ├── [       5479]  start.boot
│   └── [       6459]  start.script
├── [        896]  erl
└── [        204]  lib
    ├── [     429496]  compiler-7.0.2.ez
    ├── [     387430]  kernel-5.1.ez
    ├── [     109322]  sasl-3.0.1.ez
    └── [     806013]  stdlib-3.1.ez

The biggest file is beam.smp -- I guess with a little static analysis
many of the files
in stdlib and kernel could be removed.

In the 'old days' the size to beat was 1.44 MB (ie a floppy disk) - we
did actually have
an entire OS + Erlang that fitted onto a single floppy disk.

I also recall a time when linux kernels were so small that a
knowledgeable person knew what every file in the system did.

I also believe that "small is fast and secure"
loading/storing/cacheing MBs of *anything* is
a thousand times faster than loading/storing/caching GBs.

Security is possible (though difficult) with MBs of code - and I guess
impossible with GB

Cheers

/Joe


On Fri, Sep 15, 2017 at 10:48 PM, Tristan Sloughter <t@REDACTED> wrote:
> Same, and I have an example multi-stage docker file for building the image
> on Alpine for an example project:
> https://github.com/SpaceTime-IoT/presence-sample/blob/master/Dockerfile It
> also uses all the options relx supports to shrink the size of the tarball
> https://github.com/SpaceTime-IoT/presence-sample/blob/master/rebar.config#L26-L34
>
> One feature relx doesn't yet support that may help a little with size of the
> unpacked release would be compressed applications (.ez). Pretty sure that is
> what reltool would do by default? Not sure how much it saves.
>
> Also, it is possible to use docker scratch* to have no real base image, but
> with Alpine being so small I don't think it saves enough to be worth it --
> esp considering everything you then don't have, as Phil mentioned.
>
> * And some hacks, copying over libs and a linker. Or a statically linked
> Erlang? Never done it with a statically linked Erlang, would that work with
> SSL?
>
> --
>   Tristan Sloughter
>   "I am not a crackpot" - Abe Simpson
>   t@REDACTED
>
>
> On Fri, Sep 15, 2017, at 10:14 AM, Phil Toland wrote:
>
> I second the vote for Alpine Linux. My application is a mix of Erlang and
> Elixir and runs in Docker containers. I use Alpine as the base and I get
> reasonably sized containers that don't have anything I don't need.
>
> As a side note, it isn't just about providing the necessary support to run
> the BEAM VM. I also want enough of a familiar environment (ls, ps, top,
> nslookup/dig, netstat) to troubleshoot issues. Alpine provides that without
> the other stuff that you don't need.
>
> ~phil
>
>
>
> On September 15, 2017 at 9:47:00 AM, felixgallo@REDACTED
> (felixgallo@REDACTED) wrote:
>
>
>
>
> FreeBSD and alpine Linux have both served me well.
>
> F.
>
> On Sep 15, 2017, at 7:20 AM, Lloyd R. Prentice <lloyd@REDACTED>
> wrote:
>
> Hi,
>
> Joe Armstrong states in his 2003 Doctor of Technology thesis:
>
> "Our system has very little need of an operating system. We make use of very
> few operating system services, thus it is relatively easy to port our system
> to specialised environments such as embedded systems."
>
> As a one-time Forth developer, software bloat offends me. I sigh and use
> Ubuntu on my development system out laziness and convenience.
>
> But I would like my production servers to be lean and mean.
>
> What light weight open-source off-the shelf operating systems would
> battle-hardened Erlang gurus recommend?
>
> All the best,
>
> LRP
>
>
> Sent from my iPad
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions
>



More information about the erlang-questions mailing list