On 14 Dec 2016, at 23:29, Vitor Medina Cruz <vitormcruz@gmail.com> wrote:
Pharo don't have non-blocking I/O?
It certainly does at the networking level, but some native code interfaces might not act so nice.
On Wed, Dec 14, 2016 at 6:59 PM, Ramon Leon <ramon.leon@allresnet.com> wrote: On 12/14/2016 12:09 PM, Esteban A. Maringolo wrote: Can you extend on suspending the UI process? I never did that.
I feed my images a start script on the command line
pharo-vm-nox \ -vm-sound-null -vm-display-null \ /var/pharo/app.image \ /var/pharo/startScript
startScript containing one line (among others) like so...
Project uiProcess suspend.
I'm on an older Pharo, but I presume the newer ones are the same or similar. No sense in wasting CPU on a UI in a headless image
Won't the idle use add up?
Sure eventually, but you don't run more than a 2 or so per core so that'll never be a problem. You shouldn't be running 5 images on a single core, let alone more.
In my case I served up to 20 concurrent users (out of ~100 total) with only 5 images. Plus another two images for the REST API. In a dual core server.
That's barely a server, most laptops these days have more cores. Rent a virtual server with a dozen or more cores, then you can run a few images per core without the idle mattering at all and run 2 dozen images in total per 12 core server.
Scale by adding cores and ram allowing you to run more images per box; or scale by running more boxes, ultimately, you need to spread out the load across many many cores.
-- Ramon Leon