I think we should have something like Mono.Sockets with abstraction of event loop and I/O code based on libuv or whatever, and build classes like HttpListener on top of it.
2014-05-15 21:30 GMT+04:00 Nikita Tsukanov <kek...@gmail.com>: > I suspect that having libuv behind socket code won't help much, since most > of socket performance problems are related to the fact that > BeginSend/Recieve, event loop and AsyncCallback run in different threads. > Because of that we have overhead even with simple > void ReadNext() > { > _socket.BeginRecieve(buf, blablabla, res=> > { > _socket.EndRecieve(res); > ReadNext(); > }); > } > On windows that works fine because of IOCP behind that abstraction that is > designed to be used with thread pool. *nix platforms doesn't have anything > like IOCP, only epoll/kqueue, so for actual performance improvement one > have to use single-threaded approach (with round-robin connection dispatch > between workers), when all I/O operations and event loop run in single > thread. > > > > > > 2014-05-15 20:55 GMT+04:00 Miguel de Icaza <mig...@xamarin.com>: > > Hello, >> >> Well, i want to see a prototype, and then decide. >> >> So this needs to be done with some kind of peer framework where this is >> done. >> >> >> On Thu, May 15, 2014 at 9:29 AM, Greg Young <gregoryyou...@gmail.com>wrote: >> >>> Yes I would say moving both to libuv would be a good move :) >>> >>> >>> On Thu, May 15, 2014 at 4:22 PM, Roope Kangas >>> <ro...@grandcrugames.com>wrote: >>> >>>> Hi, >>>> >>>> On a tangent... >>>> >>>> It would be really nice if something like libuv would the thing behind >>>> Socket code. >>>> >>>> Could that be something to investigate? >>>> >>>> Mono could basically piggyback on nodejs development. >>>> >>>> -- >>>> Roope Kangas >>>> >>>> On 15.5.2014, at 15.00, Greg Young <gregoryyou...@gmail.com> wrote: >>>> >>>> So the one issue I have seen with the libevent implementation is that >>>> it seems to perform very poorly in windows (+-5k hello worlds/second where >>>> as its closer to 100k/second in linux). From researching libevent they >>>> supposedly now use IOCP in windows and should be better but I have not been >>>> able to make this happen. It may also be worth looking at libuv which is >>>> pretty close to a drop in replacement for libevent as it seems to get much >>>> better performance in windows and similar performance in linux. @Nikita I >>>> will hopefully have some time next week and likely will send some more pull >>>> requests in relation to the memory allocation patterns. >>>> >>>> >>>> On Thu, May 15, 2014 at 6:56 AM, Miguel de Icaza <mig...@xamarin.com>wrote: >>>> >>>>> Hello Nikita! >>>>> >>>>> Your approach looks fabulous! I look forward to trying it out! >>>>> >>>>> Miguel >>>>> >>>>> >>>>> On Wed, May 14, 2014 at 11:40 AM, Nikita Tsukanov <kek...@gmail.com>wrote: >>>>> >>>>>> I'll try to implement OWIN host on top of my libevent built-in http >>>>>> server ( https://github.com/kekekeks/evhttp-sharp ) since for now >>>>>> it's the fastest thing for handling HTTP-requests on Mono I know (now it >>>>>> has host implementation for NancyFx which we are using in production for >>>>>> half of a year). >>>>>> Although both evhttp-sharp and FastCGI servers like HyperFastCGI and >>>>>> Fos, are incapable of serving websockets (one because of underlying >>>>>> implementation, another because of limitations of FastCGI protocol), so >>>>>> it >>>>>> would be great to wrap something like >>>>>> https://github.com/kekekeks/evhttp-sharp which has websocket support >>>>>> and positioned as evhttp drop-in replacement. >>>>>> >>>>>> Regards, >>>>>> Nikita >>>>>> >>>>>> >>>>>> 2014-05-14 19:29 GMT+04:00 Marcelo Zabani <mzab...@gmail.com>: >>>>>> >>>>>> Wow! This is such great news!! >>>>>>> >>>>>>> As for running Owin applications with Unix HTTP servers, I've >>>>>>> developed Fos <http://github.com/mzabani/Fos> on a very permissive >>>>>>> license and a focus on good documentation and running with Mono on >>>>>>> *nix. I >>>>>>> would very much love getting contributions on this, because my spare >>>>>>> time >>>>>>> is running lower these days. >>>>>>> >>>>>>> Hope it helps, >>>>>>> Marcelo. >>>>>>> >>>>>>> >>>>>>> On Wed, May 14, 2014 at 12:44 AM, Miguel de Icaza < >>>>>>> mig...@xamarin.com> wrote: >>>>>>> >>>>>>>> Hello guys! >>>>>>>> >>>>>>>> Microsoft has open sourced ASP.NET vNext: >>>>>>>> >>>>>>>> http://github.com/aspnet/home >>>>>>>> >>>>>>>> This is an entire new web stack that only needs the core of Mono >>>>>>>> (does not even use System.Web.dll!). >>>>>>>> >>>>>>>> So these are of course great news, because (a) The core Mono has >>>>>>>> been in active development, and (b) that means that Mono's on the >>>>>>>> server >>>>>>>> can be used without all those pesky limitations that have been >>>>>>>> plaguing us >>>>>>>> for years. >>>>>>>> >>>>>>>> So we ran into a couple of limitations in Mono: some classes that >>>>>>>> they need are not implemented (I filed a bug, and a couple of Xamarin >>>>>>>> folks >>>>>>>> decided to take on that on their copious spare time) and we have a >>>>>>>> couple >>>>>>>> of bugs on FileSystemWatcher on OSX. >>>>>>>> >>>>>>>> But this is a great time to: >>>>>>>> >>>>>>>> - Get involved with the github.com/aspnet project and submit >>>>>>>> contributions that will make the software run on Unix. >>>>>>>> >>>>>>>> - Look into technologies like Owin and Katana (sp?) and help us >>>>>>>> have a story that plugs into Unix HTTP servers (the equivalent of >>>>>>>> our >>>>>>>> bridge between Apache and mono: mod_mono, or our Fast CGI bridge to >>>>>>>> mono). >>>>>>>> >>>>>>>> - Take Mono's new profiling tools and performance counters for >>>>>>>> a spin and help us fine tune the runtime to run .NET code faster on >>>>>>>> Unix >>>>>>>> than you can on Windows. While this is a tall order, my friend >>>>>>>> David >>>>>>>> Miller would expect nothing less from us. >>>>>>>> >>>>>>>> Hugs and love, >>>>>>>> Miguel >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> Mono-devel-list mailing list >>>>>>>> Mono-devel-list@lists.ximian.com >>>>>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> _______________________________________________ >>>>>>> Mono-devel-list mailing list >>>>>>> Mono-devel-list@lists.ximian.com >>>>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>>>>> >>>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> Mono-devel-list mailing list >>>>>> Mono-devel-list@lists.ximian.com >>>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>>>> >>>>>> >>>>> >>>>> _______________________________________________ >>>>> Mono-devel-list mailing list >>>>> Mono-devel-list@lists.ximian.com >>>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>>> >>>>> >>>> >>>> >>>> -- >>>> Studying for the Turing test >>>> >>>> _______________________________________________ >>>> Mono-devel-list mailing list >>>> Mono-devel-list@lists.ximian.com >>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>> >>>> >>>> _______________________________________________ >>>> Mono-devel-list mailing list >>>> Mono-devel-list@lists.ximian.com >>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>> >>>> >>> >>> >>> -- >>> Studying for the Turing test >>> >>> _______________________________________________ >>> Mono-devel-list mailing list >>> Mono-devel-list@lists.ximian.com >>> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>> >>> >> >> _______________________________________________ >> Mono-devel-list mailing list >> Mono-devel-list@lists.ximian.com >> http://lists.ximian.com/mailman/listinfo/mono-devel-list >> >> >
_______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list