Hi,
On 28.01.2019, at 03:45, Eliot Miranda eliot.miranda@gmail.com wrote:
[…]
By "the image" I assume you mean the SqueakSource server image. But opening the file takes very little time. Original web-sites were .html files, remember how fast those were? Plus, filesystems "cache" file contents into their own internal caches anyway...
Each file uses one external semaphore, each socket uses three. If you use a default image, there can be no more than 256 external semaphores which is ridiculous for a server, and it'll just grind to a halt when some load arrives. Every time the external semaphore table is full, a GC is triggered to try clear it up via the finalization process. Reading a file into memory is slow, writing it to a socket is slow. (Compared to nginx which uses sendfile to let the kernel handle that). And Squeak can only use a single process to handle everything.
That’s configurable. Alas because writing lock-free table growth is not easy the external semaphore table doesn’t grow automatically. But the vm does allow its size to be specified in a value cached in the image header and read at startup (IIRC). So we could easily have a 4K entry external semaphore table.
[…]
Eliot, can you give an example invocation so we can add that to the server? -t