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)" >>>> ] >>>> }
