Denis, there was no discussion on dev list. Do not worry, Son of the Earth,
you are all right :) I thought I would send letter a bit later when I
finish the full scope of optimizations I have in plan.

Currently, I use striped pool only for cache messages that are targeted to
some defined partition - cache update benchmarks showed very good growth in
throughput.

I tried to switch public and system pool to striped mode, but I get a lot
of hangs on TC - sometimes due to issues in tests sometimes due to issues
in Ignite. For example, under some circumstances we can synchronously wait
in system thread for some message to come. When message handler gets to the
same stripe Ignite hangs. I have a list of such places discovered so far.
After I fix them I will try re-approach the pools.

Another reason for not switching to striped pool completely is that stripes
are good for cache updates and single or batched get operations since they
reduce inter-thread communication and synchronization to minimum, however I
think that we should run, for example, SQL queries in old fashioned pools -
first, they can fallback to scanning random data, second, we pause cache
updates in some partition for query execution time. I was thinking of
splitting CPU resources between striped pool and system pool in some ratio.
I will follow up on this in a couple of days and will explain what has been
done and what I want to do.

Vladimir, I hope I responded to your points.

Thanks!

--Yakov

Reply via email to