Hi Carl

The only motivation to use multiple processes is to be able to parallelize
blocking calls (since event driven handling is not useful)  In my case
forward proxy is not a bottleneck, however when my code spawns multiple
processes as per
http://stackoverflow.com/questions/10077745/twistedweb-on-multicore-multiprocessor

and I run multiple concurrent clients, I see that the server's processes
are not efficiently utilized. Specifically, even if there are outstanding
requests, one of the processes accepts requests lot more while other
processes are idling. I was able to confirm this by printing the Process
IDs of the processes which are handling request

This sort of imbalance could lead to underutilization of CPU - also
discussed here https://lwn.net/Articles/542629/

Hence I was curious to know how Twisted multiprocessing works. It seems
SO_REUSEPORT is not used within Twisted and as per Gavin's reply can be
used "outside" of Twisted.





On Wed, Jun 10, 2015 at 5:42 PM, Carl Waldbieser <cwaldbie...@gmail.com>
wrote:

> There is a twisted developer guide for communicating with child
> processes:
> http://twistedmatrix.com/documents/current/core/howto/process.html
>
> I'm not sure I understand why having multiple processes listen on the same
> socket is desirable in your case.  From reading the articles you linked to,
> it seems like it is only useful in the case where a forward proxy becomes a
> bottleneck.  Is that the case wirh your application?
>
> Thanks,
> Carl Waldbieser
> On Jun 9, 2015 10:03 PM, "Sagar Dixit" <sagar.di...@gmail.com> wrote:
>
>> Hi,
>>
>> I am exploring Twisted Web for my RESTful application. My application is
>> stateless and involves storing and retrieving objects based on Object-ID.
>> This application will run on beefy (multicore, lots of memory) machine.
>> However, not all APIs that the application issues to underlying storage are
>> async and hence I cannot fully utilize Deferreds
>> Which means, there will some blocking calls and hence my primary interest
>> is to use Twisted Web in multiprocessing mode
>>
>> I came across
>> http://stackoverflow.com/questions/10077745/twistedweb-on-multicore-multiprocessor
>>
>> However, I am not sure if it is the "correct" way of doing things.
>>
>> Hence I had some questions around it:
>>
>> 1.  Is there an interface (similar to defertoThread) which allows me to
>> execute a blocking call in a separate process ?
>>
>> 2. Does reactor synchronize access of all processes to the shared listen
>> socket ?
>>
>> 3. Is there a sample code I can refer to  where the application is
>> spawning subprocesses to handle HTTP requests ?
>>
>> Thanks in advance!
>>
>>
>> _______________________________________________
>> Twisted-web mailing list
>> Twisted-web@twistedmatrix.com
>> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
>>
>>
> _______________________________________________
> Twisted-web mailing list
> Twisted-web@twistedmatrix.com
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
>
>


-- 
ssdixit
_______________________________________________
Twisted-web mailing list
Twisted-web@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

Reply via email to