Future of the Ribbon library, performance of asp.net, and more…

3 02 2008

Hi,

It has been a long time since my last post, but I have had an exam period of 6 weeks. I will be free monday :D

Regarding the Ribbon Sharp library, we are trying to distinguih ourself from other vendors. In addition, we would like to find a new name for the project. So if you have a nice idea, post it as a comment!!

Regarding the development, it is now possible to place the title of a group at the left, right, or top in addition to the original bottom position. Personally, I think that the left position is great because it helps make the overall bar thinner (and we tend to have wide screens nowadays). You can see the result below:

ribbon20080203.png

As you can see, the expansion button take a lot of space in such a layout. I think we should put it at the opposite side of the group whenever the title is placed at the left or right. I have also tried to understand how key bindings work with Gtk#. As far as I have understood, I had to give a name for the signals that can be activated through a key. Consequently, I did so for most functionalities of the library. But I have not tested that part yet.

The great news is that PaweÅ‚ ‘X4lldux’ Drygas got the library to work under Windows, and fixed a few bugs. I should get its patch soon.

Of course you may wonder why I have been so long, or why I have not produced more code in such a long period! The answer is that I have also produced 5000 lines of C# for my own, new, object database. I find that project much more challenging and fun to hack. It should be out for the summer. In addition, I will develop for the Android challenge during February.

Finally, I recently quit my asp.net hoster due to bad service. I’m now at linode, and had to use Mono to host the web site. Consequently, I did a few benchmark to test performance and stability. The objective of the benchmark is to test the memory leaks, and responsiveness. Consequently, the page is a webhandler (.ashx), that writes back “Hello Word” followed by the Http Host specified by the request object. Here are the results:

In an InnoBox Virtual Machine running on my Intel E6400, using ab -c 100 -n 50000 (100 concurrent connections, 50000 requests) :

  • fastcgi-mono-server2 /socket=unix /multiplex=True, using nginx
    RSS=290MB, 175 req/s, 33 failed requests
  • fastcgi-mono-server2 /socket=tcp /multiplex=True, using nginx
    RSS=274MB, 161 req/s, 296 failed requests
  • xsp2
    RSS=25.5MB, 373 req/s, 0 failed requests

Cleary fastcgi has memory leaks, and performance troubles. Of course, fastcgi is still young.

And now on my Intel Pentium 4 2.7 Ghz:

  • mod_mono2
    372 req/s, 0 failed, 2.242 MiB transfered
  • xsp2
    465 req/s, 0 failed, 1.714 MiB transfered
  • nginx+mod_wsgi (python)
    3610 req/s, 0 failed, 1.7 MiB transfered

Conclusion? We should try to throw the asp.net stack out of the window first, and modify the code of mod_wsgi to host mono instead of python, calling a simple method similar to wsgi. If the performance is on par with python, we could then bind that to the asp.net, and check performance. mod_wsgi is released under the MIT license, so no trouble there. For now, I use nginx which proxifies requests to asmx, ashx, and aspx files to an xsp2 server.

Wow, I do not blog often, but when do, it is worth a thousand pages.

EDIT: The problem with nginx+mod_wsgi is that it is not multi threaded, but multi process. It is likely due to the fact that nginx is event-based.

Laurent.