This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Nessus Performance on Cygwin


> -----Original Message-----
> From: cygwin-owner On Behalf Of Abhijit .
> Sent: 30 April 2004 15:06

> Hi,
> 
> I have ported Nessus (a network security scanner on Unix) to
> Cygwin, 

  Can I have a copy of your patches please?

> and I was running some performance tests on it.
> Here are some observations about the Cygwin port performance:
> 
> The performance gap between the Linux and Cygwin versions is
> large - the Cygwin port takes at least 10 times longer than the
> linux version. Also, the Cygwin port takes longer if more plugins
> are run simultaneously i.e., it performances better with one plugin
> at a time than with ten plugins at a time (ten plugins = 10 
> fork() calls
> and 10 processes communicating over a pipe with the spawning
> process). I ran a total of 800 plugins with 1 plugin at a time, and
> it took 12 minutes on Cygwin! The linux version took just under a
> minute to finish. On linux, performance actually increases 
> with running
> more plugins simultaneously.
> 
> I am trying to find out why Nessus performance on Cygwin degrades
> when we run more plugins at a time.  Nessus uses a lot of 
> fork() calls,
> along with socket and pipe IO, and I was wondering whether these
> operations contribute to the large performance gap on Cygwin.


  This is a known issue.  forking is a *much* more system intensive process
under cygwin than native *nix; because the windoze API doesn't quite supply
the semantics needed by fork, cygwin has to do a whole boatload of extra
operations behind the scenes.  In particular I'd guess the requirement for
parent and child to wait and sync with each other at startup rather than
both just going at their own rate must cause a big performance hit.

  The cygwin overhead on sockets should be minimal; IIUIC it's a fairly thin
wrapper/shim layer over the native winsock.  Having said that, select (...)
is going to be heavier work on cygwin than on native, owing to the fact that
'doze has different types of handles for files and sockets which can't be
interspersed.



    cheers, 
      DaveK
-- 
Can't think of a witty .sigline today....


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]