Hi Francis,<div><br></div><div>Which version of vortex has the API &quot;vortex_thread_pool_setup&quot;? As of now I am using version 1.1.8. It does not have this API.</div><div><br></div><div>I have one connection created per instance of vortex context. The reason I have 1-1 mapping between context and session is that it gives flexibility to set different timeout for different connections. Having a single context would mean I&#39;ve to use same timeout for all connections.</div>
<div><br></div><div>I looked at the implementation of &quot;vortex_connection_connect_timeout&quot; API. This API does not seem to set the timeout to the context instead it sets the value to an environment variable. The timeout will be set to context only if  &quot;vortex_connection_get_connect_timeout&quot; API is invoked after invocation of &quot;vortex_connection_connect_timeout&quot; API. Is this behavior intentional?</div>
<div><br></div><div>Another issue is that  &quot;vortex_connection_connect_timeout&quot; API sets an environment variable which is later read in &quot;
vortex_connection_get_connect_timeout&quot; API. How does it work when two threads try to set timeout for two different contexts at the same time?</div><div><br></div><div>Here is one of my observations:</div><div>Vortex creates joinable threads. It looks like RedHat Linux OS has a limit on the number of joinable threads that can be created in a process. The limit looks to be around 250 (probably 256).</div>
<div><br></div><div>Thanks</div><div>Subrahmanya<br><br><div class="gmail_quote">On Wed, Feb 29, 2012 at 7:04 PM, Francis Brosnan Blazquez <span dir="ltr">&lt;<a href="mailto:francis@aspl.es">francis@aspl.es</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&gt; Hi<br>
<br>
Hi Subrahmanya,<br>
<div class="im"><br>
&gt; I wanted to understand thread pool mechanism in vortex.<br>
<br>
</div>Ok,<br>
<div class="im"><br>
&gt; I see that vortex creates a pool of threads for each context and the<br>
&gt; default pool size is 5. This pool is shared across all connections<br>
&gt; created using this context. Is that correct?<br>
<br>
</div>Yes,<br>
<br>
&gt; Does it expand/shrink automatically?<br>
<br>
By default no, but you can use vortex_thread_pool_setup to do so (even<br>
at runtime).<br>
<div class="im"><br>
&gt; Ideally I would not like to create 5 threads when context is created<br>
&gt; instead it has to be created only when a new thread is required.<br>
<br>
</div>You can&#39;t anticipate this (for example, a thread from the pool is<br>
required to process channel start reply). You need at least 1 thread in<br>
the pool.<br>
<br>
See documentation on [1] for more details:<br>
<br>
[1] <a href="http://www.aspl.es/fact/files/af-arch/vortex-1.1/html/group__vortex__thread__pool.html" target="_blank">http://www.aspl.es/fact/files/af-arch/vortex-1.1/html/group__vortex__thread__pool.html</a><br>
<div class="im"><br>
&gt; If the thread pool does not expand automatically then creating many<br>
&gt; connections over the same context wouldn&#39;t be a good idea since that<br>
&gt; can lead to performance issues. I see that pool size can be configured<br>
&gt; through environment variable which means the value is applicable to<br>
&gt; any context created in that process. If the pool is not<br>
&gt; expandable/shrinkable then it may not be a good idea to allocate 5<br>
&gt; threads per context. This could be a burden in some scenarios when<br>
&gt; multiple contexts are created in the process. Activities over<br>
&gt; different connections created with different contexts might not be<br>
&gt; uniform. This means creating 5 threads (or whatever value is<br>
&gt; configured through the environment variable) for some of the contexts<br>
&gt; may be optimum and for some this value would be high and for some it<br>
&gt; could be low as well. So not having a expandable/shrinkable pool would<br>
&gt; mean high resource usage even in case of very less activity.<br>
<br>
</div>Ok, this is not the case: vortex includes facilities for automatic<br>
thread pool expansion/reduction. At the same time you can also do it<br>
yourself on top of vortex thread pool using<br>
vortex_thread_pool_add/vortex_thread_pool_remove (even at runtime).<br>
<div class="im"><br>
&gt; For me the solution seems to be to maintain a global thread pool<br>
&gt; rather than having a thread pool per context and the global thread<br>
&gt; pool has to be shared by different contexts. And, the thread pool has<br>
&gt; to be expanded when there is high activity and there are no threads<br>
&gt; available and reduced when there is less activity. Yes there should be<br>
&gt; a limit on the max number of threads to be created in this pool. This<br>
&gt; way resource usage can be controlled when there is no activity on the<br>
&gt; connections.<br>
<br>
</div>Ok, why do you want to create several separated VortexCtx objects but<br>
sharing a global thread pool? I mean, why don&#39;t use a single VortexCtx?<br>
<br>
&gt; Thanks<br>
&gt; Subrahmanya<br>
&gt; _______________________________________________<br>
&gt; Vortex mailing list<br>
&gt; <a href="mailto:Vortex@lists.aspl.es">Vortex@lists.aspl.es</a><br>
&gt; <a href="http://lists.aspl.es/cgi-bin/mailman/listinfo/vortex" target="_blank">http://lists.aspl.es/cgi-bin/mailman/listinfo/vortex</a><br>
<br>
--<br>
Francis Brosnan Blázquez &lt;<a href="mailto:francis.brosnan@aspl.es">francis.brosnan@aspl.es</a>&gt;<br>
ASPL<br>
91 134 14 22 - 91 134 14 45 - 91 116 07 57<br>
<br>
AVISO LEGAL<br>
<br>
Este mensaje se dirige exclusivamente a su destinatario. Los datos<br>
incluidos en el presente correo son confidenciales y sometidos a secreto<br>
profesional, se prohíbe divulgarlos, en virtud de las leyes vigentes. Si<br>
usted no lo es y lo ha recibido por error o tiene conocimiento del mismo<br>
por cualquier motivo, le rogamos que nos lo comunique por este medio y<br>
proceda a destruirlo o borrarlo.<br>
<br>
En virtud de lo dispuesto en la Ley Orgánica 15/1999, de 13 de<br>
diciembre, de Protección de Datos de Carácter Personal, le informamos de<br>
que sus datos de carácter personal, recogidos de fuentes accesibles al<br>
público o datos que usted nos ha facilitado previamente, proceden de<br>
bases de datos propiedad de Advanced Software Production Line, S.L.<br>
(ASPL). No obstante, usted puede ejercitar sus derechos de acceso,<br>
rectificación, cancelación y oposición dispuestos en la mencionada Ley<br>
Orgánica, notificándolo por escrito a:<br>
ASPL - Protección Datos, C/Antonio Suárez 10 A-102, 28802, Alcalá de<br>
Henares (Madrid).<br>
<br>
</blockquote></div><br></div>