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

Reply via email to