Go to file
Norman Maurer 30f60ac68a 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:57:31 +02:00
all [maven-release-plugin] prepare for next development iteration 2015-03-31 22:06:30 -04:00
buffer Change PoolThreadCache to use LIFO for better cache performance 2015-04-10 20:57:31 +02:00
codec [maven-release-plugin] prepare for next development iteration 2015-03-31 22:06:30 -04:00
codec-http [maven-release-plugin] prepare for next development iteration 2015-03-31 22:06:30 -04:00
codec-socks [maven-release-plugin] prepare for next development iteration 2015-03-31 22:06:30 -04:00
common Add support for ALPN when using openssl + NPN client mode and support for CipherSuiteFilter 2015-04-10 18:59:58 +02:00
example Add support for ALPN when using openssl + NPN client mode and support for CipherSuiteFilter 2015-04-10 18:59:58 +02:00
handler Add support for ALPN when using openssl + NPN client mode and support for CipherSuiteFilter 2015-04-10 18:59:58 +02: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 2015-03-31 22:06:30 -04:00
tarball [maven-release-plugin] prepare for next development iteration 2015-03-31 22:06:30 -04:00
testsuite [maven-release-plugin] prepare for next development iteration 2015-03-31 22:06:30 -04:00
testsuite-osgi [maven-release-plugin] prepare for next development iteration 2015-03-31 22:06:30 -04:00
transport [maven-release-plugin] prepare for next development iteration 2015-03-31 22:06:30 -04:00
transport-native-epoll [maven-release-plugin] prepare for next development iteration 2015-03-31 22:06:30 -04:00
transport-rxtx [maven-release-plugin] prepare for next development iteration 2015-03-31 22:06:30 -04:00
transport-sctp [maven-release-plugin] prepare for next development iteration 2015-03-31 22:06:30 -04:00
transport-udt Motivation: If there are no readable bytes, it's unnecessary to go through javaChannel().write(). 2015-04-08 09:36:32 +02: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 Add support for ALPN when using openssl + NPN client mode and support for CipherSuiteFilter 2015-04-10 18:59:58 +02: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.