Re: Bug#691765: Bindings don't seem to release the GIL when doing I/O

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: Bug#691765: Bindings don't seem to release the GIL when doing I/O

Sebastian Harl-2
forwarded 691765 [hidden email]
thanks

Hi,

On Mon, Oct 29, 2012 at 02:49:03PM +0100, Enrico Zini wrote:

> I was auditing the rrdtool binding code to check if they could be used
> in a python thread without locking the entire application via the GIL.
>
> Extensions are supposed to release the GIL lock around potentially
> blocking I/O operations like reading or writing a file, so that other
> Python threads can run in the meantime.
>
> I went through rrdtoolmodule.c and didn't see any use of
> Py_BEGIN_ALLOW_THREADS or thread-related functions, so it looks like
> python-rrdtool would keep all concurrent threads of the application
> blocked during I/O.
>
> http://docs.python.org/2/c-api/init.html#threads has more details.
>
> This isn't an urgent issue for me personally: we're using pyrrd
> through the 'external' backend, which uses Popen to invoke rrdtool, and
> Popen correctly releases the GIL during I/O. However, I felt like I
> should share what I found during my little code review.
Thanks for sharing this. With this email, I'm forwarding the issue to
the upstream developers mailinglist for further attention.

Cheers,
Sebastian

--
Sebastian "tokkee" Harl +++ GnuPG-ID: 0x8501C7FC +++ http://tokkee.org/

Those who would give up Essential Liberty to purchase a little Temporary
Safety, deserve neither Liberty nor Safety.         -- Benjamin Franklin


_______________________________________________
rrd-developers mailing list
[hidden email]
https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers

signature.asc (205 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Bug#691765: Bindings don't seem to release the GIL when doing I/O

Jean-Michel Vourgère
Control: tags -1 + patch

Hello Enrico.

On Mon, Oct 29, 2012 at 02:49:03PM +0100, Enrico Zini wrote:

> I was auditing the rrdtool binding code to check if they could be used
> in a python thread without locking the entire application via the GIL.
>
> Extensions are supposed to release the GIL lock around potentially
> blocking I/O operations like reading or writing a file, so that other
> Python threads can run in the meantime.
>
> I went through rrdtoolmodule.c and didn't see any use of
> Py_BEGIN_ALLOW_THREADS or thread-related functions, so it looks like
> python-rrdtool would keep all concurrent threads of the application
> blocked during I/O.
>
> http://docs.python.org/2/c-api/init.html#threads has more details.
>
> This isn't an urgent issue for me personally: we're using pyrrd
> through the 'external' backend, which uses Popen to invoke rrdtool, and
> Popen correctly releases the GIL during I/O. However, I felt like I
> should share what I found during my little code review.

How does this look?

https://github.com/nirgal/rrdtool-1.x/commit/8949308812a0205dd356cefbe2eb2888012ee742

Not asking for a full review, a "that's the idea" would be cool. ^^

--
Nirgal
<3 YKINMYKBYKIOK

_______________________________________________
rrd-developers mailing list
[hidden email]
https://lists.oetiker.ch/cgi-bin/listinfo/rrd-developers