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.
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.
Could it be related to the fact that uv will have to use poll() on AIX instead of epoll/kqueue?
> 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.
> 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.
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 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.
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.
> 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.
> mostly in emulation mode (that's when v8 does not compile just in
> time) ?
The port is here: https://github.com/andrewlow/
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.
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.
댓글 없음:
댓글 쓰기