Need Information for memory sharing with AppCDS
Jiangli Zhou
jianglizhou at google.com
Fri Mar 13 16:32:16 UTC 2020
Hi,
One method is to use 'top'. You can run multiple JVM instances with
and without enabling the shared archive, and compare the 'RES' and
'SHR' memory reported by 'top'. 'RES' is the resident size. 'SHR' is
the shared memory size, which is the amount of shared memory (can be
potentially shared with other processes) used by a process.
/proc/<pid>/smaps also gives the memory consumption of a process.
Best,
Jiangli
On Fri, Mar 13, 2020 at 12:38 AM 向伟(识月) <shiyue.xw at alibaba-inc.com> wrote:
>
> Hi Jiangli, Ioi,
>
> Another question about the memory sharing with AppCDS:
> How to evaluate memory savings when multiple processes use the same archiving file?
>
> Thanks,
> Wei Xiang
>
> ------------------------------------------------------------------
> 发件人:向伟(识月) <shiyue.xw at alibaba-inc.com>
> 发送时间:2020年3月10日(星期二) 10:39
> 收件人:Jiangli Zhou <jianglizhou at google.com>
> 抄 送:hotspot-runtime-dev <hotspot-runtime-dev-bounces at openjdk.java.net>; hotspot-runtime-dev <hotspot-runtime-dev at openjdk.java.net>
> 主 题:回复:Need Information for memory sharing with AppCDS
>
> Hi Jiangli,
>
> Thanks a lot for the detailed information. It's clear to me.
>
> Thanks,
> Wei Xiang
> ------------------------------------------------------------------
> 发件人:Jiangli Zhou <jianglizhou at google.com>
> 发送时间:2020年3月10日(星期二) 00:50
> 收件人:向伟(识月) <shiyue.xw at alibaba-inc.com>
> 抄 送:hotspot-runtime-dev <hotspot-runtime-dev-bounces at openjdk.java.net>; hotspot-runtime-dev <hotspot-runtime-dev at openjdk.java.net>
> 主 题:Re: Need Information for memory sharing with AppCDS
>
> Hi,
>
> On Sun, Mar 8, 2020 at 11:56 PM 向伟(识月) <shiyue.xw at alibaba-inc.com> wrote:
> >
> > Hi Ioi,
> >
> > Thanks a lot for your information.
> > I have the question about the usage in the document:
> > For common class path prefix:
> > ---------------------------------------
> > Run the Hello and Hi applications with the same shared archive:
> > java -XX:SharedArchiveFile=common.jsa -cp common.jar:hello.jar:hi.jar Hello
> > java -XX:SharedArchiveFile=common.jsa -cp common.jar:hello.jar:hi.jar Hi
> >
> > If a class with name ABC is both in hello.jar and hi.jar, the content is different.
> > With the class path -cp common.jar:hello.jar:hi.jar, the second run "java .. Hi" can't load the correct class ABC in hi.jar.
> >
>
> For the above usage, I'd recommend to only archive the classes from
> common.jar to create a common.jsa. The common.jsa can be used for both
> applications for sharing. As described in the earlier email, the
> follow two conditions must be true to achieve sharing:
>
> - Both processes must be running with the same JVM binary
> - Both processes must be memory mapping using the same copy of common.jsa.
>
> If each container uses a different copy of the common.jsa, then there
> is no memory sharing.
>
> > Is there any solution for this usage?
>
> I'd recommend to not include ABC in the common.jsa in this case.
>
> Hope that helps.
>
> Best,
> Jiangli
> >
> > Thanks,
> > Wei Xiang
> > ------------------------------------------------------------------
> > 发件人:Ioi Lam <ioi.lam at oracle.com>
> > 发送时间:2020年3月9日(星期一) 13:03
> > 收件人:hotspot-runtime-dev <hotspot-runtime-dev at openjdk.java.net>
> > 主 题:Re: Need Information for memory sharing with AppCDS
> >
> > On 3/8/20 8:51 PM, 向伟(识月) wrote:
> > > Hi,
> > >
> > > We am trying to take advantage of the characteristics of memory sharing with AppCDS, and we expected that the
> > > JVM internal packages and common packages can be shared with AppCDS.
> > >
> > > In the user scenario, there are some common base packages for different Java processes with "-cp common_path"
> > > Process A: -cp common_path:pathA
> > > Process B: -cp common_path:pathA:pathB
> > > Process C: -cp common_path:pathC
> > >
> > > I check the code in JDK11, and it uses SharedPathsMiscInfo to do the consistency check for class path.
> > > The below usage can work in JDK11
> > > Dump stage:
> > > -cp common_path
> > >
> > > Runtime stage:
> > > -cp common_path:new_path
> > >
> > > But I find that SharedPathsMiscInfo has been removed in the latest JDK code.
> > >
> > > I need the information:
> > > 1. the new flow to do the consistency check.
> > > 2. constraint condition about the memory sharing among the different Java processes.
> > >
> > > Is there any user guide to use the memory sharing feature for AppCDS?
> >
> > Hi Wei,
> >
> > The topic of sharing the same CDS archive between different apps that
> > have the same classpath prefix can be found here:
> >
> > https://docs.oracle.com/en/java/javase/13/docs/specs/man/java.html#application-class-data-sharing
> >
> > See the section "Sharing a Shared Archive Across Multiple Application
> > Processes".
> >
> > SharedPathsMiscInfo was removed in this RFE in JDK 14:
> > https://bugs.openjdk.java.net/browse/JDK-8227370
> >
> > However, we still enforce the same set of consistency checks as previous
> > JDK versions.
> >
> > Please let me know if you have further questions.
> >
> > Thanks
> > - Ioi
> >
> > > Thanks,
> > > Wei Xiang
> >
>
>
More information about the hotspot-runtime-dev
mailing list