Any chance we might get this repaired in time for the Java 13 ramp down?

Best regards,

/Lennart Börjeson

> 16 apr. 2019 kl. 23:02 skrev Langer, Christoph <christoph.lan...@sap.com>:
> 
> Hi,
> 
> I also think the regression should be repaired and maybe we can have an 
> option like "lazy compress" to avoid compression on write but defer it to 
> zipfs closing time.
> 
> It should also be possible to parallelize deflation during close, shouldn't 
> it?
> 
> Best regards
> Christoph
> 
>> -----Original Message-----
>> From: core-libs-dev <core-libs-dev-boun...@openjdk.java.net> On Behalf
>> Of Xueming Shen
>> Sent: Dienstag, 16. April 2019 22:50
>> To: Lennart Börjeson <lenbo...@gmail.com>
>> Cc: core-libs-dev@openjdk.java.net
>> Subject: Re: ZipFileSystem performance regression
>> 
>> Well, have to admitted I didn't expect your use scenario when made the
>> change. Thought as a
>> 
>> filesystem runtime access performance has more weight compared to
>> shutdown performance...
>> 
>> basically you are no using zipfs as a filesystem, but another jar tool
>> that happens to have
>> 
>> better in/out concurrent performance. Yes, back then I was working on
>> using zipfs as a memory
>> 
>> filesystem. One possible usage is that javac to use it as its filesystem
>> (temp?) to write out compiled
>> 
>> class files ... so I thought I can have better performance if I can keep
>> those classes uncompressed
>> 
>> until the zip/jarfs is closed and written to a "jar" file.
>> 
>> That said, regression is a regression, we probably want to get the
>> performance back for your
>> 
>> use scenario. Just wanted to give you guys some background what happened
>> back then.
>> 
>> 
>> -Sherman
>> 
>> 
>> On 4/16/19 12:54 PM, Lennart Börjeson wrote:
>>> I’m using the tool I wrote to compress directories with thousands of log
>> files. The standard zip utility (as well as my utility when run with JDK 12) 
>> takes
>> up to an hour of user time to create the archive, on our server class 40+ 
>> core
>> servers this is reduced to 1–2 minutes.
>>> 
>>> So while I understand the motivation for the change, I don’t get why you
>> would want to use ZipFs for what in essence is a RAM disk, *unless* you
>> want it compressed in memory?
>>> 
>>> Oh well. Do we need a new option for this?
>>> 
>>> /Lennart Börjeson
>>> 
>>> Electrogramma ab iPhono meo missum est
>>> 
>>>> 16 apr. 2019 kl. 21:44 skrev Xueming Shen <xueming.s...@gmail.com>:
>>>> 
>>>> One of the motivations back then is to speed up the performance of
>> accessing
>>>> 
>>>> those entries, means you don't have to deflate/inflate those
>> new/updated entries
>>>> 
>>>> during the lifetime of that zipfilesystem. Those updated entries only get
>> compressed
>>>> 
>>>> when go to storage. So the regression is more like a trade off of
>> performance of
>>>> 
>>>> different usages. (it also simplifies the logic on handing different types 
>>>> of
>> entries ...)
>>>> 
>>>> 
>>>> One idea I experimented long time ago for jartool is to concurrently write
>> out
>>>> 
>>>> entries when need compression ... it does gain some performance
>> improvement
>>>> 
>>>> on multi-cores, but not lots, as it ends up coming back to the main thread
>> to
>>>> 
>>>> write out to the underlying filesystem.
>>>> 
>>>> 
>>>> -Sherman
>>>> 
>>>>> On 4/16/19 5:21 AM, Claes Redestad wrote:
>>>>> Both before and after this regression, it seems the default behavior is
>>>>> not to use a temporary file (until ZFS.sync(), which writes to a temp
>>>>> file and then moves it in place, but that's different from what happens
>>>>> with the useTempFile option enabled). Instead entries (and the backing
>>>>> zip file system) are kept in-memory.
>>>>> 
>>>>> The cause of the issue here is instead that no deflation happens until
>>>>> sync(), even when writing to entries in-memory. Previously, the
>>>>> deflation happened eagerly, then the result of that was copied into
>>>>> the zip file during sync().
>>>>> 
>>>>> I've written a proof-of-concept patch that restores the behavior of
>>>>> eagerly compressing entries when the method is METHOD_DEFLATED
>> and the
>>>>> target is to store byte[]s in-memory (the default scenario):
>>>>> 
>>>>> http://cr.openjdk.java.net/~redestad/scratch/zfs.eager_deflation.00/
>>>>> 
>>>>> This restores performance of parallel zip to that of 11.0.2 for the
>>>>> default case. It still has a similar regression for the case where
>>>>> useTempFile is enabled, but that should be easily addressed if this
>>>>> looks like a way forward?
>>>>> 
>>>>> (I've not yet created a bug as I got too caught up in trying to figure
>>>>> out what was going on here...)
>>>>> 
>>>>> Thanks!
>>>>> 
>>>>> /Claes
>>>>> 
>>>>>> On 2019-04-16 09:29, Alan Bateman wrote:
>>>>>>> On 15/04/2019 14:32, Lennart Börjeson wrote:
>>>>>>> :
>>>>>>> 
>>>>>>> Previously, the deflation was done when in the call to Files.copy, thus
>> executed in parallel, and the final ZipFileSystem.close() didn't do anything
>> much.
>>>>>>> 
>>>>>> Can you submit a bug? When creating/updating a zip file with zipfs then
>> the closing the file system creates the zip file. Someone needs to check but 
>> it
>> may have been that the temporary files (on the file system hosting the zip
>> file) were deflated when writing (which is surprising but may have been the
>> case).
>>>>>> 
>>>>>> -Alan

Reply via email to