[#61822] Plan Developers Meeting Japan April 2014 — Zachary Scott <e@...>

I would like to request developers meeting around April 17 or 18 in this mo=

14 messages 2014/04/03
[#61825] Re: Plan Developers Meeting Japan April 2014 — Urabe Shyouhei <shyouhei@...> 2014/04/03

It's good if we have a meeting then.

[#61826] Re: Plan Developers Meeting Japan April 2014 — Zachary Scott <e@...> 2014/04/03

Regarding openssl issues, I=E2=80=99ve discussed possible meeting time with=

[#61833] Re: Plan Developers Meeting Japan April 2014 — Martin Bo煬et <martin.bosslet@...> 2014/04/03

Hi,

[ruby-core:61871] [ruby-trunk - Feature #9632] [PATCH 0/2] speedup IO#close with linked-list from ccan

From: normalperson@...
Date: 2014-04-05 23:38:22 UTC
List: ruby-core #61871
Issue #9632 has been updated by Eric Wong.


 [email protected] wrote:
 >  Updated 0001 patch with deduplicated license files:
 >  	http://bogomips.org/ruby.git/patch?id=b5401cdc6f72
 
 Any comment?  My main concern is it's a large import of new code;
 but it is also highly reusable.  I'll commit in 2-4 weeks if no response.
 The 0002 patch can wait longer.

----------------------------------------
Feature #9632: [PATCH 0/2] speedup IO#close with linked-list from ccan
https://bugs.ruby-lang.org/issues/9632#change-46087

* 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/

In This Thread

Prev Next