Creating the smallest server runtime footprint

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
21 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Creating the smallest server runtime footprint

Tim Mackinnon
I wasn’t clear on which image to retry - the https://ci.inria.fr/pharo/job/Pharo-6.0-Update-Step-3.2-Minimal/lastSuccessfulBuild/artifact/Pharo-minimal-64.zip one still shows as being last updated 7 days ago.

The https://ci.inria.fr/pharo/view/6.0-SysConf/job/Pharo-6.0-Step-04-01-ConfigurationOfMinimalPharo/ one gives me a mismatch error: This interpreter (vers. 68021) cannot read image file (vers. 6521).


25 UndefinedObject(Object)>>doesNotUnderstand: #addTo:
26 MCRepositoryGroup>>addRepository:
27 createRepository
  | repo |
  repo := self project createRepository: self.
  ^ MCRepositoryGroup default repositories
    detect: [ :each | each = repo ]
    ifNone: [ 
      MCRepositoryGroup default addRepository: repo.
      repo ] in MetacelloRepositorySpec>>createRepository

I think this is because the image doesn’t support Metacello? As in:
Metacello new
repository: '<a href="filetree://../src" class="">filetree://../src';
baseline: 'Lambda';
load.

How do you guys load things into the minimal images (I thought you used Metacello - but maybe you do it some other way?)

I can use a big 6.1 image fine (as it has Metacello loaded) but I’d really like a minimal solution - that can load in libraries like AWS S3, or XML parsing etc. and it seems like I should be a good customer for kicking the tires on all of this.

Tim

On 31 Jul 2017, at 14:42, Pavel Krivanek <[hidden email]> wrote:



2017-07-31 15:28 GMT+02:00 Tim Mackinnon <[hidden email]>:
Ok (I am reading there is a lot going on for you guys to sort out at the moment).

It sounds like a more stable conversion of Pharo 6.1 for 64 bit would be best to give me a stable platform to run on.

In that minimal image - what can I rely on to load code (in trying the 7.0 version it seems like Gofer isn’t there, and I’m now wondering if Metacello isn’t there either) - so I’m wondering how you guys load baselinesOf of configurationsOf?

Try it again, there was a bug in the job configuration

.. Pavel
 

Tim

On 31 Jul 2017, at 14:17, Pavel Krivanek <[hidden email]> wrote:

H Tim

2017-07-31 15:07 GMT+02:00 Tim Mackinnon <[hidden email]>:
Hi Pavel - I’m just revisiting a few of your previous messages on minimal images as I’m trying to get things working again with Pharo 6.1 now that you guys have rejigged all of the build pipelines.

I tried a previous suggestion of:

For Pharo 6: https://ci.inria.fr/pharo/job/Pharo-6.0-Update-Step-3.2-Minimal/lastSuccessfulBuild/artifact/Pharo-minimal-64.zip

However the Pharo 6 version is no longer being built, and it doesn’t seem to work well with the newer 64bit vm (? I seem to get a load error that I didn’t have before - although its possible that I’m loading a new pre-req with metacello and this is tipping it over the edge).

Anyway - a prev suggestion for 6.x from you was:
However this is a 32bit image. Is there an equivalent 64bit image for 6.1?  OR should I use the Pharo 7 one for now (I guess the minimal image will probably be pretty stable for a little while as I’m sure the action is higher up the chain?)

You should use an image that is bootstrapped, so version from SysConf jobs or Pharo 7. For Pharo 7 we are preparing a lot of big changes in the kernel so do not expect it will be stable. We can do a conversion job of of it to 64-bit version as soon as the CI infrastructure will be on knees again.

-- Pavel

 

Tim


On 15 Jul 2017, at 09:35, Pavel Krivanek <[hidden email]> wrote:

If you want to stay with Pharo 6 image, you can try the bootstrapped version of the minimal image:

-- Pavel

2017-07-15 10:33 GMT+02:00 Pavel Krivanek <[hidden email]>:
Try the Pharo 7 metacello image (=Pharo 7 minimal image that the CI is already converting to 64bit). There should be no problem with STON because whole Pharo is loaded into it using metacello and filetree. Pharo 6 minimal image is done differently (by shrinking) and not so well tested.

For the conversion of 32-bit image to 64-bit image you need a VMMaker image:
and then evaluate:
./pharo generator.image eval "[Spur32to64BitBootstrap new bootstrapImage: 'conversion.image'] on: AssertionFailure do: [ :fail | fail resumeUnchecked: nil ]"

-- Pavel



2017-07-15 10:19 GMT+02:00 Tim Mackinnon <[hidden email]>:
Hi Pavel - thanks for getting me to the point where I could even have a minimal image. As I’m on the edge of my Pharo knowledge here, I’ll try and run with this as best I can.

I’d been using the 6.0 image you suggested to me - but maybe I could use a 70 image with Pharo 6 for a while (until the VM diverges) right? 

The bit I haven’t quite understood however, is how the 64bit image is created - as your reference is to a 32bit version? Is the 64bit one converted from 32 in a later stage? (For AWS Lambda I need 64bit) - am I right in thinking the pipeline stage after this one is the one you sent me - and the travis.yml file shows me what it does? But I can’t see a trivis.yml in the conversion stage so I’m not sure how it does that. (Question - how do I see what the pipelines do to answer my own questions?)

I was hoping that there was a basic image that got me up to metacello baseline level to load git file tree packages/baselines  in my own repo as well baselines on the internet. The one you sent me is fairly close to that (its just missing STON in the image and seems to have an issue with resolving undeclared classes that get loaded in - should do a fogbugz on that?)

The follow-on from a metacello image is how we can get people to create better baselines that give you more minimal loading options (e.g. conditionally leave out the test cases perhaps)

Tim

On 15 Jul 2017, at 08:24, Pavel Krivanek <[hidden email]> wrote:

Hi Tim,

you can base the your work on the bootstrapped image, see https://ci.inria.fr/pharo/view/7.0/job/70-Bootstrap-32bit/, file Pharo7.0-core-*.zip 

This image does not have a lot of basic components like Monticello or network but it has a compiler so the code can be imported as *.st files. 
Then we have Pharo7.0-monticello-*.zip which will be easier to use and probably can fit your needs. Monticello and network support are included. But you cannot use baselines nor configurations to load your code.

-- Pavel

2017-07-14 9:59 GMT+02:00 Tim Mackinnon <[hidden email]>:
Hi - buoyed by the success of a minimal image (thanks Pavel), I'm wondering if I can get even smaller.

There are lots of .so's in the vm which wouldn't make sense on a server once deployed - sound, maybe libgit ...

Is there a list of the essential ones, or tips on what I can strip out of the Linux deployment? I also recall that i can leave out .sources and .changes as well right?

Tim

Sent from my iPhone



12