[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [MirageOS-devel] Size of MirageOS, too big now?

  • To: Hiroshi Doyu <hiroshi.doyu@xxxxxxxxxxxx>
  • From: Anil Madhavapeddy <anil@xxxxxxxxxx>
  • Date: Wed, 13 Feb 2019 10:25:12 -0800
  • Cc: "mirageos-devel@xxxxxxxxxxxxxxxxxxxx" <mirageos-devel@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Wed, 13 Feb 2019 18:25:30 +0000
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=recoil.org; h=content-type :mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; q=dns; s= selector1; b=SsycqRf+d+vusGTKCqjTxVoFVsUTfsa9F+zkVboXCKM32QmM48L tEsv5l8nt+iDY7r9xiZJqSZTOqtG/AkckImzfcKLgOstvfrXLN8UdfrhfmJTvWAV J7bOlxJwATnZE1JOfCHx0i6KXic7vPGf3WMdt0JNGwjpVPuIyTdBo2Vk=
  • List-id: Developer list for MirageOS <mirageos-devel.lists.xenproject.org>

From a quick look at the symbol map, I suspect that moving the OS module
to module aliases and Dune virtual_modules will help eliminate some hard
dependencies.  The 500KB->960KB isn’t too far off the mark; there are links
to Ipaddr and Lwt that would account for the increase.

It would be helpful to know what you’re aiming for — as small as possible
without a performance hit? Bytecode (as we experimented with in the ASPLOS
paper) is very slow for production use, and so hasn’t been maintained in
ocaml-freestanding.  For native, how small is small enough for your purposes?


> On 13 Feb 2019, at 00:01, Hiroshi Doyu <hiroshi.doyu@xxxxxxxxxxxx> wrote:
> Hi,
> I'm trying to reduce the size of MirageOS so that it could run on some
> resource constraint MCUs with appropriate backend implemented, where
> the smaller the better.
> I read the following info:
> - http://anil.recoil.org/papers/2013-asplos-mirage.pdf (bytecode)
> - https://discuss.ocaml.org/t/reducing-mirageos-image-size-using-ocamlc
> lean/2481
> And tried "-use-lto"(4.06.1+lto switch) with tweaking mirage code to
> enable lto as:
> https://gist.github.com/ehirdoy/461731eb55b6c567a8018c1cc66ab26f
> For Mirage-skelton, "noop.hvt" after stripped, it's 960KB. It was 
>   -rwxrwxr-x 1 ehirdoy ehirdoy 2498544 Feb 13 07:40 noop.hvt # w/o lto
>   -rwxrwxr-x 1 ehirdoy ehirdoy 2271256 Feb 13 07:40 noop.hvt # stripped
>   -rwxrwxr-x 1 ehirdoy ehirdoy 1124080 Feb 13 07:44 noop.hvt # w/ lto
>   -rwxrwxr-x 1 ehirdoy ehirdoy 982056 Feb 13 07:44 noop.hvt  # stripped
> This 982056B(960KB) look still too big even if it's a native "noop". I
> heard that it used to be 500KB previously. I attached the output of
> "nm" command to list all symbols in this binary. Is there something
> wrong here?
> Here are some questions:
> (1) Why is "noop.hvt"(native w/ lto) 960KB after stripped?
> (2) How can I dynamically enable "-use-lto" in Mirage build?
>     Can OCAMLPARAM do? If so what to set in?
> (3) Can I still build MirageOS as bytecode now?
> (4) Is there any "ocamlclean" equivalent tool for native code?
> Any hint would be really appreciated.
> <noop.hvt.map>_______________________________________________
> MirageOS-devel mailing list
> MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
> https://lists.xenproject.org/mailman/listinfo/mirageos-devel

MirageOS-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.