You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Aleksey Shipilev (JIRA)" <ji...@apache.org> on 2007/10/01 17:26:50 UTC

[jira] Created: (HARMONY-4879) [classlib][nio] epoll-based Selector

[classlib][nio] epoll-based Selector
------------------------------------

                 Key: HARMONY-4879
                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
             Project: Harmony
          Issue Type: Improvement
          Components: Classlib
         Environment: Linux
            Reporter: Aleksey Shipilev


As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:

-Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

This version is early draft and NOT intended for the inclusion, since result handling could be O(n^2) in the worst case, that would be solved later. Nevertheless, the performance on select() operations has been improved dramatically. On the simple test which registers 2000 connections on the selector and then pushes it to selectNow(), on 16x Tulsa 3 Ghz / SLES9.2 / 2.6.9

Base Harmony:
<as...@box> ~/jre-r576670-work/bin/java -Xms512m -Xmx512m -Xem:client -cp ~/ashipile/SelectTest/ selectnow 2000 10000 10
Server: Opening selector
Server: Opening server
Client: 2000 connections
Client: 10000 requests
Client: 10 iterations
Client: connections established: 2000/2000
Client: 2000 clients connected in 100538 msecs
Client: all clients are connected. I go to sleep forever...
Server: all clients are connected
Server: Ready to serve
Server: iteration: 1/10  selectNow's: 10000  elapsed: 27986 millis
Server: iteration: 2/10  selectNow's: 10000  elapsed: 27814 millis
Server: iteration: 3/10  selectNow's: 10000  elapsed: 27842 millis
Server: iteration: 4/10  selectNow's: 10000  elapsed: 28014 millis
Server: iteration: 5/10  selectNow's: 10000  elapsed: 27611 millis
Server: iteration: 6/10  selectNow's: 10000  elapsed: 27661 millis
Server: iteration: 7/10  selectNow's: 10000  elapsed: 27710 millis
Server: iteration: 8/10  selectNow's: 10000  elapsed: 27713 millis
Server: iteration: 9/10  selectNow's: 10000  elapsed: 27757 millis
Server: iteration: 10/10 selectNow's: 10000  elapsed: 27777 millis

Base Harmony + epoll()-based selector:

<as...@box> ~/jre-r576670-work/bin/java -Xms512m -Xmx512m -Xem:client -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl -cp ~/ashipile/SelectTest/ selectnow 2000 10000 10
Server: Opening selector
Now using EpollSelectorProvider
Server: Opening server
Client: 2000 connections
Client: 10000 requests
Client: 10 iterations
Client: connections established: 2000/2000
Server: all clients are connected
Server: Ready to serve
Client: 2000 clients connected in 832 msecs
Client: all clients are connected. I go to sleep forever...
Server: iteration: 1/10  selectNow's: 10000  elapsed: 173 millis
Server: iteration: 2/10  selectNow's: 10000  elapsed: 84 millis
Server: iteration: 3/10  selectNow's: 10000  elapsed: 82 millis
Server: iteration: 4/10  selectNow's: 10000  elapsed: 87 millis
Server: iteration: 5/10  selectNow's: 10000  elapsed: 87 millis
Server: iteration: 6/10  selectNow's: 10000  elapsed: 87 millis
Server: iteration: 7/10  selectNow's: 10000  elapsed: 82 millis
Server: iteration: 8/10  selectNow's: 10000  elapsed: 86 millis
Server: iteration: 9/10  selectNow's: 10000  elapsed: 86 millis
Server: iteration: 10/10 selectNow's: 10000  elapsed: 87 millis

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Description: 
As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:

-Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

This version is early draft and NOT intended for the inclusion, since result handling could be O(n^2) in the worst case, that would be solved later. Nevertheless, the performance on select() operations has been improved dramatically. 

  was:
As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:

-Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

This version is early draft and NOT intended for the inclusion, since result handling could be O(n^2) in the worst case, that would be solved later. Nevertheless, the performance on select() operations has been improved dramatically. On the simple test which registers 2000 connections on the selector and then pushes it to selectNow(), on 16x Tulsa 3 Ghz / SLES9.2 / 2.6.9

