[erlang-questions] Does port driver block scheduler threads?

Zhemzhitsky Sergey <>
Tue Jul 3 16:04:16 CEST 2012


Hi Serge,

Thanks a lot.

Whether it is correct that the same behavior is applicable to the ordinary ports?

Best Regards,
Sergey 

-----Original Message-----
From:  [mailto:] On Behalf Of Serge Aleynikov
Sent: Tuesday, July 03, 2012 3:37 PM
To: 
Subject: Re: [erlang-questions] Does port driver block scheduler threads?

Driver callbacks are executed by a scheduler thread in synchronous manner, so what you are describing is a normal behavior of a linked-in driver.  Use driver_async to off-load a long computation to another thread from a pool different from the scheduling threads.

On 7/3/2012 7:20 AM, Zhemzhitsky Sergey wrote:
> Hi erlangers,
> 
>  
> 
> Recently we have developed port (linked-in) driver and faced with some 
> performance issues.
> 
>  
> 
> The port uses ERL_DRV_FLAG_USE_PORT_LOCKING locking mode, so as we 
> understand calls to different port instances should have not blocked 
> each other.
> 
> SMP count is greater than 1.
> 
>  
> 
> So the first question is:
> 
> Is it possible to have multiple port instances executing 
> time-consuming operation in parallel, i.e. at the same time?
> 
>  
> 
> We expected port instances do not influence on each other. However, 
> all the calls are blocked but the first one. So the scheduler thread 
> seems to be blocked during the port instance invocation.
> 
> Is driver_async function required for the issues like above?
> 
> Is it possible to unblock the scheduler thread before erlang:port_call 
> completes?
> 
>  
> 
> Best Regards,
> 
> Sergey
> 
>  
> 
> _______________________________________________________
> 
>  
> 
> The information contained in this message may be privileged and conf 
> idential and protected from disclosure. If you are not the original 
> intended recipient, you are hereby notified that any review, 
> retransmission, dissemination, or other use of, or taking of any 
> action in reliance upon, this information is prohibited. If you have 
> received this communication in error, please notify the sender 
> immediately by replying to this message and delete it from your 
> computer. Thank you for your cooperation. Troika Dialog, Russia.
> 
> If you need assistance please contact our Contact Center (+7495) 258
> 0500 or go to www.troika.ru/eng/Contacts/system.wbp
> 
>  
> 
> 
> 
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
> 

_______________________________________________
erlang-questions mailing list

http://erlang.org/mailman/listinfo/erlang-questions



More information about the erlang-questions mailing list