You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Dzmitry.Lahoda (JIRA)" <ji...@apache.org> on 2013/04/15 19:58:17 UTC

[jira] [Comment Edited] (THRIFT-1891) Add Windows ALPC transport which is right counterpart of Unix domain sockets

    [ https://issues.apache.org/jira/browse/THRIFT-1891?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13631936#comment-13631936 ] 

Dzmitry.Lahoda edited comment on THRIFT-1891 at 4/15/13 5:57 PM:
-----------------------------------------------------------------

I made test using MS-RPC from C# interop (https://github.com/asd-and-Rizzo/NDceRpc/blob/master/src/NDceRpc.IntegrationTests/PerformanceTests.cs, TestPerformanceOnLocalRpc, TestPerformanceOnNamedPipe).

ALPC is ~2 times faster then Named Pipe.

Using ALPC from MS-RPC is documented and public, bad not directly.

Will add up pure C++ tests later of exchanging data between 2 process.


                
      was (Author: dzmitry.lahoda):
    I made test using MS-RPC from C# inteop (https://github.com/asd-and-Rizzo/NDceRpc/blob/master/src/NDceRpc.IntegrationTests/PerformanceTests.cs, TestPerformanceOnLocalRpc, TestPerformanceOnNamedPipe).

ALPC is ~2 times faster then Named Pipe.

Using ALPC from MS-RPC is documented and public, bad not directly.

Will add up pure C++ tests later of exchanging data between 2 process.


                  
> Add Windows ALPC transport which is right counterpart of Unix domain sockets
> ----------------------------------------------------------------------------
>
>                 Key: THRIFT-1891
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1891
>             Project: Thrift
>          Issue Type: New Feature
>          Components: C++ - Library
>            Reporter: Dzmitry.Lahoda
>              Labels: performance, transport, windows
>   Original Estimate: 192h
>  Remaining Estimate: 192h
>
> Reading about local IPC on Windows leads me to idea that Named Pipes is not the transport should be used where Unix Domain sockets are on Unix. Other, most probably faster, should be.
> ALPC and Unix Domain sockets are similar:
> 1. No networking
> 2. Simple names (no specific prefix)
> 3. Articles impress that Windows ALPC and Unix Domain Sockets use more OS "kernel" then Windows Named Pipes.
> Unix Domain sockets and Windows Named Pipes:
> 1. Named pipes are design for Windows Domain printer and file sharing, not local IPC.
> 2. means Named Pipes do some networking even if are local by security.
> True MS design:
> Local Out of process COM and MS-RPC uses ALPC for local inter process communication everywhere in the OS components.
> Can find in many processes via Sysinternals Process Monitor, look for
> ALPC Port : \RPC Control\OLE[RANDOM_GUID].
> Value:
> I think would be faster with lower resource usage.
> Links:
> http://en.wikipedia.org/wiki/Local_Procedure_Call
> http://www.zezula.net/en/prog/lpc.html
> Search LRPC on http://technet.microsoft.com/en-us/library/cc738291(v=ws.10).aspx

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira