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?

Tim

On 30 Jun 2017, at 14:43, Sven Van Caekenberghe <sven@stfx.eu> wrote:


On 27 Jun 2017, at 21:15, Sven Van Caekenberghe <sven@stfx.eu> wrote:


On 27 Jun 2017, at 21:00, Esteban A. Maringolo <emaringolo@gmail.com> 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 <tim@testit.works>:
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)"
]
}