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

Zabrane Mickael <>
Tue Jul 3 16:25:10 CEST 2012


Hi Serge,

Where one can find a simple driver_async example to learn from?

thx
Zab

On Jul 3, 2012, at 1:37 PM, Serge Aleynikov wrote:

> 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

Regards,
Zabrane




More information about the erlang-questions mailing list