[#88240] [Ruby trunk Feature#14759] [PATCH] set M_ARENA_MAX for glibc malloc — sam.saffron@...
Issue #14759 has been updated by sam.saffron (Sam Saffron).
[#88251] Re: [ruby-alerts:8236] failure alert on trunk@P895 (NG (r64134)) — Eric Wong <normalperson@...>
[email protected] wrote:
[#88305] [Ruby trunk Bug#14968] [PATCH] io.c: make all pipes nonblocking by default — normalperson@...
Issue #14968 has been reported by normalperson (Eric Wong).
[#88331] [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid — samuel@...
Issue #13618 has been updated by ioquatix (Samuel Williams).
[#88342] [Ruby trunk Feature#14955] [PATCH] gc.c: use MADV_FREE to release most of the heap page body — ko1@...
Issue #14955 has been updated by ko1 (Koichi Sasada).
[#88433] [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid — ko1@...
SXNzdWUgIzEzNjE4IGhhcyBiZWVuIHVwZGF0ZWQgYnkga28xIChLb2ljaGkgU2FzYWRhKS4KCgpX
a28xQGF0ZG90Lm5ldCB3cm90ZToKPiBJc3N1ZSAjMTM2MTggaGFzIGJlZW4gdXBkYXRlZCBieSBr
[#88475] [Ruby trunk Misc#14937] [PATCH] thread_pthread: lazy-spawn timer-thread only on contention — ko1@...
Issue #14937 has been updated by ko1 (Koichi Sasada).
[#88491] Re: [ruby-cvs:71466] k0kubun:r64374 (trunk): test_function.rb: skip running test — Eric Wong <normalperson@...>
[email protected] wrote:
SSBzZWUuIFBsZWFzZSByZW1vdmUgdGhlIHRlc3QgaWYgdGhlIHRlc3QgaXMgdW5uZWNlc3Nhcnku
Takashi Kokubun <[email protected]> wrote:
[#88523] [Ruby trunk Bug#14999] ConditionVariable doesn't reacquire the Mutex if Thread#kill-ed — eregontp@...
Issue #14999 has been updated by Eregon (Benoit Daloze).
[email protected] wrote:
[#88549] [Ruby trunk Bug#14999] ConditionVariable doesn't reacquire the Mutex if Thread#kill-ed — eregontp@...
Issue #14999 has been updated by Eregon (Benoit Daloze).
[#88676] [Ruby trunk Misc#15014] thread.c: use rb_hrtime_scalar for high-resolution time operations — ko1@...
Issue #15014 has been updated by ko1 (Koichi Sasada).
[email protected] wrote:
On 2018/08/27 16:16, Eric Wong wrote:
[#88716] Re: [ruby-dev:43715] [Ruby 1.9 - Bug #595] Fiber ignores ensure clause — Eric Wong <normalperson@...>
Koichi Sasada wrote:
[#88723] [Ruby trunk Bug#15041] [PATCH] cont.c: set th->root_fiber to current fiber at fork — ko1@...
Issue #15041 has been updated by ko1 (Koichi Sasada).
[#88767] [Ruby trunk Bug#15050] GC after forking with fibers crashes — ko1@...
Issue #15050 has been updated by ko1 (Koichi Sasada).
Koichi Sasada <[email protected]> wrote:
Koichi Sasada <[email protected]> wrote:
[#88774] Re: [ruby-alerts:8955] failure alert on trunk@P895 (NG (r64594)) — Eric Wong <normalperson@...>
[email protected] wrote:
[ruby-core:88484] Re: [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid
Koichi Sasada <[email protected]> wrote: > On 2018/08/14 9:42, Eric Wong wrote: > > I am thinking of adding preemption support to this feature for > > compatibility with 1.8 > > So that "auto-fiber" proposal is to provide green threads like Ruby 1.8? Yes; this was always the idea. > Like: > ``` > model 1: Userlevel Thread > Same as traditional ruby thread. > ``` > in thread.c comment (I wrote 13 years ago!). > > I don't against this idea, but I think it is hard to select these options by > Ruby programmers. I think changing Thread implementation model from native > thread (1:1 model) to green thread mode (1:N model) is better for Ruby > programmers. No, I want to keep current Thread 1:1 model because it is useful for filesystem operations and some CPU/memory intensive tasks (zlib). Changing "Thread" now to 1:N would also break code written for 1.9..2.5 1:N model is good for most network operations (high latency, low throughput). > To change them, we need to discuss pros. and cons. of them carefully. There > are several good points (the biggest advantage of 1:1 model is friendly for > outer libraries) but are bad points (1:1 model has performance penalties, > and recent glibc malloc arena issues and so on). Agreed. > I don't think it is a good idea to choose such internal implementation by > Ruby programmers. ... easy? I think it is necessary to give that control to programmers. We can educate them on pros and cons of each and to use them in combination. ``` 1:1 + C-ext parallelism for SMP systems (example: zlib) + filesystem parallelism (no non-blocking I/O on FS ops) + external library compatibility + compatibility with 1.9..2.5 code - high memory use (malloc arenas, kernel structs) - kernel resource limitations (Process::RLIMIT_NPROC) 1:N + C10K problem (or C100K :P) + compatibility with old 1.8 designs + low memory and resource use (malloc and kernel never sees extra data structures) - cannot take advantage of SMP or multiple filesystems alone ``` The key is a programmer may combine 1:1 and 1:N for different parts of the program flow. So where the program is bottlenecked on filesystem, it can rely on 1:1 behavior, but when the program is waiting on slow network traffic, it can rely on 1:N behavior For example: I have 4 filesystems, I might have 32 native threads (8 threads/FS to keep kernel IO scheduler busy). But I will still serve 100K network clients with 100K 1:N threads and that can even use 1 native thread. Unsubscribe: <mailto:[email protected]?subject=unsubscribe> <http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>