algoritim schedule from linux nptl

Eric Wong normalperson at yhbt.net
Thu Jun 9 02:52:11 EDT 2011


Alexandre Riveira <alexandre at objectdata.com.br> wrote:
> As a matter of contract a customer of ours can have only one worker
> / multi threaded server.

That sucks.  Rainbows! works best with multiple worker processes
for CPU/memory-bound concurrency (as long as you have enough
memory/cores).

> In such cases, when a large report is generated using 100% of
> processing other requests are waiting in cases of multiple
> simultaneous requests however small the simultaneity is normal
> 
> Got a decrease in time using a kernel with ck patch (https: / /
> wiki.archlinux.org/index.php/Kernel26-ck) in the order of 12 seconds
> down to 3 seconds but this is not ideal.

How fast is the large report generation if there's only one simultaneous
request?  That's the fastest it'll ever be unless you optimize
the report generation code itself (and not the scheduling/concurrency).

> Does anyone know how the schedule works in linux and that you can
> adjust the schedule of linux?

Matz Ruby 1.9 is entirely at the mercy of Linux scheduler (a good
thing IMHO).

Unless your report generator is written to release the GVL (in C), you
won't get any CPU-bound concurrency with Ruby 1.9 threads.  Fortunately
the API for releasing the GVL is pretty good (even if most of the
documentation means reading thread.c comments in the Ruby source.

-- 
Eric Wong


More information about the rainbows-talk mailing list