[#62297] Re: [ruby-cvs:52906] nari:r45760 (trunk): * gc.c (gc_after_sweep): suppress unnecessary expanding heap. — Eric Wong <normalperson@...>
nari@ruby-lang.org wrote:
7 messages
2014/05/02
[#62307] Re: [ruby-cvs:52906] nari:r45760 (trunk): * gc.c (gc_after_sweep): suppress unnecessary expanding heap.
— SASADA Koichi <ko1@...>
2014/05/03
(2014/05/03 4:41), Eric Wong wrote:
[#62402] Re: [ruby-cvs:52906] nari:r45760 (trunk): * gc.c (gc_after_sweep): suppress unnecessary expanding heap.
— Eric Wong <normalperson@...>
2014/05/05
SASADA Koichi <ko1@atdot.net> wrote:
[#62523] [ruby-trunk - Feature #9632] [PATCH 0/2] speedup IO#close with linked-list from ccan — ko1@...
Issue #9632 has been updated by Koichi Sasada.
3 messages
2014/05/11
[#62556] doxygen (Re: Re: [ruby-trunk - Feature #9632] [PATCH 0/2] speedup IO#close with linked-list from ccan) — Tanaka Akira <akr@...>
2014-05-11 8:50 GMT+09:00 Eric Wong <normalperson@yhbt.net>:
3 messages
2014/05/13
[#62727] [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl — Eric Wong <normalperson@...>
rb_unlink_method_entry may cause old_me to be swept before the new
7 messages
2014/05/24
[#63039] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— SASADA Koichi <ko1@...>
2014/06/10
Hi,
[#63077] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— Eric Wong <normalperson@...>
2014/06/10
SASADA Koichi <ko1@atdot.net> wrote:
[#63086] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— SASADA Koichi <ko1@...>
2014/06/11
(2014/06/11 4:47), Eric Wong wrote:
[#63087] Re: [RFC] vm_method.c (rb_method_entry_make): avoid freed me in m_tbl
— Eric Wong <normalperson@...>
2014/06/11
SASADA Koichi <ko1@atdot.net> wrote:
[#62862] [RFC] README.EXT: document rb_gc_register_mark_object — Eric Wong <normalperson@...>
Any comment on officially supporting this as part of the C API?
5 messages
2014/05/30
[ruby-core:62528] [ruby-trunk - Feature #9632] [PATCH 0/2] speedup IO#close with linked-list from ccan
From:
normalperson@...
Date:
2014-05-11 11:09:17 UTC
List:
ruby-core #62528
Issue #9632 has been updated by Eric Wong. Eric Wong <normalperson@yhbt.net> wrote: > Before: st_table_entry->rb_thread_t->st_table_entry->rb_thread_t ... Sorry, bad picture for Before, this is more accurate: st_table_entry -> st_table_entry -> st_table_entry | | | V V V rb_thread_t rb_thread_t rb_thread_t ---------------------------------------- Feature #9632: [PATCH 0/2] speedup IO#close with linked-list from ccan https://bugs.ruby-lang.org/issues/9632#change-46684 * Author: Eric Wong * Status: Open * Priority: Normal * Assignee: Koichi Sasada * Category: core * Target version: current: 2.2.0 ---------------------------------------- This imports the ccan linked-list (BSD-MIT licensed version of the Linux kernel linked list). I cut out some of the unused str* code (only for debugging), but it's still a big import of new code. Modifications to existing code is minimal, and it makes the living_threads iteration functions simpler. The improvement is great, and there may be future places where we could use a doubly linked list. = vm->living_threads: * before: st hash table had extra malloc overhead, and slow iteration due to bad cache locality * after: guaranteed O(1) insert/remove performance (branchless!) iteration is still O(n), but performance is improved in IO#close due to less pointer chasing = IO#close: further improvement with second linked list * before: IO#close is linear based on number of living threads * after: IO#close is linear based on number of waiting threads No extra malloc is needed (only 2 new pointers in existing structs) for a secondary linked-list for waiting FDs. I chose the ccan linked list over BSD <sys/queue.h> for two reasons: 1) insertion and removal are both branchless 2) locality is improved if a struct may be a member of multiple lists git://80x24.org/ruby.git threads-list ---Files-------------------------------- 0002-speedup-IO-close-with-many-living-threads.patch (2.86 KB) 0001-doubly-linked-list-from-ccan-to-manage-vm-living_thr.patch (68.1 KB) -- https://bugs.ruby-lang.org/