Hi, igniters, i wrote a simple bench, looks like PureJavaCrc32 has performance problems in compatible with zip.CRC32.
Benchmark Mode Cnt Score Error Units thoughts? |
Hello Evgeniy,
What is PureJavaCrc32 used for in Ignite? Is it on a critical path somewhere? -- Denis On Mon, Aug 13, 2018 at 12:08 PM Евгений Станиловский <[hidden email]> wrote: > 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? > |
Hello, Denis.
AFAIK CRC calculated: 1. For each page that are readed or written to the persistence store [1]. 2. For each read or write of WAL record [2]. [1] https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/file/FilePageStore.java#L372 [2] https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/serializer/RecordV1Serializer.java#L422 В Пн, 13/08/2018 в 12:10 -0700, Denis Magda пишет: > Hello Evgeniy, > > What is PureJavaCrc32 used for in Ignite? Is it on a critical path > somewhere? > > -- > Denis > > On Mon, Aug 13, 2018 at 12:08 PM Евгений Станиловский > <[hidden email]> wrote: > > > 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? > > |
In reply to this post by dmagda
Hi Denis,
it is a very hot piece of code. Every page and WAL segment are covered by CRC32. Sincerely, Dmitriy Pavlov пн, 13 авг. 2018 г. в 22:11, Denis Magda <[hidden email]>: > Hello Evgeniy, > > What is PureJavaCrc32 used for in Ignite? Is it on a critical path > somewhere? > > -- > Denis > > On Mon, Aug 13, 2018 at 12:08 PM Евгений Станиловский > <[hidden email]> wrote: > > > 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? > > > |
In reply to this post by Zhenya Stanilovsky
Hi Evgeniy,
would you like to submit a patch with CRC32 implementation change? Sincerely, Dmitriy Pavlov пн, 13 авг. 2018 г. в 22:08, Евгений Станиловский <[hidden email]>: > 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? > |
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, Евгений Станиловский > <[hidden email]>: > >> 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? |
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 <[hidden email]> 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, Евгений Станиловский > > <[hidden email]>: > > > >> 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? > |
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 <[hidden email]>: > 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 <[hidden email]> > 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, Евгений Станиловский > > > <[hidden email]>: > > > > > >> 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? > > > |
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 <[hidden email]>: > 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 <[hidden email]>: > > > 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 <[hidden email]> > > 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, Евгений Станиловский > > > > <[hidden email]>: > > > > > > > >> 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? > > > > > > |
Guys, what time in % does crc calculation take in WAL logging process?
--Yakov 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov <[hidden email]>: > 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 <[hidden email]>: > > > 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 <[hidden email] > >: > > > > > 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 <[hidden email]> > > > 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, Евгений Станиловский > > > > > <[hidden email]>: > > > > > > > > > >> 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? > > > > > > > > > > |
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 <[hidden email]>: > Guys, what time in % does crc calculation take in WAL logging process? > > --Yakov > > 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov <[hidden email]>: > > > 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 <[hidden email]>: > > > > > 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 < > [hidden email] > > >: > > > > > > > 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 <[hidden email]> > > > > 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, Евгений Станиловский > > > > > > <[hidden email]>: > > > > > > > > > > > >> 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? > > > > > > > > > > > > > > > |
Has anyone else run the benchmark and reproduced the performance difference?
On Tue, Aug 14, 2018 at 8:16 AM, Dmitriy Pavlov <[hidden email]> 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 <[hidden email]>: > > > Guys, what time in % does crc calculation take in WAL logging process? > > > > --Yakov > > > > 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov <[hidden email]>: > > > > > 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 <[hidden email]>: > > > > > > > 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 < > > [hidden email] > > > >: > > > > > > > > > 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 <[hidden email] > > > > > > > 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, Евгений Станиловский > > > > > > > <[hidden email]>: > > > > > > > > > > > > > >> 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? > > > > > > > > > > > > > > > > > > > > > |
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 < [hidden email] > >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 < [hidden email] >: >> >> > Guys, what time in % does crc calculation take in WAL logging process? >> > >> > --Yakov >> > >> > 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov < [hidden email] >: >> > >> > > 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 < [hidden email] >: >> > > >> > > > 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 < >> > [hidden email] >> > > >: >> > > > >> > > > > 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 >> < [hidden email] >> > >> > > > > 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, Евгений Станиловский >> > > > > > > < [hidden email] >: >> > > > > > > >> > > > > > >> 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? >> > > > > > >> > > > > >> > > > >> > > >> > -- Евгений Станиловский |
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, Евгений Станиловский <[hidden email]>: > 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 < [hidden email] > > >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 < [hidden email] >: > >> > >> > Guys, what time in % does crc calculation take in WAL logging process? > >> > > >> > --Yakov > >> > > >> > 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov < [hidden email] >: > >> > > >> > > 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 < > [hidden email] >: > >> > > > >> > > > 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 < > >> > [hidden email] > >> > > >: > >> > > > > >> > > > > 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 > >> < [hidden email] > >> > > >> > > > > 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, Евгений Станиловский > >> > > > > > > < [hidden email] >: > >> > > > > > > > >> > > > > > >> 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? > >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > > > -- > Евгений Станиловский > |
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 <[hidden email]> 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, Евгений Станиловский > <[hidden email]>: > > > 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 < [hidden email] > > > > >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 < [hidden email] >: > > >> > > >> > Guys, what time in % does crc calculation take in WAL logging > process? > > >> > > > >> > --Yakov > > >> > > > >> > 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov < [hidden email] > >: > > >> > > > >> > > 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 < > > [hidden email] >: > > >> > > > > >> > > > 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 < > > >> > [hidden email] > > >> > > >: > > >> > > > > > >> > > > > 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 > > >> < [hidden email] > > >> > > > >> > > > > 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, Евгений Станиловский > > >> > > > > > > < [hidden email] >: > > >> > > > > > > > > >> > > > > > >> 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? > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > >> > > > > > > > -- > > Евгений Станиловский > > > |
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 < [hidden email]> 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 <[hidden email]> > 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, Евгений Станиловский > > <[hidden email]>: > > > > > 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 < > [hidden email] > > > > > > >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 < [hidden email] >: > > > >> > > > >> > Guys, what time in % does crc calculation take in WAL logging > > process? > > > >> > > > > >> > --Yakov > > > >> > > > > >> > 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov < [hidden email] > > >: > > > >> > > > > >> > > 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 < > > > [hidden email] >: > > > >> > > > > > >> > > > 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 < > > > >> > [hidden email] > > > >> > > >: > > > >> > > > > > > >> > > > > 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 > > > >> < [hidden email] > > > >> > > > > >> > > > > 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, Евгений Станиловский > > > >> > > > > > > < [hidden email] >: > > > >> > > > > > > > > > >> > > > > > >> 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? > > > >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > >> > > > > > > > > > > -- > > > Евгений Станиловский > > > > > > |
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 <[hidden email]> 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 < > [hidden email]> 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 <[hidden email]> > > 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, Евгений Станиловский > > > <[hidden email]>: > > > > > > > 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 < > > [hidden email] > > > > > > > > >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 < [hidden email] > >: > > > > >> > > > > >> > Guys, what time in % does crc calculation take in WAL logging > > > process? > > > > >> > > > > > >> > --Yakov > > > > >> > > > > > >> > 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov < > [hidden email] > > > >: > > > > >> > > > > > >> > > 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 < > > > > [hidden email] >: > > > > >> > > > > > > >> > > > 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 < > > > > >> > [hidden email] > > > > >> > > >: > > > > >> > > > > > > > >> > > > > 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 > > > > >> < [hidden email] > > > > >> > > > > > >> > > > > 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, Евгений Станиловский > > > > >> > > > > > > < [hidden email] >: > > > > >> > > > > > > > > > > >> > > > > > >> 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, 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 <[hidden email]> 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 <[hidden email] > > > 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 < > > [hidden email]> 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 <[hidden email]> > > > 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, Евгений Станиловский > > > > <[hidden email]>: > > > > > > > > > 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 < > > > [hidden email] > > > > > > > > > > >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 < > [hidden email] > > >: > > > > > >> > > > > > >> > Guys, what time in % does crc calculation take in WAL logging > > > > process? > > > > > >> > > > > > > >> > --Yakov > > > > > >> > > > > > > >> > 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov < > > [hidden email] > > > > >: > > > > > >> > > > > > > >> > > 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 < > > > > > [hidden email] >: > > > > > >> > > > > > > > >> > > > 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 < > > > > > >> > [hidden email] > > > > > >> > > >: > > > > > >> > > > > > > > > >> > > > > 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 > > > > > >> < [hidden email] > > > > > >> > > > > > > >> > > > > 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, Евгений Станиловский > > > > > >> > > > > > > < [hidden email] >: > > > > > >> > > > > > > > > > > > >> > > > > > >> 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 > |
Igniters,
let's come back to the idea from Alex Plehanov. We can try to provide custom xor mask at the end of CRC calc. We can do a compatible solution using fast implementation, can't we? Sincerely, Dmitriy Pavlov вт, 21 авг. 2018 г. в 0:04, Dmitriy Setrakyan <[hidden email]>: > 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 <[hidden email]> > 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 < > [hidden email] > > > > > 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 < > > > [hidden email]> 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 < > [hidden email]> > > > > 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, Евгений Станиловский > > > > > <[hidden email]>: > > > > > > > > > > > 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 < > > > > [hidden email] > > > > > > > > > > > > >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 < > > [hidden email] > > > >: > > > > > > >> > > > > > > >> > Guys, what time in % does crc calculation take in WAL > logging > > > > > process? > > > > > > >> > > > > > > > >> > --Yakov > > > > > > >> > > > > > > > >> > 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov < > > > [hidden email] > > > > > >: > > > > > > >> > > > > > > > >> > > 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 < > > > > > > [hidden email] >: > > > > > > >> > > > > > > > > >> > > > 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 < > > > > > > >> > [hidden email] > > > > > > >> > > >: > > > > > > >> > > > > > > > > > >> > > > > 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 > > > > > > >> < [hidden email] > > > > > > >> > > > > > > > >> > > > > 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, Евгений Станиловский > > > > > > >> > > > > > > < [hidden email] >: > > > > > > >> > > > > > > > > > > > > >> > > > > > >> 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 > > > |
In reply to this post by dsetrakyan
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 <[hidden email]> 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 <[hidden email]> > 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 < > [hidden email] > > > > > 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 < > > > [hidden email]> 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 < > [hidden email]> > > > > 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, Евгений Станиловский > > > > > <[hidden email]>: > > > > > > > > > > > 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 < > > > > [hidden email] > > > > > > > > > > > > >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 < > > [hidden email] > > > >: > > > > > > >> > > > > > > >> > Guys, what time in % does crc calculation take in WAL > logging > > > > > process? > > > > > > >> > > > > > > > >> > --Yakov > > > > > > >> > > > > > > > >> > 2018-08-14 13:37 GMT+03:00 Dmitriy Pavlov < > > > [hidden email] > > > > > >: > > > > > > >> > > > > > > > >> > > 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 < > > > > > > [hidden email] >: > > > > > > >> > > > > > > > > >> > > > 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 < > > > > > > >> > [hidden email] > > > > > > >> > > >: > > > > > > >> > > > > > > > > > >> > > > > 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 > > > > > > >> < [hidden email] > > > > > > >> > > > > > > > >> > > > > 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, Евгений Станиловский > > > > > > >> > > > > > > < [hidden email] >: > > > > > > >> > > > > > > > > > > > > >> > > > > > >> 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 |
Free forum by Nabble | Edit this page |