Performance on windows?

I have seen ePoll mentioned several times as one thing that linux has that you don’'t get on windows. Does this offer some type of performance enhancement? Is it necessary? Is it worth it? What is it?


I am by no means an expert here but I’'ll take a stab at this one. Basically, ePoll is used to create threads for each client request. It is extremely scalable for applications that need 20,000+ clients. However, Windows uses a different method of handling multiple client requests that is not as scalable.

Here are the main three options (there are others though):

  1. Serve many clients with each thread, and use nonblocking I/O and level-triggered readiness notification
  • traditional poll, kqueue, traditional select
  1. Serve many clients with each thread, and use nonblocking I/O and readiness change notification
  • epoll, kqueue
  1. Serve many clients with each thread, and use asynchronous I/O and completion notification
  • Windows

For reasons beyond my technical understanding, the level of precedence seems to be epoll, kqueue, poll, and select. In Windows, python will be forced to use select because the other three are non-existent in Windows. When used in Windows, the python file (v23): states:

Unable to install any good reactors (kqueue, epoll, poll).

We fell back to using select. You may have scalability problems.

This reactor will not support more than 1024 connections +at a time.

Unknown reactor: select . Using select(), reactor.

I am assuming that is because the select method is not scalable. So, from my perspective, here is what I would say.

  1. Does this offer some type of performance enhancement?
  • Yes, especially if you have a large userbase and especially since applications like jabber make many concurrent connections to the server.
  1. Is it necessary?
  • Depends on the environment.
  1. Is it worth it?
  • Not really sure this makes sense? Is what worth it? Running linux over Windows? If that is the question, I would say yes. But not just because of ePoll.
  1. What is it?
  • See above. I’'m sure some of the experts on this forum could expand on exactly what it is though.

Here is a good read on this subject:

Thanks for the response. That’‘s about how I understood it. Although it’‘s good to hear a definite number of 1024 connections. It’'s strange to me that windows would have a limitation like that. I know there are many scalable applications that run on top of windows. But maybe they are using a different backend model.

Yes, my question was whether it is better to run linux on windows (through vmware server specificially.) But why do you feel this is a better option even without ePoll. Are there other benefits?


The reason I prefer linux is because you are the master of your machine. Linux is just more scalable. In windows, you are pretty much stuck with the core you are given. You can tweak some things but for the most part, you can not fine tune your box the same way in which you can with Linux.

I don’‘t want to start the old holy war. I dual boot my laptop and live in an MS AD world at work. But when I need an appliance for something like an IM server, I only want the bare necessities. I want to reduce the attack surface and limit the processes so the box doesn’‘t have to think about anything except what it is intended to. Why can’'t I remove internet explorer from a domain controller? What about all the other services that you can not remove in Windows? MS decides what is best for you… even if you are a seasoned admin.

However, in linux, I can build that box with only the essentials. mysql, wildfire, ssh, and iptables. I don’'t have to worry about some software MS decided I had to have. Now, I know exactly what is installed on the box, what it is doing and I only have to concern myself with those pieces.

But, that is just my two cents…

That’‘s a fair enough response. Linux is more customizable I don’‘t think there is any doubt about that. Of course my biggest worry with implementing a Linux VM is the management beyond me. Since I’‘m the only one who knows their way around linux. The management of Wildfire through a web interface I think is great. My only worry is that something would go wrong on the VM itself and I would be the only one who could fix it. To me that’‘s a bit of a liability to the company. We have two Linux VM’'s today because it seemed the best choice at the time. They sit there and do their job and I may never have to worry about them.