Project Status¶
Known Issues¶
Benchmarks¶
Here are some benchmarks of PyCOM 0.4.2 in the local network (100Mbps).
NameServer was running on:
Software: Linux 2.4.32 i386, Python 2.7.2, PyZMQ 2.1.11
Hardware: VirtualBox 4.1.8 (without additions)
Host: Ubuntu 12.04 x86_64
Remote client was running on:
Software: Ubuntu 11.10 x86_64, Python 2.7.2, Python 3.2.2, PyZMQ 2.1.11
Hardware: SAMSUNG 350 U2A notebook
Two command were executed:
$ ./python -m timeit \
-s "import pycom; ctx = pycom.ProxyContext(nameserver='tcp://192.168.10.13:2012')" \
"ctx.nameserver().stat()"
$ ./python -m timeit \
-s "import pycom; ctx = pycom.ProxyContext(nameserver='tcp://192.168.10.13:2012')" \
"ctx.locate('org.pycom.nameserver').stat()"
Results for remote client (Python 2.7.2):
1: 100 loops, best of 3: 4.33 msec per loop
2: 100 loops, best of 3: 9.45 msec per loop
Results for remote client (Python 3.2.2):
1: 100 loops, best of 3: 4.06 msec per loop
2: 100 loops, best of 3: 9.58 msec per loop
Local client:
1: 1000 loops, best of 3: 1.17 msec per loop
2: 100 loops, best of 3: 1.99 msec per loop
Localhost-only setup (NameServer address is tcp://127.0.0.1:2012):
1: 1000 loops, best of 3: 1.16 msec per loop
2: 100 loops, best of 3: 2.09 msec per loop
Localhost-only setup (NameServer address is ipc:///tmp/test-pycom):
1: 1000 loops, best of 3: 1.15 msec per loop
2: 100 loops, best of 3: 1.96 msec per loop
Thus, for LAN setups average rate is about 230 simple requests per second or 100 lookup-request pairs per second.
For localhost setups average rate is about 850 simple requests per second or 480 lookup-request pairs per second.
Update: numbers are about two times worse for 0.6.0 release. We are investigating this issue.
Roadmap¶
0.x¶
- Provide arbitrary data for service via name server
- Introduce asynchronous client API (using pycom.ioloop()) via pycom.ext.async.AsyncContext class
- Remote FS service for exchanging blobs of any size
- Name servers replication (with and without domains)
- Messaging middleware system on top of PyCOM via special service with org.pycom.messaging.queue, org.pycom.messaging.message interfaces and @pycom.ext.messaging.listener, @pycom.ext.messaging.handler decorators
- Local peer optimization (switch to ipc:// sockets, transfer attachments via local files)
- Look into performance drop after 0.6.0
1.0¶
- C++ client stubs compiler
- Stable release with bug fixes!
1.x¶
- Service pool management software
- Reliable delayed calls support on top of messaging middleware
- Authentication of services on registering
- Workflow extension for defining business processes
- ... more coming later ...