Go to file
Norman Maurer 5519bbcb95 Change PoolThreadCache to use LIFO for better cache performance
Motiviation:

At the moment we use FIFO for the PoolThreadCache which is sub-optimal as this may reduce the changes to have the cached memory actual still in the cpu-cache.

Modification:

- Change to use LIFO as this increase the chance to be able to serve buffers from the cpu-cache

Results:

Faster allocation out of the ThreadLocal cache.

Before the commit:
[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.69ms   10.06ms 131.43ms   80.10%
    Req/Sec   283.89k    40.37k  433.69k    66.81%
  533859742 requests in 2.00m, 72.09GB read
Requests/sec: 4449510.51
Transfer/sec:    615.29MB

After the commit:
[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    16.38ms   26.32ms 734.06ms   97.38%
    Req/Sec   283.86k    39.31k  361.69k    83.38%
  540836511 requests in 2.00m, 73.04GB read
Requests/sec: 4508150.18
Transfer/sec:    623.40MB
2015-04-10 20:58:12 +02:00
all [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
buffer Change PoolThreadCache to use LIFO for better cache performance 2015-04-10 20:58:12 +02:00
codec Refactor tests for compression codecs 2015-04-10 15:50:20 +02:00
codec-dns [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
codec-haproxy [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
codec-http Safely encode Strings to ASCII 2015-03-18 15:53:52 +09:00
codec-http2 Change Http2Settings to use char keys. 2015-04-10 11:49:46 -07:00
codec-memcache Returns after encoding each message not do check following instance types 2015-03-19 20:43:10 +01:00
codec-mqtt [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
codec-socks [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
codec-stomp [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
codec-xml [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
common Add support for ALPN when using openssl + NPN client mode and support for CipherSuiteFilter 2015-04-10 18:34:09 +02:00
example Add support for ALPN when using openssl + NPN client mode and support for CipherSuiteFilter 2015-04-10 18:34:09 +02:00
handler Add support for ALPN when using openssl + NPN client mode and support for CipherSuiteFilter 2015-04-10 18:34:09 +02:00
handler-proxy [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
license Integrate non-blocking XML parser as Netty codec (#2806) 2015-02-19 14:17:17 +01:00
microbench Cleaning up the initialization of Http2ConnectionHandler 2015-03-30 11:22:25 -07:00
resolver Use InetSocketAddress.getHostName() instead of getHostString() 2015-03-10 11:45:56 +09:00
resolver-dns [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
tarball [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
testsuite [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
testsuite-osgi [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
transport Small typos fixes in Channel's Javadoc 2015-03-21 16:09:55 +01:00
transport-native-epoll First load RuntimeException to prevent segfault on error 2015-03-13 18:28:49 +01:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2015-03-03 08:30:59 -05:00
transport-udt Motivation: If there are no readable bytes, it's unnecessary to go through javaChannel().write(). 2015-04-08 09:35:33 +02:00
.fbprefs Updated Find Bugs configuration 2009-03-04 10:33:09 +00:00
.gitignore Exclude bin directory from git Motivation: 2014-08-27 06:33:22 +02: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:17:58 +09:00
LICENSE.txt Relicensed to Apache License v2 2009-08-28 07:15:49 +00:00
NOTICE.txt Integrate non-blocking XML parser as Netty codec (#2806) 2015-02-19 14:17:17 +01:00
pom.xml Add support for ALPN when using openssl + NPN client mode and support for CipherSuiteFilter 2015-04-10 18:34:09 +02:00
README.md Add a link to the 'native transports' page 2014-07-21 12:10:16 -07:00
run-example.sh Add logLevel property to enable different log levels for the examples. 2014-11-21 10:49:27 +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 versions takes place in each branch whose name is identical to <majorVersion>.<minorVersion>. For example, the development of 3.9 and 4.0 resides in the branch '3.9' and the branch '4.0' respectively.