> I notice that if changing the default value of conf `ioThreads` of pulsar
> client, it does not just affect the num of io threads, and it also affects
> these thread pools:
> - internal executor of the client
> - scheduled executor of the client
> - HTTP client io thread pool of pulsar admin client

I think it's ok. Users can change the IO threads, it will also change the
above thread pools.
It could be different issues. We can support changing the scheduled
executor threads
and
HTTP client IO threads independently once we need it.

>From the performance test experience before. I don't see any obvious
negative impact from
the scheduled executor and HTTP client IO threads after changing the IO
threads configuration.
One salient point is if you don't change the IO threads, you will not be
able to get an expected
message producing and consuming throughput.

Thanks,
Penghui

On Thu, Dec 22, 2022 at 12:35 AM Yubiao Feng
<yubiao.f...@streamnative.io.invalid> wrote:

> Hi PengHui
>
> I notice that if changing the default value of conf `ioThreads` of pulsar
> client, it does not just affect the num of io threads, and it also affects
> these thread pools:
> - internal executor of the client
> - scheduled executor of the client
> - HTTP client io thread pool of pulsar admin client
>
> see: https://github.com/apache/pulsar/pull/19020
>
>  Should we provide other APIs to configure these three thread pools?
>
> Thanks
> Yubiao
>
> On Tue, Dec 20, 2022 at 11:17 AM PengHui Li <peng...@apache.org> wrote:
>
> > Hi all,
> >
> > I noticed the Java Client (I haven't checked other clients) uses 1 IO
> > thread and 1 listener
> > thread by default. It will require users to update the thread
> configuration
> > if they have
> > multiple cores and desired high throughput.
> >
> > Here is the example that we change to 16 IO threads in
> > openmessaging benchmark
> >
> >
> https://github.com/openmessaging/benchmark/blob/master/driver-pulsar/pulsar.yaml#L22
> >
> > We can apply the configuration of the threads based on the CPU cores. So
> > that for the
> > most common cases, users don't need to touch the thread configuration.
> >
> > ```
> > private int numIoThreads = Runtime.getRuntime().availableProcessors();
> > private int numListenerThreads =
> > Runtime.getRuntime().availableProcessors();
> > ```
> >
> > WDYT?
> >
> > Thanks,
> > Penghui
> >
>

Reply via email to