Base Harmony:
<as...@box> ~/jre-r576670-work/bin/java -Xms512m -Xmx512m -Xem:client -cp ~/ashipile/SelectTest/ selectnow 2000 10000 10
Server: Opening selector
Server: Opening server
Client: 2000 connections
Client: 10000 requests
Client: 10 iterations
Client: connections established: 2000/2000
Client: 2000 clients connected in 100538 msecs
Client: all clients are connected. I go to sleep forever...
Server: all clients are connected
Server: Ready to serve
Server: iteration: 1/10  selectNow's: 10000  elapsed: 27986 millis
Server: iteration: 2/10  selectNow's: 10000  elapsed: 27814 millis
Server: iteration: 3/10  selectNow's: 10000  elapsed: 27842 millis
Server: iteration: 4/10  selectNow's: 10000  elapsed: 28014 millis
Server: iteration: 5/10  selectNow's: 10000  elapsed: 27611 millis
Server: iteration: 6/10  selectNow's: 10000  elapsed: 27661 millis
Server: iteration: 7/10  selectNow's: 10000  elapsed: 27710 millis
Server: iteration: 8/10  selectNow's: 10000  elapsed: 27713 millis
Server: iteration: 9/10  selectNow's: 10000  elapsed: 27757 millis
Server: iteration: 10/10 selectNow's: 10000  elapsed: 27777 millis

Base Harmony + epoll()-based selector:

<as...@box> ~/jre-r576670-work/bin/java -Xms512m -Xmx512m -Xem:client -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl -cp ~/ashipile/SelectTest/ selectnow 2000 10000 10
Server: Opening selector
Now using EpollSelectorProvider
Server: Opening server
Client: 2000 connections
Client: 10000 requests
Client: 10 iterations
Client: connections established: 2000/2000
Server: all clients are connected
Server: Ready to serve
Client: 2000 clients connected in 832 msecs
Client: all clients are connected. I go to sleep forever...
Server: iteration: 1/10  selectNow's: 10000  elapsed: 173 millis
Server: iteration: 2/10  selectNow's: 10000  elapsed: 84 millis
Server: iteration: 3/10  selectNow's: 10000  elapsed: 82 millis
Server: iteration: 4/10  selectNow's: 10000  elapsed: 87 millis
Server: iteration: 5/10  selectNow's: 10000  elapsed: 87 millis
Server: iteration: 6/10  selectNow's: 10000  elapsed: 87 millis
Server: iteration: 7/10  selectNow's: 10000  elapsed: 82 millis
Server: iteration: 8/10  selectNow's: 10000  elapsed: 86 millis
Server: iteration: 9/10  selectNow's: 10000  elapsed: 86 millis
Server: iteration: 10/10 selectNow's: 10000  elapsed: 87 millis


> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl
> This version is early draft and NOT intended for the inclusion, since result handling could be O(n^2) in the worst case, that would be solved later. Nevertheless, the performance on select() operations has been improved dramatically. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: selectors-epoll-4.patch

selectors-epoll-4.patch is updated.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: selectors-epoll-5.patch

selectors-epoll-5.patch
Fixed issue with lost READABLE operations.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch, selectors-epoll-5.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12531535 ] 

Aleksey Shipilev commented on HARMONY-4879:
-------------------------------------------

On the simple test which registers 2000 connections on the selector and then pushes it to selectNow(), on 16x Tulsa 3 Ghz / SLES9.2 / 2.6.9

Base Harmony:
<as...@box> ~/jre-r576670-work/bin/java -Xms512m -Xmx512m -Xem:client -cp ~/ashipile/SelectTest/ selectnow 2000 10000 10
Server: Opening selector
Server: Opening server
Client: 2000 connections
Client: 10000 requests
Client: 10 iterations
Client: connections established: 2000/2000
Client: 2000 clients connected in 100538 msecs
Client: all clients are connected. I go to sleep forever...
Server: all clients are connected
Server: Ready to serve
Server: iteration: 1/10  selectNow's: 10000  elapsed: 27986 millis
Server: iteration: 2/10  selectNow's: 10000  elapsed: 27814 millis
Server: iteration: 3/10  selectNow's: 10000  elapsed: 27842 millis
Server: iteration: 4/10  selectNow's: 10000  elapsed: 28014 millis
Server: iteration: 5/10  selectNow's: 10000  elapsed: 27611 millis
Server: iteration: 6/10  selectNow's: 10000  elapsed: 27661 millis
Server: iteration: 7/10  selectNow's: 10000  elapsed: 27710 millis
Server: iteration: 8/10  selectNow's: 10000  elapsed: 27713 millis
Server: iteration: 9/10  selectNow's: 10000  elapsed: 27757 millis
Server: iteration: 10/10 selectNow's: 10000  elapsed: 27777 millis

