I went to try this to see how it might perform on AWS Lambda but I’m guessing 
there isn’t a minimal 64 bit image right? 

Sven - was this a 32bit image from get.pharo.org/70-minimal? 
<http://get.pharo.org/70-minimal?>

Tim

> On 30 Jun 2017, at 14:43, Sven Van Caekenberghe <[email protected]> wrote:
> 
>> 
>> On 27 Jun 2017, at 21:15, Sven Van Caekenberghe <[email protected]> wrote:
>> 
>> 
>>> On 27 Jun 2017, at 21:00, Esteban A. Maringolo <[email protected]> wrote:
>>> 
>>> Interesting experiment.
>>> 
>>> It would be good to know how fast does the image boot and start
>>> execution in the context of a service billed at the sub second scale.
>> 
>> Sadly I have the impression we lost some speed:
>> 
>> ~/pharo64$ ./pharo Pharo.image printVersion
>> [version] 6.0 #60499
>> 
>> ~/pharo64$ time ./pharo Pharo.image eval '42 factorial'
>> 1405006117752879898543142606244511569936384000000000
>> 
>> real 0m1.276s
>> user 0m0.985s
>> sys  0m0.171s
>> 
>> while before
>> 
>> ~/pharo/build$ ../bin/pharo Pharo.image printVersion
>> [version] 4.0 #40620
>> 
>> $ time ../bin/pharo Pharo.image eval '42 factorial'
>> 1405006117752879898543142606244511569936384000000000
>> 
>> real 0m0.526s
>> user 0m0.434s
>> sys  0m0.045s
>> 
>> But it is really hard to find the cause.
> 
> The good news is that the Pharo 7 minimal core is way faster
> 
> $ time ./pharo ~/Downloads/Pharo7.0-core-32bit-b649ac6.image eval "42 
> factorial"
> 1405006117752879898543142606244511569936384000000000
> 
> real  0m0.262s
> user  0m0.132s
> sys   0m0.062s
> 
> Which is good of course ! 
> 
>> That being said, these lambda servers can only work well if they keep 
>> instances alive for longer when there is enough traffic.
>> 
>>> Esteban A. Maringolo
>>> 
>>> 
>>> 2017-06-27 13:05 GMT-03:00 Tim Mackinnon <[email protected]>:
>>>> Hi - I am trying to run a pharo image in lambda (as an experiment) - 
>>>> however
>>>> I get an error from Pharo about not being able to write to the changes 
>>>> file?
>>>> 
>>>> As I am just evaluating some code - I’m not really coding, so don’t need a
>>>> changes file - is there a command line option to not require it?
>>>> 
>>>> Also, am I running pharo the most efficient way - I’m using eval on the
>>>> command line and referencing a class with a class method - but is this the
>>>> best way?
>>>> 
>>>> Thanks,
>>>> 
>>>> Tim
>>>> 
>>>> "errorMessage": "Command failed: ./pharo Pharo.image eval \"Lambda
>>>> processJSON:
>>>> '{\"key3\":\"value3\",\"key2\":\"value2\",\"key1\":\"value1\"}'\"\n'Pharo
>>>> cannot write to the changes file named /var/task/Pharo.changes.\n\nPlease
>>>> check that you have write permission for this file.\n\nYou won''t be able 
>>>> to
>>>> save this image correctly until you fix this.'\n\u001b[31mError: Can't find
>>>> the requested
>>>> origin\n\u001b[0mUnixResolver(PlatformResolver)>>cantFindOriginError\n[ 
>>>> self
>>>> cantFindOriginError ] in
>>>> UnixResolver(PlatformResolver)>>directoryFromEnvVariableNamed: in Block: [
>>>> self cantFindOriginError
>>>> ]\nUnixResolver(PlatformResolver)>>directoryFromEnvVariableNamed:or:\nUnixResolver(PlatformResolver)>>directoryFromEnvVariableNamed:\nUnixResolver>>home\n[
>>>> self home / '.config' ] in UnixResolver>>preferences in Block: [ self home 
>>>> /
>>>> '.config'
>>>> ]\nUnixResolver(PlatformResolver)>>directoryFromEnvVariableNamed:or:\nUnixResolver>>preferences\nUnixResolver(FileSystemResolver)>>resolve:\nSystemResolver(FileSystemResolver)>>unknownOrigin:\nSystemResolver(FileSystemResolver)>>resolve:\nInteractiveResolver>>unknownOrigin:\n[
>>>> self unknownOrigin: origin ] in InteractiveResolver>>resolve: in Block: [
>>>> self unknownOrigin: origin
>>>> ]\nIdentityDictionary(Dictionary)>>at:ifAbsent:\nInteractiveResolver>>resolve:\nFileLocator>>resolve\nFileLocator(AbstractFileReference)>>exists\nGlobalIdentifierStonPersistence(GlobalIdentifierPersistence)>>shouldCallPreviousPersistence\nGlobalIdentifierStonPersistence(GlobalIdentifierPersistence)>>ensure:\nGlobalIdentifier>>ensure\nGlobalIdentifier
>>>> class>>initializeUniqueInstance\nGlobalIdentifier
>>>> class>>uniqueInstance\nSystemSettingsPersistence
>>>> class>>resumeSystemSettings\n[ :persistence | persistence
>>>> resumeSystemSettings ] in PharoCommandLineHandler>>runPreferences in Block:
>>>> [ :persistence | persistence resumeSystemSettings
>>>> ...etc...\nBlockClosure>>cull:\nSystemDictionary(Dictionary)>>at:ifPresent:\nSmalltalkImage>>at:ifPresent:\nPharoCommandLineHandler>>runPreferences\nPharoCommandLineHandler>>activate\nPharoCommandLineHandler
>>>> class(CommandLineHandler class)>>activateWith:\n\u001b[0m",
>>>> "errorType": "Error",
>>>> "stackTrace": [
>>>>  "'Pharo cannot write to the changes file named
>>>> /var/task/Pharo.changes.",
>>>>  "",
>>>>  "Please check that you have write permission for this file.",
>>>>  "",
>>>>  "You won''t be able to save this image correctly until you fix this.'",
>>>>  "\u001b[31mError: Can't find the requested origin",
>>>>  "\u001b[0mUnixResolver(PlatformResolver)>>cantFindOriginError",
>>>>  "[ self cantFindOriginError ] in
>>>> UnixResolver(PlatformResolver)>>directoryFromEnvVariableNamed: in Block: [
>>>> self cantFindOriginError ]",
>>>>  "UnixResolver(PlatformResolver)>>directoryFromEnvVariableNamed:or:",
>>>>  "UnixResolver(PlatformResolver)>>directoryFromEnvVariableNamed:",
>>>>  "UnixResolver>>home",
>>>>  "[ self home / '.config' ] in UnixResolver>>preferences in Block: [ self
>>>> home / '.config' ]",
>>>>  "UnixResolver(PlatformResolver)>>directoryFromEnvVariableNamed:or:",
>>>>  "UnixResolver>>preferences",
>>>>  "UnixResolver(FileSystemResolver)>>resolve:",
>>>>  "SystemResolver(FileSystemResolver)>>unknownOrigin:",
>>>>  "SystemResolver(FileSystemResolver)>>resolve:",
>>>>  "InteractiveResolver>>unknownOrigin:",
>>>>  "[ self unknownOrigin: origin ] in InteractiveResolver>>resolve: in
>>>> Block: [ self unknownOrigin: origin ]",
>>>>  "IdentityDictionary(Dictionary)>>at:ifAbsent:",
>>>>  "InteractiveResolver>>resolve:",
>>>>  "FileLocator>>resolve",
>>>>  "FileLocator(AbstractFileReference)>>exists",
>>>> 
>>>> "GlobalIdentifierStonPersistence(GlobalIdentifierPersistence)>>shouldCallPreviousPersistence",
>>>>  "GlobalIdentifierStonPersistence(GlobalIdentifierPersistence)>>ensure:",
>>>>  "GlobalIdentifier>>ensure",
>>>>  "GlobalIdentifier class>>initializeUniqueInstance",
>>>>  "GlobalIdentifier class>>uniqueInstance",
>>>>  "SystemSettingsPersistence class>>resumeSystemSettings",
>>>>  "[ :persistence | persistence resumeSystemSettings ] in
>>>> PharoCommandLineHandler>>runPreferences in Block: [ :persistence |
>>>> persistence resumeSystemSettings ...etc...",
>>>>  "BlockClosure>>cull:",
>>>>  "SystemDictionary(Dictionary)>>at:ifPresent:",
>>>>  "SmalltalkImage>>at:ifPresent:",
>>>>  "PharoCommandLineHandler>>runPreferences",
>>>>  "PharoCommandLineHandler>>activate",
>>>>  "PharoCommandLineHandler class(CommandLineHandler
>>>> class)>>activateWith:",
>>>>  "\u001b[0m",
>>>>  "ChildProcess.exithandler (child_process.js:204:12)",
>>>>  "emitTwo (events.js:106:13)",
>>>>  "ChildProcess.emit (events.js:191:7)",
>>>>  "maybeClose (internal/child_process.js:886:16)",
>>>>  "Process.ChildProcess._handle.onexit (internal/child_process.js:226:5)"
>>>> ]
>>>> }

Reply via email to