Dmitriy, Alex, thanks for clarification, this is that i already mention in ticket. I think this approach correct. Try to provide PR soon.
thanks! > >------- Forwarded message ------- >From: "Alex Plehanov" < plehanov.a...@gmail.com > >To: dev@ignite.apache.org >Cc: arzamas...@mail.ru >Subject: Re: ignite PureJavaCrc32 vs java.util.zip.CRC32 bench. >Date: Tue, 21 Aug 2018 23:17:20 +0300 > >Dmitriy, yes, you correctly understood my idea. > >вт, 21 авг. 2018 г. в 22:03, Vladimir Ozerov < voze...@gridgain.com >: > >> Guys, >> >> Do we have any numbers for real workloads? Or at least Yardstick. >> >> вт, 21 авг. 2018 г. в 21:04, Dmitriy Pavlov < dpavlov....@gmail.com >: >> >> > Let us double-check current options. Maybe I'm mistaken about Alex >> > Plehanov's idea. >> > >> > Let's introduce the following variables and functions: >> > data - our block. >> > OldImpl(data) = X >> > NewImpl(data) = Y >> > NewImpl(data) ^ C = Y ^ C, where C is constant, ^ is bitwise XOR >> operation. >> > And NewImpl(data) ^ C = X = OldImpl(data) >> > >> > So new and old implementations give us X in all cases, we don't need >> any >> > compatibility mode. >> > >> > Let's try to adopt new fast implementation with C constant. >> > >> > Evgeniy, would you like to try? >> > >> > вт, 21 авг. 2018 г. в 15:51, Sergey Kozlov < skoz...@gridgain.com >: >> > >> > > Alex >> > > >> > > In that case the data becomes in unpredictable state (mix of new and >> old >> > > methods) and there's a chance that some partitions will be never >> touched >> > > and never converted. It will force us always support old compression. >> > > I suppose the explicit conversion that clearly say what is happening >> now >> > > and may be warn that the db files should backed up before version >> > upgrade. >> > > >> > > Also I think AI 3.0 will have set of incompatible changes that give >> us >> a >> > > chance to add an upgrade procedure where compression method update >> among >> > > other stuff will take into account. >> > > >> > > On Tue, Aug 21, 2018 at 11:58 AM, Alex Plehanov < >> plehanov.a...@gmail.com >> > > >> > > wrote: >> > > >> > > > Sergey, converting data also force us to introduce some flag to WAL >> > > > segments/records or convert WAL segments too. WAL segments can be >> > > archived, >> > > > they also can be compressed. >> > > > IMO we better should not introduce any compatibility modes, left >> data >> > as >> > > is >> > > > and always just convert crc value returned by zip.CRC32 to old >> format >> > > (xor >> > > > it) at runtime. >> > > > >> > > > 2018-08-21 0:12 GMT+03:00 Sergey Kozlov < skoz...@gridgain.com >: >> > > > >> > > > > Dmitriy >> > > > > >> > > > > Due to significant improvement and to reduce the number supported >> > > > > modes/options would be good to convert the data at the moment of >> > > upgrade. >> > > > > >> > > > > On Tue, Aug 21, 2018 at 12:03 AM, Dmitriy Setrakyan < >> > > > dsetrak...@apache.org >> > > > > > >> > > > > wrote: >> > > > > >> > > > > > Sergey, that was precisely my comment in the ticket: >> > > > > > >> > > > > > Can we add this option without breaking compatibility with >> previous >> > > > > > page/storage formats? If not, then this should support both >> > > > > implementation. >> > > > > > The default should be the new fastest implementation, but if we >> > > > encounter >> > > > > > the older, slower one, then we should print out a warning in >> the >> > log >> > > > and >> > > > > > automatically switch to the older implementation. >> > > > > > >> > > > > > On Mon, Aug 20, 2018 at 1:58 PM, Sergey Kozlov < >> > skoz...@gridgain.com >> > > > >> > > > > > wrote: >> > > > > > >> > > > > > > Hi Igniters >> > > > > > > >> > > > > > > I suppose that'll break compatibility for LFS (PDS). >> > > > > > > >> > > > > > > Do we plan to provide a migration guide w/o data loss for >> upgrade >> > > AI >> > > > > 2.x >> > > > > > to >> > > > > > > 3.0? >> > > > > > > >> > > > > > > On Mon, Aug 20, 2018 at 11:46 PM, Dmitriy Setrakyan < >> > > > > > dsetrak...@apache.org >> > > > > > > > >> > > > > > > wrote: >> > > > > > > >> > > > > > > > I commented in the ticket: https://issues.apache.org/ >> > > > > > > > jira/browse/IGNITE-9272 >> > > > > > > > >> > > > > > > > It if can integrate it correctly, according to my comment, >> in >> > 2.7 >> > > > > > > release, >> > > > > > > > it would be great. Otherwise, let's plan this change for >> 3.0 >> > > > release. >> > > > > > > > >> > > > > > > > D. >> > > > > > > > >> > > > > > > > On Mon, Aug 20, 2018 at 3:50 AM, Eduard Shangareev < >> > > > > > > > eduard.shangar...@gmail.com > wrote: >> > > > > > > > >> > > > > > > > > Hi, >> > > > > > > > > >> > > > > > > > > I have checked the benchmark and it shows great >> performance >> > > boost >> > > > > on >> > > > > > my >> > > > > > > > > laptop! >> > > > > > > > > >> > > > > > > > > +1 for this change. >> > > > > > > > > >> > > > > > > > > On Tue, Aug 14, 2018 at 9:01 PM Dmitriy Pavlov < >> > > > > > dpavlov....@gmail.com > >> > > > > > > > > wrote: >> > > > > > > > > >> > > > > > > > > > Hi Evgeniy, >> > > > > > > > > > >> > > > > > > > > > Thank you. I see that the ticket is unassigned. >> > > > > > > > > > >> > > > > > > > > > Would you like to contribute PR to be macro-benchmarked >> > with >> > > > > > Ignite? >> > > > > > > > > > >> > > > > > > > > > Sincerely, >> > > > > > > > > > Dmitriy Pavlov >> > > > > > > > > > >> > > > > > > > > > вт, 14 авг. 2018 г. в 20:57, Евгений Станиловский >> > > > > > > > > > < arzamas...@mail.ru.invalid >: >> > > > > > > > > > >> > > > > > > > > > > I fill the ticket, bench code attached there. >> > > > > > > > > > > https://issues.apache.org/jira/browse/IGNITE-9272 >> > > > > > > > > > > Thanks! >> > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > > >Has anyone else run the benchmark and reproduced the >> > > > > performance >> > > > > > > > > > > >difference? >> > > > > > > > > > > > >> > > > > > > > > > > >On Tue, Aug 14, 2018 at 8:16 AM, Dmitriy Pavlov < >> > > > > > > > > dpavlov....@gmail.com >> > > > > > > > > > > >> > > > > > > > > > > >wrote: >> > > > > > > > > > > > >> > > > > > > > > > > >> It depends. >> > > > > > > > > > > >> >> > > > > > > > > > > >> CRC is a CPU-intensive operation, while WAL >> logging >> > and >> > > > page >> > > > > > > store >> > > > > > > > > > write >> > > > > > > > > > > >> are mostly about IO speed. >> > > > > > > > > > > >> >> > > > > > > > > > > >> In the same time, it can make the huge impact on >> > > machines >> > > > > with >> > > > > > > > fast >> > > > > > > > > IO >> > > > > > > > > > > >> and >> > > > > > > > > > > >> slow CPU. So if we can apply change proposed by >> > Evgeniy >> > > > and >> > > > > > > Alexey >> > > > > > > > > it >> > > > > > > > > > > >> could >> > > > > > > > > > > >> benefit performance because we save CPU. Later we >> can >> > > use >> > > > > it's >> > > > > > > > power >> > > > > > > > > > in >> > > > > > > > > > > a >> > > > > > > > > > > >> more efficient manner (e.g. with compression). >> > > > > > > > > > > >> >> > > > > > > > > > > >> вт, 14 авг. 2018 г. в 14:03, Yakov Zhdanov < >> > > > > > > yzhda...@apache.org >> > > > > > > > >: >> > > > > > > > > > > >> >> > > > > > > > > > > >> > Guys, what time in % does crc calculation take >> in >> > WAL >> > > > > > logging >> > > > > > > > > > process? >> > > > > > > > > > > >> > >> > > > > > > > > > > >> > --Yakov >> > > > > > > > > > > >> > >> > > > > > > > > > > >> > 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov < >> > > > > > > > dpavlov....@gmail.com >> > > > > > > > > > >: >> > > > > > > > > > > >> > >> > > > > > > > > > > >> > > Hi Alex, thank you for this idea. >> > > > > > > > > > > >> > > >> > > > > > > > > > > >> > > Evgeniy, Alex, would you like to submit the >> patch >> > > with >> > > > > > > > bypassing >> > > > > > > > > > > >> > > implementation differences to keep >> compatibility? >> > > > > > > > > > > >> > > >> > > > > > > > > > > >> > > Sincerely, >> > > > > > > > > > > >> > > Dmitriy Pavlov >> > > > > > > > > > > >> > > >> > > > > > > > > > > >> > > вт, 14 авг. 2018 г. в 12:06, Alex Plehanov < >> > > > > > > > > > > plehanov.a...@gmail.com >: >> > > > > > > > > > > >> > > >> > > > > > > > > > > >> > > > Hello, Igniters! >> > > > > > > > > > > >> > > > >> > > > > > > > > > > >> > > > In java8 java.lang.zip.CRC32 methods become >> > > > intrinsic, >> > > > > > > > > moreover >> > > > > > > > > > > new >> > > > > > > > > > > >> > > > "update" method, which use ByteBuffer was >> > > > introduced. >> > > > > > > Since >> > > > > > > > we >> > > > > > > > > > > >> moved >> > > > > > > > > > > >> to >> > > > > > > > > > > >> > > > java8, perhaps we really can get performance >> > boost >> > > > by >> > > > > > > using >> > > > > > > > > > > >> standard >> > > > > > > > > > > >> > > > java.lang.zip.CRC32 instead of >> PureJavaCrc32. >> > > > > > > > > > > >> > > > >> > > > > > > > > > > >> > > > About compatibility: looks like >> PureJavaCrc32 >> > > > > implements >> > > > > > > the >> > > > > > > > > > same >> > > > > > > > > > > >> > > algorithm >> > > > > > > > > > > >> > > > as java.lang.zip.CRC32. These two >> > implementations >> > > > uses >> > > > > > the >> > > > > > > > > same >> > > > > > > > > > > >> > > polynomial >> > > > > > > > > > > >> > > > and the same initial value. The only >> difference >> > is >> > > > > final >> > > > > > > xor >> > > > > > > > > > mask >> > > > > > > > > > > >> > > > (0xFFFFFFFF for java.lang.zip.CRC32). So, we >> can >> > > > > easily >> > > > > > > > > convert >> > > > > > > > > > > >> from >> > > > > > > > > > > >> > > > PureJavaCrc32 >> > > > > > > > > > > >> > > > to standard CRC32 and vice versa, using this >> > > > > expression: >> > > > > > > > crc32 >> > > > > > > > > > ^= >> > > > > > > > > > > >> > > > 0xFFFFFFFF >> > > > > > > > > > > >> > > > >> > > > > > > > > > > >> > > > >> > > > > > > > > > > >> > > > 2018-08-14 0:19 GMT+03:00 Eduard Shangareev >> < >> > > > > > > > > > > >> > eduard.shangar...@gmail.com >> > > > > > > > > > > >> > > >: >> > > > > > > > > > > >> > > > >> > > > > > > > > > > >> > > > > Evgeniy, >> > > > > > > > > > > >> > > > > >> > > > > > > > > > > >> > > > > Could you share benchmark code? And please >> > share >> > > > > what >> > > > > > > > > version >> > > > > > > > > > of >> > > > > > > > > > > >> JVM >> > > > > > > > > > > >> > > > > you have used. >> > > > > > > > > > > >> > > > > >> > > > > > > > > > > >> > > > > On Mon, Aug 13, 2018 at 10:44 PM Zhenya >> > > > > > > > > > > >> < arzamas...@mail.ru.invalid >> > > > > > > > > > > >> > >> > > > > > > > > > > >> > > > > wrote: >> > > > > > > > > > > >> > > > > >> > > > > > > > > > > >> > > > > > I think it would break backward >> > compatibility, >> > > > as >> > > > > > > > Nikolay >> > > > > > > > > > > >> mentioned >> > > > > > > > > > > >> > > > above >> > > > > > > > > > > >> > > > > > we would take exception here: >> > > > > > > > > > > >> > > > > > >> > > > > > > > > > > >> > > > > > [1] >> > > > > > > > > > > >> > > > > > >> > > > > > > > > > > >> > > > > > https://github.com/apache/ >> > > > > > > ignite/blob/master/modules/ >> > > > > > > > > > > >> > > > > core/src/main/java/org/apache/ >> > > > > > > ignite/internal/processors/ >> > > > > > > > > > > >> > > > > >> cache/persistence/file/FilePageStore.java#L372 >> > > > > > > > > > > >> > > > > > >> > > > > > > > > > > >> > > > > > thats why i question for community >> thoughts >> > > > here. >> > > > > > > > > > > >> > > > > > >> > > > > > > > > > > >> > > > > > > Hi Evgeniy, >> > > > > > > > > > > >> > > > > > > >> > > > > > > > > > > >> > > > > > > would you like to submit a patch with >> > CRC32 >> > > > > > > > > implementation >> > > > > > > > > > > >> > change? >> > > > > > > > > > > >> > > > > > > >> > > > > > > > > > > >> > > > > > > Sincerely, >> > > > > > > > > > > >> > > > > > > Dmitriy Pavlov >> > > > > > > > > > > >> > > > > > > >> > > > > > > > > > > >> > > > > > > пн, 13 авг. 2018 г. в 22:08, Евгений >> > > > > Станиловский >> > > > > > > > > > > >> > > > > > > < arzamas...@mail.ru.invalid >: >> > > > > > > > > > > >> > > > > > > >> > > > > > > > > > > >> > > > > > >> Hi, igniters, i wrote a simple bench, >> > looks >> > > > > like >> > > > > > > > > > > >> PureJavaCrc32 >> > > > > > > > > > > >> > has >> > > > > > > > > > > >> > > > > > >> performance problems in compatible >> with >> > > > > > zip.CRC32. >> > > > > > > > > > > >> > > > > > >> >> > > > > > > > > > > >> > > > > > >> Benchmark Mode Cnt Score Error Units >> > > > > > > > > > > >> > > > > > >> BenchmarkCRC.Crc32 avgt 5 >> 1088914.540 ± >> > > > > > 368851.822 >> > > > > > > > > ns/op >> > > > > > > > > > > >> > > > > > >> BenchmarkCRC.pureJavaCrc32 avgt 5 >> > > > 6619408.049 ± >> > > > > > > > > > 3746712.210 >> > > > > > > > > > > >> > ns/op >> > > > > > > > > > > >> > > > > > >> >> > > > > > > > > > > >> > > > > > >> thoughts? >> > > > > > > > > > > >> > > > > > >> > > > > > > > > > > >> > > > > >> > > > > > > > > > > >> > > > >> > > > > > > > > > > >> > > >> > > > > > > > > > > >> > >> > > > > > > > > > > >> > > > > > > > > > > >> > > > > > > > > > > -- >> > > > > > > > > > > Евгений Станиловский >> > > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > -- >> > > > > > > Sergey Kozlov >> > > > > > > GridGain Systems >> > > > > > > www.gridgain.com >> > > > > > > >> > > > > > >> > > > > >> > > > > >> > > > > >> > > > > -- >> > > > > Sergey Kozlov >> > > > > GridGain Systems >> > > > > www.gridgain.com >> > > > > >> > > > >> > > >> > > >> > > >> > > -- >> > > Sergey Kozlov >> > > GridGain Systems >> > > www.gridgain.com >> > > >> > -- Zhenya Stanilovsky