Base Harmony + epoll()-based selector:

<as...@box> ~/jre-r576670-work/bin/java -Xms512m -Xmx512m -Xem:client -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl -cp ~/ashipile/SelectTest/ selectnow 2000 10000 10
Server: Opening selector
Now using EpollSelectorProvider
Server: Opening server
Client: 2000 connections
Client: 10000 requests
Client: 10 iterations
Client: connections established: 2000/2000
Server: all clients are connected
Server: Ready to serve
Client: 2000 clients connected in 832 msecs
Client: all clients are connected. I go to sleep forever...
Server: iteration: 1/10  selectNow's: 10000  elapsed: 173 millis
Server: iteration: 2/10  selectNow's: 10000  elapsed: 84 millis
Server: iteration: 3/10  selectNow's: 10000  elapsed: 82 millis
Server: iteration: 4/10  selectNow's: 10000  elapsed: 87 millis
Server: iteration: 5/10  selectNow's: 10000  elapsed: 87 millis
Server: iteration: 6/10  selectNow's: 10000  elapsed: 87 millis
Server: iteration: 7/10  selectNow's: 10000  elapsed: 82 millis
Server: iteration: 8/10  selectNow's: 10000  elapsed: 86 millis
Server: iteration: 9/10  selectNow's: 10000  elapsed: 86 millis
Server: iteration: 10/10 selectNow's: 10000  elapsed: 87 millis

This mean that epoll()-based selector is 300x times faster than legacy poll().

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl
> This version is early draft and NOT intended for the inclusion, since result handling could be O(n^2) in the worst case, that would be solved later. Nevertheless, the performance on select() operations has been improved dramatically. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: selectors-epoll-6.patch

selectors-epoll-6.patch
Fixed internal key map bugs, wakeup channel handling.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch, selectors-epoll-5.patch, selectors-epoll-6.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Comment: was deleted

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: selectors-epoll-3.patch

selectors-epoll-3.patch
Final Candidate for epoll() support.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Alexei Zakharov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12534847 ] 

Alexei Zakharov commented on HARMONY-4879:
------------------------------------------

Aleksey, I've committed the additional patch at the revision 584782. Please verify.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>            Assignee: Alexei Zakharov
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch, selectors-epoll-5.patch, selectors-epoll-6-linux2.4fallback.patch, selectors-epoll-6.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Comment: was deleted

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev closed HARMONY-4879.
-------------------------------------


I'm closing the issue now as it is not breaking anything now.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>            Assignee: Alexei Zakharov
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch, selectors-epoll-5.patch, selectors-epoll-6-linux2.4fallback.patch, selectors-epoll-6.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Alexei Zakharov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexei Zakharov resolved HARMONY-4879.
--------------------------------------

    Resolution: Fixed

Thanks a lot Aleksey. The patch was committed at revisions 583514 and 583521. BTW I moved all java sources that are not specific to any platform to "src/main/java/common"  folder and placed your Epol-provider-specific sources to "src/main/java/unix". Please verify that everything was done as expected. 

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>            Assignee: Alexei Zakharov
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch, selectors-epoll-5.patch, selectors-epoll-6.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment:     (was: selectnow.java)

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: 2000-all.png

2000-all.png
Comparison of different implementations on 16x Tulsa / 3.2 Ghz / RHEL4 / 2.6.9.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: 2000-all.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Alexei Zakharov (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexei Zakharov reassigned HARMONY-4879:
----------------------------------------

    Assignee: Alexei Zakharov

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>            Assignee: Alexei Zakharov
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch, selectors-epoll-5.patch, selectors-epoll-6.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: selectnow.java

selectnow.java
The test used in this issue.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: selectnow.java, selectors-epoll-2.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment:     (was: selectors-epoll-4.patch)

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: selectors-epoll-4.patch

selectors-epoll-4.patch
Some bugfixes, changed the remove() semantics.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12533074 ] 

