Go to file
Norman Maurer 585ce1593f Faster event processing when epoll transport is used
Motivation:

Before we used a long[] to store the ready events, this had a few problems and limitations:
 - An extra loop was needed to translate between epoll_event and our long
 - JNI may need to do extra memory copy if the JVM not supports pinning
 - More branches

Modifications:

- Introduce a EpollEventArray which allows to directly write in a struct epoll_event* and pass it to epoll_wait.

Result:

Better speed when using native transport, as shown in the benchmark.

Before:
[xxx@xxx wrk]$ ./wrk -H 'Connection: keep-alive' -d 120 -c 256 -t 16 -s scripts/pipeline-many.lua  http://xxx:8080/plaintext
Running 2m test @ http://xxx:8080/plaintext
 16 threads and 256 connections
 Thread Stats   Avg      Stdev     Max   +/- Stdev
   Latency    14.56ms    8.64ms 117.15ms   80.58%
   Req/Sec   286.17k    38.71k  421.48k    68.17%
 546324329 requests in 2.00m, 73.78GB read
Requests/sec: 4553438.39
Transfer/sec:    629.66MB

After:
[xxx@xxx wrk]$ ./wrk -H 'Connection: keep-alive' -d 120 -c 256 -t 16 -s scripts/pipeline-many.lua  http://xxx:8080/plaintext
Running 2m test @ http://xxx:8080/plaintext
 16 threads and 256 connections
 Thread Stats   Avg      Stdev     Max   +/- Stdev
   Latency    14.12ms    8.69ms 100.40ms   83.08%
   Req/Sec   294.79k    40.23k  472.70k    66.75%
 555997226 requests in 2.00m, 75.08GB read
Requests/sec: 4634343.40
Transfer/sec:    640.85MB
2015-02-07 08:22:26 +01:00
all [maven-release-plugin] prepare for next development iteration 2014-12-31 20:58:44 +09:00
buffer [maven-release-plugin] prepare for next development iteration 2014-12-31 20:58:44 +09:00
codec Minor idiomatic changes to java docs 2015-02-04 08:28:40 +01:00
codec-http Allow to use WebSocketClientHandshaker and WebSocketServerHandshaker with HttpResponse / HttpRequest 2015-02-06 10:42:53 +01:00
codec-socks [maven-release-plugin] prepare for next development iteration 2014-12-31 20:58:44 +09:00
common Minor idiomatic changes to java docs 2015-02-04 08:28:40 +01:00
example [maven-release-plugin] prepare for next development iteration 2014-12-31 20:58:44 +09:00
handler Log only on debug log level in OpenSslEngine 2015-02-07 06:01:41 +01:00
license Remove license of deque as we not use it anymore 2014-08-04 12:21:33 +02:00
microbench [maven-release-plugin] prepare for next development iteration 2014-12-31 20:58:44 +09:00
tarball [maven-release-plugin] prepare for next development iteration 2014-12-31 20:58:44 +09:00
testsuite Allow to use WebSocketClientHandshaker and WebSocketServerHandshaker with HttpResponse / HttpRequest 2015-02-06 10:42:53 +01:00
transport Ensure channelReadComplete() is called only when necessary 2015-02-07 16:12:43 +09:00
transport-native-epoll Faster event processing when epoll transport is used 2015-02-07 08:22:26 +01:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2014-12-31 20:58:44 +09:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2014-12-31 20:58:44 +09:00
transport-udt Fix typo in param name 2015-01-16 20:29:55 +01:00
.fbprefs Updated Find Bugs configuration 2009-03-04 10:33:09 +00:00
.gitignore Add JVM crash logs to .gitignore 2014-05-18 21:37:12 +09:00
.travis.yml Travis CI branch whitelisting 2013-03-11 09:55:43 +09:00
CONTRIBUTING.md Move the pull request guide to the developer guide 2014-03-12 13:18:14 +09:00
LICENSE.txt Relicensed to Apache License v2 2009-08-28 07:15:49 +00:00
NOTICE.txt Remove license of deque as we not use it anymore 2014-08-04 12:21:33 +02:00
pom.xml Fix #3331 Update Javassist from 3.18.0-GA to 3.19.0-GA 2015-02-07 12:24:40 +09:00
README.md Add a link to the 'native transports' page 2014-07-21 12:54:43 -07:00
run-example.sh Add logLevel property to enable different log levels for the examples. 2014-11-21 10:48:13 +09:00

Netty Project

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

How to build

For the detailed information about building and developing Netty, please visit the developer guide. This page only gives very basic information.

You require the following to build Netty:

Note that this is build-time requirement. JDK 5 (for 3.x) or 6 (for 4.0+) is enough to run your Netty-based application.

Branches to look

The 'master' branch is where the development of the latest major version lives on. The development of all other major versions takes place in each branch whose name is identical to its major version number. For example, the development of 3.x and 4.x resides in the branch '3' and the branch '4' respectively.