Would it be worth  adding a ZIP File System property similar to createNew which 
enables/disables the change that Claes has made having the default be the 
pre-jdk 12 functionality?


> On Apr 16, 2019, at 4:50 PM, Xueming Shen <xueming.s...@gmail.com> wrote:
> 
> 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

 <http://oracle.com/us/design/oracle-email-sig-198324.gif>
 <http://oracle.com/us/design/oracle-email-sig-198324.gif> 
<http://oracle.com/us/design/oracle-email-sig-198324.gif>
 <http://oracle.com/us/design/oracle-email-sig-198324.gif>Lance Andersen| 
Principal Member of Technical Staff | +1.781.442.2037
Oracle Java Engineering 
1 Network Drive 
Burlington, MA 01803
lance.ander...@oracle.com <mailto:lance.ander...@oracle.com>



Reply via email to