Aleksey Shipilev commented on HARMONY-4879:
-------------------------------------------

Please DO NOT commit it to the trunk, as I have found some functionality bugs.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: selectors-epoll-2.patch

selectors-epoll-2.patch

This version is early draft and NOT intended for the inclusion, since result handling could be O(n^2) in the worst case, that would be solved later. Nevertheless, the performance on select() operations has been improved dramatically. 

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: selectors-epoll-2.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: run.sh

run.sh
Simple script to produce extensive experiment data.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12534850 ] 

Aleksey Shipilev commented on HARMONY-4879:
-------------------------------------------

Thanks, Alexei! The patch is applied OK.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>            Assignee: Alexei Zakharov
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch, selectors-epoll-5.patch, selectors-epoll-6-linux2.4fallback.patch, selectors-epoll-6.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: 2000-best.png

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12534270 ] 

Aleksey Shipilev commented on HARMONY-4879:
-------------------------------------------

Patch is applied OK, thanks. I will follow with kernel auto-detection soon, so I will not close the issue now.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>            Assignee: Alexei Zakharov
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch, selectors-epoll-5.patch, selectors-epoll-6.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12532384 ] 

Aleksey Shipilev commented on HARMONY-4879:
-------------------------------------------

Two images attached: comparison of different implementations on 16x Tulsa / 3.2 Ghz / RHEL4 / 2.6.9.

2000-all.png:
 Comparison of all vs. all. 
 At 0% utilization, Harmony-epoll is 300x faster than Harmony-poll.
 At 100% utilization, Harmony-epoll is 5x faster than Harmony-poll.

2000-best.png:
 Comparison of epoll implementation on Harmony and Sun.
 Harmony-epoll is only 1.1x slower than Sun 1.6.0.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: selectors-epoll-6-linux2.4fallback.patch

selectors-epoll-6-linux2.4fallback.patch
Build-time check for kernel version and stubs to fail gently on LInux 2.4

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>            Assignee: Alexei Zakharov
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch, selectors-epoll-5.patch, selectors-epoll-6-linux2.4fallback.patch, selectors-epoll-6.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Alexei Zakharov (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12534283 ] 

Alexei Zakharov commented on HARMONY-4879:
------------------------------------------

Ok, let's wait till the autodetection issue is resolved.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>            Assignee: Alexei Zakharov
>         Attachments: 2000-all.png, 2000-best.png, run.sh, selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch, selectors-epoll-4.patch, selectors-epoll-5.patch, selectors-epoll-6.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Description: 
As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:

-Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

  was:
As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:

-Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

This version is early draft and NOT intended for the inclusion, since result handling could be O(n^2) in the worst case, that would be solved later. Nevertheless, the performance on select() operations has been improved dramatically. 


> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (HARMONY-4879) [classlib][nio] epoll-based Selector

Posted by "Aleksey Shipilev (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-4879?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksey Shipilev updated HARMONY-4879:
--------------------------------------

    Attachment: selectnow.java

selectnow.java is updated.
Now active channels count could specified.

> [classlib][nio] epoll-based Selector
> ------------------------------------
>
>                 Key: HARMONY-4879
>                 URL: https://issues.apache.org/jira/browse/HARMONY-4879
>             Project: Harmony
>          Issue Type: Improvement
>          Components: Classlib
>         Environment: Linux
>            Reporter: Aleksey Shipilev
>         Attachments: selectnow.java, selectors-epoll-2.patch, selectors-epoll-3.patch
>
>
> As the part of Linux Scalability Project, kernel developers had implemented the epoll() I/O multiplexing facility (http://lse.sourceforge.net/epoll/index.html), which scales much better than legacy poll() and select(). Attached patch implements epoll() support for java.nio.channels.Selector, which can be turned on with option:
> -Djava.nio.channels.spi.SelectorProvider=org.apache.harmony.nio.internal.EpollSelectorProviderImpl

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.