Alexey,

We've benchmarked by yardstick commits 130376741bf vs ed52559eb95 and the
performance of ed52559eb95 is better for about 2.5% on average on our
environment (about the same results we got benchmarking 65c30ec6 vs
0606f03d). We've made 24 runs for each commit of
IgnitePutTxImplicitBenchmark (we got maximum drop for 2.9 on this
benchmark), 200 seconds warmup, 300 seconds benchmark, 6 servers, 5 clients
50 threads each. Yardstick results for this configuration:
Commit 130376741bf: avg TPS=164096, avg latency=9173464 ns
Commit ed52559eb95: avg TPS=168283, avg latency=8945908 ns

пт, 11 сент. 2020 г. в 09:51, Artem Budnikov <a.budnikov.ign...@gmail.com>:

> Hi Everyone,
>
> I posted an instruction on how to publish the docs on
> ignite.apache.org/docs [1]. When you finish with Ignite 2.9, you can
> update the docs by following the instruction. Unfortunately, I won't be
> able to spend any time on this project any longer. You can send your pull
> requests and questions about the documentation to Denis Magda.
>
> -Artem
>
> [1] : https://cwiki.apache.org/confluence/display/IGNITE/How+to+Document
>
> On Thu, Sep 10, 2020 at 2:45 PM Alexey Goncharuk <
> alexey.goncha...@gmail.com> wrote:
>
>> Alexey,
>>
>> I've tried to play with message factories locally, but unfortunately, I
>> cannot spot the difference between old and new implementation in
>> distributed benchmarks. I pushed an implementation of MessageFactoryImpl
>> with the old switch statement to the ignite-2.9-revert-12568 branch
>> (discussed this with Andrey Gura, the change should be compatible with the
>> new metrics as we still use the register() mechanics).
>>
>> Can you check if this change makes any difference performance-wise in your
>> environment? If yes, we can go with runtime code generation in the long
>> term: register classes and generate a dynamic message factory with a
>> switch
>> statement once all messages are registered (not in 2.9 though, obviously).
>>
>> ср, 9 сент. 2020 г. в 14:53, Alex Plehanov <plehanov.a...@gmail.com>:
>>
>> > Hello guys,
>> >
>> > I've tried to optimize tracing implementation (ticket [1]), it reduced
>> the
>> > drop, but not completely removed it.
>> > Ivan Rakov, Alexander Lapin, can you please review the patch?
>> > Ivan Artiukhov, can you please benchmark the patch [2] against 2.8.1
>> > release on your environment?
>> > With this patch on our environment, it's about a 3% drop left, it's
>> close
>> > to measurement error and I think such a drop is not a showstopper. Guys,
>> > WDYT?
>> >
>> > Also, I found that compatibility is broken for JDBC thin driver between
>> 2.8
>> > and 2.9 versions (ticket [3]). I think it's a blocker and should be
>> > fixed in 2.9. I've prepared the patch.
>> > Taras Ledkov, can you please review this patch?
>> >
>> > And one more ticket I propose to include into 2.9 [4] (NIO message
>> > send problem in some circumstances). I will cherry-pick it if there is
>> no
>> > objection.
>> >
>> > [1] https://issues.apache.org/jira/browse/IGNITE-13411
>> > [2] https://github.com/apache/ignite/pull/8223
>> > [3] https://issues.apache.org/jira/browse/IGNITE-13414
>> > [4] https://issues.apache.org/jira/browse/IGNITE-13361
>> >
>> > пн, 7 сент. 2020 г. в 14:14, Maxim Muzafarov <mmu...@apache.org>:
>> >
>> > > Alexey,
>> > >
>> > > I propose to include [1] issue to the 2.9 release. Since this issue is
>> > > related to the new master key change functionality which haven't been
>> > > released yet I think it will be safe to cherry-pick commit to the
>> > > release branch.
>> > >
>> > > [1] https://issues.apache.org/jira/browse/IGNITE-13390
>> > >
>> > > On Tue, 1 Sep 2020 at 12:13, Nikolay Izhikov <nizhi...@apache.org>
>> > wrote:
>> > > >
>> > > > Hello, Igniters.
>> > > >
>> > > > Alexey, please, include one more Python thin client fix [1] into the
>> > 2.9
>> > > release
>> > > > It fixes kinda major issue - "Python client returns fields in wrong
>> > > order since the 2 row when fields_count>10"
>> > > >
>> > > > [1] https://issues.apache.org/jira/browse/IGNITE-12809
>> > > > [2]
>> > >
>> >
>> https://github.com/apache/ignite/commit/38025ee4167f05eaa2d6a2c5c2ab70c83a462cfc
>> > > >
>> > > > > 31 авг. 2020 г., в 19:23, Alexey Goncharuk <
>> > alexey.goncha...@gmail.com>
>> > > написал(а):
>> > > > >
>> > > > > Alexey, thanks, got it. I am not sure we can optimize anything
>> out of
>> > > the
>> > > > > message factory with suppliers (at least I have no ideas right
>> now),
>> > so
>> > > > > most likely the only move here is to switch back to the switch
>> > approach
>> > > > > somehow preserving the metrics part. Probably, inlining the Ignite
>> > > messages
>> > > > > to the IgniteMessageFactoryImpl should do the trick. Let me
>> explore
>> > the
>> > > > > code a bit.
>> > > > >
>> > > > > P.S. I am surprised by the impact this part makes for the
>> > performance.
>> > > > > Message creation is indeed on the hot path, but a single virtual
>> call
>> > > > > should not make that much of a difference given the amount of
>> other
>> > > work
>> > > > > happening during the message processing.
>> > > > >
>> > > > > пн, 31 авг. 2020 г. в 18:33, Alex Plehanov <
>> plehanov.a...@gmail.com
>> > >:
>> > > > >
>> > > > >> Alexey, sorry, I wrongly interpreted our benchmark results.
>> > Actually,
>> > > we
>> > > > >> were looking for a drop using bi-sect in the range between
>> e6a7f93
>> > > (first
>> > > > >> commit in the 2.9 branch after 2.8 branch cut) and 6592dfa5 (last
>> > > commit in
>> > > > >> the 2.9 branch). And we found these two problematic commits.
>> > > > >>
>> > > > >> Perhaps only IGNITE-13060 (Tracing) is responsible for a drop
>> > between
>> > > > >> 2.8.1 and 2.9 (we have benchmarked 2.8.1 vs 2.9 with reverted
>> > > IGNITE-13060
>> > > > >> now and performance looks the same)
>> > > > >>
>> > > > >> Ticket IGNITE-12568 (MessageFactory refactoring) is not related
>> to
>> > > drop
>> > > > >> between 2.8.1 and 2.9, but still has some performance problem,
>> and
>> > we
>> > > can
>> > > > >> win back IGNITE-13060 drop by this ticket.
>> > > > >>
>> > > > >> Do we need more investigation on IGNITE-13060 or we leave it as
>> is?
>> > > > >>
>> > > > >> What should we do with IGNITE-12568 (MessageFactory refactoring)?
>> > > > >>
>> > > > >> пн, 31 авг. 2020 г. в 13:25, Alexey Goncharuk <
>> > > alexey.goncha...@gmail.com
>> > > > >>> :
>> > > > >>
>> > > > >>> Alexey,
>> > > > >>>
>> > > > >>> While investigating, I found that IGNITE-12568 has an incorrect
>> fix
>> > > > >>> version and is actually present in ignite-2.8.1 branch [1], so
>> it
>> > > cannot be
>> > > > >>> the source of the drop against 2.8.1.
>> > > > >>>
>> > > > >>> P.S. Looks like we need to enforce a more accurate work with fix
>> > > versions
>> > > > >>> or develop some sort of tooling to verify the fix versions.
>> > > > >>>
>> > > > >>> --AG
>> > > > >>>
>> > > > >>> [1]
>> > > > >>>
>> > >
>> >
>> https://github.com/apache/ignite/commit/3e492bd23851856bbd0385c6a419892d0bba2a34
>> > > > >>>
>> > > > >>> пн, 31 авг. 2020 г. в 12:42, Alexey Goncharuk <
>> > > alexey.goncha...@gmail.com
>> > > > >>>> :
>> > > > >>>
>> > > > >>>> пт, 28 авг. 2020 г. в 11:16, Alex Plehanov <
>> > plehanov.a...@gmail.com
>> > > >:
>> > > > >>>>
>> > > > >>>>> Guys,
>> > > > >>>>>
>> > > > >>>>> We have benchmarked 2.9 without IGNITE-13060 and IGNITE-12568
>> > > (reverted
>> > > > >>>>> it
>> > > > >>>>> locally) and got the same performance as on 2.8.1
>> > > > >>>>>
>> > > > >>>>> IGNITE-13060 (Tracing) - some code was added to hot paths, to
>> > trace
>> > > > >>>>> these
>> > > > >>>>> hot paths, it's clear why we have performance drop here.
>> > > > >>>>>
>> > > > >>>>> IGNITE-12568 (MessageFactory refactoring) - switch/case block
>> was
>> > > > >>>>> refactored to an array of message suppliers. The message
>> factory
>> > > is on
>> > > > >>>>> the
>> > > > >>>>> hot path, which explains why this commit has an impact on
>> total
>> > > > >>>>> performance.
>> > > > >>>>> I've checked JIT assembly output, done some JMH
>> microbenchmarks,
>> > > and
>> > > > >>>>> found
>> > > > >>>>> that old implementation of MessageFactory.create() about
>> 30-35%
>> > > faster
>> > > > >>>>> than
>> > > > >>>>> the new one. The reason - approach with switch/case can
>> > effectively
>> > > > >>>>> inline
>> > > > >>>>> message creation code, but with an array of suppliers
>> relatively
>> > > heavy
>> > > > >>>>> "invokeinterface" cannot be skipped. I've tried to rewrite the
>> > code
>> > > > >>>>> using
>> > > > >>>>> an abstract class for suppliers instead of an interface (to
>> > > > >>>>> replace "invokeinterface" with the "invokevirtual"), but it
>> gives
>> > > back
>> > > > >>>>> only
>> > > > >>>>> 10% of method performance and in this case, code looks ugly
>> > > (lambdas
>> > > > >>>>> can't
>> > > > >>>>> be used). Currently, I can't find any more ways to optimize
>> the
>> > > current
>> > > > >>>>> approach (except return to the switch/case block). Andrey
>> Gura,
>> > as
>> > > the
>> > > > >>>>> author of IGNITE-12568, maybe you have some ideas about
>> > > optimization?
>> > > > >>>>>
>> > > > >>>>> Perhaps we should revert IGNITE-12568, but there are some
>> metrics
>> > > > >>>>> already
>> > > > >>>>> created, which can't be rewritten using old message factory
>> > > > >>>>> implementation
>> > > > >>>>> (IGNITE-12756). Guys, WDYT?
>> > > > >>>>>
>> > > > >>>>
>> > > > >>>> Alexey,
>> > > > >>>>
>> > > > >>>> I see that IGNITE-12756 (metrics improvements) is already
>> released
>> > > in
>> > > > >>>> Ignite 2.8.1 while IGNITE-12568 (message factory) is only
>> present
>> > > in Ignite
>> > > > >>>> 2.9. Let's revert both IGNITE-12568 and whichever new metrics
>> > > created for
>> > > > >>>> 2.9 that depend on the new message factory to unblock the
>> release
>> > > and deal
>> > > > >>>> with the optimizations in 2.10?
>> > > > >>>>
>> > > > >>>
>> > > >
>> > >
>> >
>>
>

Reply via email to