Network performance on AIX 7.1 with v0.10.32 seems to be slow

170 views
Skip to first unread message

Dieter Reuter

unread,
Oct 27, 2014, 7:11:03 AM10/27/14
to nod...@googlegroups.com
Hi,

I'm currently building a small Node.js prototype which is aimed to run in a production system on AIX 7.x. Tue to the fact, the solution should run at a industrial customer with strong SLA's, I'm forced to use the official IBM binaries for Node.js. Currently I'm using the latest prebuild v0.10.32 binaries directly from IBM.

My first mini test program seems to run really slow. Are their any known performance issues on AIX?

It's just a proxy web service which excepts HTTP POST requests with a XML payload of 5-30kByte, this payload will be forwarded to another web service (written in Java which is doing a heavy data manipulation on it) and returning around 2-50kByte of binary data. Thats's it. And all is running on the same machine, using 127.0.0.1 local loopback interface.

Running a job with 250 web requests (serial calls, nothing parallel) directly on the Java web service gives me around 2.3s in total processing time. With my Node.js proxy in between it leeds to around 10s, that's a 4X. The same test on my 2008 MBP on OSX gives me 3.0s on Java and 3.4s through my Node.js proxy - a 10% overhead only which is really great. The AIX 7.1 server machine is just a virtual test machine from https://www.ibm.com/partnerworld/pdp.

Any help or pointers are greatly appreciated.

Dieter

Michael Dawson

unread,
Oct 28, 2014, 5:18:05 PM10/28/14
to nod...@googlegroups.com
I'm not aware of known network issues that would explain what you are seeing.  If we can get sample code to recreate we could investigate further.

Matt

unread,
Oct 29, 2014, 10:53:07 AM10/29/14
to nod...@googlegroups.com
Could it be related to the fact that uv will have to use poll() on AIX instead of epoll/kqueue?

--
Job board: http://jobs.nodejs.org/
New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
---
You received this message because you are subscribed to the Google Groups "nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+un...@googlegroups.com.
To post to this group, send email to nod...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/393b5f88-bdcd-4a18-89c4-8d7e0e1b662e%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Ben Noordhuis

unread,
Oct 29, 2014, 12:00:08 PM10/29/14
to nod...@googlegroups.com
On Wed, Oct 29, 2014 at 3:50 PM, Matt <hel...@gmail.com> wrote:
> Could it be related to the fact that uv will have to use poll() on AIX
> instead of epoll/kqueue?

The AIX port uses the pollset_*() family of functions. Pollsets
should have performance characteristics comparable to epoll and
friends, at least in theory.

Jérémy Lal

unread,
Oct 29, 2014, 2:07:59 PM10/29/14
to nod...@googlegroups.com
I'm not aware v8 runs on AIX ? Maybe the port is incomplete and runs
mostly in emulation mode (that's when v8 does not compile just in
time) ?
> > server machine is just a virtual test machine from https://www.*ibm*
> > .com/partnerworld/*pdp.*

Michael Dawson

unread,
Oct 29, 2014, 5:59:24 PM10/29/14
to nod...@googlegroups.com

The AIX port is complete but is still in the process of being contributed back to the community. 

We are still working on optimizing performance but the jit is enabled so I don't expect the big difference reported in the original post.

Ben Noordhuis

unread,
Oct 29, 2014, 8:53:38 PM10/29/14
to nod...@googlegroups.com
On Wed, Oct 29, 2014 at 7:02 PM, Jérémy Lal <hol...@gmail.com> wrote:
> I'm not aware v8 runs on AIX ? Maybe the port is incomplete and runs
> mostly in emulation mode (that's when v8 does not compile just in
> time) ?

The port is here: https://github.com/andrewlow/v8ppc (Andrew is an IBM
employee.) I can't attest to its effectiveness but the PPC port
implements the platform-specific part of V8's optimizing compiler.

I would suggest to the OP to do some profiling with prof or gprof
(maybe AIX has better tools these days) and report back with the
results.

Dieter Reuter

unread,
Nov 4, 2014, 12:56:17 PM11/4/14
to nod...@googlegroups.com
I was able to rebuild my prototype completely in Node.js and with this version I’m able to run it on AIX at full speed.  So, with a pure Node.js stack I can see absolute no performance issues at all.  

And as soon as I use a Java client or a Java Webservice together with Node I hit the performance problem.  I don’t have the Java sources available but have already send a request to the developer to check if he has set the tcp socket option TCP_NODELAY=true.  I suppose there is a timing issue on the tcp socket connections in Java, that’s a typical problem when doing a lot of current socket connections with a few 100 per second, then the old style NAGLE features hits you like a hammer with a delay of up to 200ms on each connection.

After all, now I’m sure there is no performance problem with Node.js on AIX!  Sorry for any confusion.

Dieter
Reply all
Reply to author
Forward
0 new messages