[#45426] [ruby-trunk - Feature #6546][Open] Net::HTTP to check for HTTP_PROXY environment setting. — "dekz (Jacob Evans)" <dekzter@...>

14 messages 2012/06/04

[#45431] [ruby-trunk - Bug #6548][Open] Rake doesn't ignore arguments after -- — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

12 messages 2012/06/05

[#45474] [ANN] Request for "slide-show" of your feature proposal — Yusuke Endoh <mame@...>

(Japanese later; 日本語が後にあります)

18 messages 2012/06/07

[#45563] [ruby-trunk - Bug #6573][Open] Webrick test failures — "bkabrda (Bohuslav Kabrda)" <bkabrda@...>

19 messages 2012/06/11

[#45567] [ruby-trunk - Bug #6575][Open] Thread#kill sets rb_errinfo() to Fixnum 8 after rb_protect(function, data, &error_tag) — ibc (Iñaki Baz Castillo) <ibc@...>

9 messages 2012/06/11

[#45647] [ruby-trunk - Bug #6592][Open] test_call_double(DL::TestDL) fails on ARM HardFP — "vo.x (Vit Ondruch)" <v.ondruch@...>

15 messages 2012/06/14

[#45657] [ruby-trunk - Feature #6594][Open] Integrated Functor — "trans (Thomas Sawyer)" <transfire@...>

20 messages 2012/06/15

[#45664] [ruby-trunk - Bug #6596][Open] New method for Arrays : Array#index — "robin850 (Robin Dupret)" <robin.dupret@...>

20 messages 2012/06/15

[#45694] [ruby-trunk - Feature #6602][Open] Tail call optimization: enable by default? — "ko1 (Koichi Sasada)" <redmine@...>

12 messages 2012/06/18

[#45715] [ruby-trunk - Feature #6609][Open] Toplevel as self extended module — "trans (Thomas Sawyer)" <transfire@...>

17 messages 2012/06/19

[#45732] [ruby-trunk - Bug #6614][Open] GC doesn't collect objects bound to (collectable) proc — "rogerdpack (Roger Pack)" <rogerpack2005@...>

9 messages 2012/06/20

[#45733] [ruby-trunk - Feature #6615][Open] Release GVL in zlib when calling inflate() or deflate() — "drbrain (Eric Hodel)" <drbrain@...7.net>

12 messages 2012/06/21

[#45735] [ruby-trunk - Bug #6616][Open] MinGW: cannot build extensions or run tests due changes in exec_arg? — "luislavena (Luis Lavena)" <luislavena@...>

9 messages 2012/06/21

[#45798] [ruby-trunk - Bug #6634][Open] Deadlock with join and ConditionVariable — "meh. (meh. I don't care)" <meh@...>

20 messages 2012/06/23

[#45805] [ruby-trunk - Feature #6636][Open] Enumerable#size — "marcandre (Marc-Andre Lafortune)" <ruby-core@...>

15 messages 2012/06/23

[#45864] [ruby-trunk - Bug #6647][Open] Exceptions raised in threads should be logged — "headius (Charles Nutter)" <headius@...>

71 messages 2012/06/25

[#45902] [ruby-trunk - Bug #6653][Open] 1.9.2/1.9.3 exhibit SEGV with many threads+tcp connections — "erikh (Erik Hollensbe)" <erik@...>

11 messages 2012/06/26

[#45960] [ruby-trunk - Feature #6669][Open] A method like Hash#map but returns hash — "yhara (Yutaka HARA)" <redmine@...>

18 messages 2012/06/29

[#45963] [ruby-trunk - Feature #6670][Open] str.chars.last should be possible — "yhara (Yutaka HARA)" <redmine@...>

36 messages 2012/06/29

[#46021] [ruby-trunk - Feature #6679][Open] Default Ruby source file encoding to utf-8 — "claytrump (Clay Trump)" <clay.trump@...>

21 messages 2012/06/30

[ruby-core:45901] [ruby-trunk - Feature #6615] Release GVL in zlib when calling inflate() or deflate()

From: "drbrain (Eric Hodel)" <drbrain@...7.net>
Date: 2012-06-26 22:30:08 UTC
List: ruby-core #45901
Issue #6615 has been updated by drbrain (Eric Hodel).


=begin
Re-running this last benchmark with only 10,000 files across 50 runs, using ministat from FreeBSD to calculate the decrease in time, the real run time is reduced 2.6% +/- 1.9% at 99% confidence:

  $ ministat -c 99 -s without with
  x without
  + with
  +------------------------------------------------------------------------------+
  |                           +     + +  x    *  xx      x                       |
  |         +     x +   +     +  +  + +  x   **+xx*xx    x * x +               x |
  |+        ++++  x + x*+ * + ++x+x++x*++x* ***+x**xx * +x**** * + x   x       xx|
  |                                |_____________A_____________|                 |
  |                    |______________A_______________|                          |
  +------------------------------------------------------------------------------+
      N           Min           Max        Median           Avg        Stddev
  x  50    0.61660767    0.71641994    0.66669798    0.66647618   0.022548872
  +  50    0.59242272    0.69294882    0.64941692    0.64917859    0.02509235
  Difference at 99.0% confidence
  	-0.0172976 +/- 0.0125332
  	-2.59538% +/- 1.88051%
  	(Student's t, pooled s = 0.0238545)

See http://www.freebsd.org/cgi/man.cgi?query=ministat for the ministat man page

=end

----------------------------------------
Feature #6615: Release GVL in zlib when calling inflate() or deflate()
https://bugs.ruby-lang.org/issues/6615#change-27502

Author: drbrain (Eric Hodel)
Status: Open
Priority: Normal
Assignee: 
Category: ext
Target version: 2.0.0


This patch switches from zstream_run from using rb_thread_schedule() to rb_thread_blocking_region().

I don't see a way to safely interrupt deflate() or inflate() so the unblocking function is empty.

This patch should allow use of output buffer sizes larger than 16KB.  I suspect 16KB was chosen to allow reasonable context-switching time for ruby 1.8 and earlier.  A larger buffer size would reduce GVL contention when processing large streams.

An alternate way to reduce GVL contention would be to move zstream_run's loop outside the GVL, but some manual allocation would be required as currently the loop uses a ruby String as the output buffer.


-- 
http://bugs.ruby-lang.org/

In This Thread