Alex, Makes sense to me. The only thing that should be fixed is the javadoc of this method: /** * Gets a total number of allocated pages in a memory region. * * @return Total number of allocated pages. */ public long getTotalAllocatedPages();
As far as I understand the metric should represent “all the pages allocated in the persistent store if the one enabled or all the pages we have on disk”. What’d be a right description? — Denis > On Jun 5, 2017, at 9:33 AM, Alexey Goncharuk <alexey.goncha...@gmail.com> > wrote: > > Guyd, > > I've extended the set of metrics a little bit and pushed my changes to > ignite-5375 branch. Can you please review the metrics and see if we are now > ok with the interfaces? > > 2017-06-01 21:04 GMT+03:00 Denis Magda <dma...@apache.org>: > >> Sergey, thanks, >> >> You get a green light from my side. Please go ahead and bring this to life >> unless anyone else has any comments. >> >> — >> Denis >> >>> On Jun 1, 2017, at 4:18 AM, Sergey Chugunov <sergey.chugu...@gmail.com> >> wrote: >>> >>> Guys, >>> >>> I created a ticket [1] summing up results of our discussion. Please >> review >>> and leave comments if something is still unclear there. >>> >>> Thanks, >>> Sergey >>> >>> [1] https://issues.apache.org/jira/browse/IGNITE-5375 >>> >>> On Wed, May 31, 2017 at 11:56 PM, Dmitriy Setrakyan < >> dsetrak...@apache.org> >>> wrote: >>> >>>> Denis, I do agree, the concept of virtual memory may work. I will start >>>> another discussion thread on that. >>>> >>>> We should extensively javadoc all these interfaces. The current >> one-liner >>>> javadoc documentation is not enough. >>>> >>>> Also, I would like to make a small correction to the MemoryMetrics >>>> interface, see below... >>>> >>>> >>>> On Wed, May 31, 2017 at 1:35 PM, Denis Magda <dma...@apache.org> wrote: >>>> >>>>> Guys, >>>>> If to assume that the *page memory* is a sort of *virtual* memory that >>>>> maps a page to RAM or disk then MemoryMetrics interface makes sense if >> we >>>>> think of it as {Virtual}MemoryMetrics. It’s late to rename the >> interface >>>>> but this design flaw can be handled with a proper documentation. >>>>> At all, let’s gather all the page memory related metrics (both RAM and >>>>> disk) in MemoryMetrics interface. Here is it’s final version: >>>>> public interface MemoryMetrics { >>>>> public String getName(); >>>>> >>>>> public long getTotalAllocatedPages(); >>>> >>>> >>>> I think this method currently returns only the pages allocated in >> memory. >>>> To behave correctly, it now should return the total pages allocated >> within >>>> the virtual memory, which should be equal to the total pages on disk. >>>> >>>> >>>>> public long getPagesOnDisk(); >>>>> >>>> >>>> This method should be removed as it represents the same value as >>>> "getTotalAllocatedPages()" method. Instead, we should add the following >>>> method: >>>> >>>> // Returns the number of pages allocated in physical off-heap memory. >>>> getPhysicalMemoryPages(); >>>> >>>> >>>>> >>>>> public long getDirtyPages(); >>>>> >>>>> public float getAllocationRate(); >>>>> >>>>> public float getEvictionRate(); >>>>> >>>>> public float getPagesFillFactor(); >>>>> >>>>> public double getPagesMissRate(); >>>>> >>>>> public float getLargeEntriesPagesPercentage(); >>>>> } >>>>> I would rename getAllocationRate and getEvitionRate to >>>>> getPagesAllocationRate and getEvictionRates respectively but then we >> need >>>>> to deprecate the existing methods which is not good. >>>>> >>>>> As for the persistence metrics related to WAL and checkpointing let’s >>>>> store them here: >>>>> >>>>> public interface PersistentStoreMetrics { >>>>> public double getWalLoggingRate(); >>>>> >>>>> public int getWalArchiveSegments(); >>>>> >>>>> public double getWalFsyncTime(); >>>>> >>>>> public double getCheckpointingTime(); >>>>> >>>>> public double getCheckpointingFsyncTime(); >>>>> >>>>> public long getCheckpointingTotalPagesNumber(); >>>>> >>>>> public long[] getCheckpointingPagesByTypeNumber(); >>>>> >>>>> public long getCheckpointingCopiedOnWritePagesNumber(); >>>>> } >>>>> >>>>> Comments on the name of non released methods are welcomed. >>>>> >>>>> — >>>>> Denis >>>>> >>>>>> On May 30, 2017, at 2:59 PM, Dmitriy Setrakyan <dsetrak...@apache.org >>> >>>>> wrote: >>>>>> >>>>>> On Tue, May 30, 2017 at 2:46 PM, Denis Magda <dma...@apache.org> >>>> wrote: >>>>>> >>>>>>> I don’t have any extra metrics in mind for now. All I want to say >> that >>>>>>> presently the Store metrics interface aggregates WAL and >> checkpointing >>>>>>> metrics and in the future we might add additional Store related >>>> metrics >>>>>>> there (that has nothing to do with WAL). So, this is why >>>>> IgniteWalMetrics >>>>>>> doesn’t sound like a generic interface. >>>>>>> >>>>>> >>>>>> I think it is getting more and more confusing. I, for instance, do not >>>>>> understand where memory metrics end and storage begins, neither I >> think >>>>> it >>>>>> is important to separate memory policy related metrics from the WAL or >>>>>> Checkpoint related metrics. >>>>>> >>>>>> How about we put them all together and have clear method names? >>>>>> >>>>>> >>>>>>> >>>>>>> — >>>>>>> Denis >>>>>>> >>>>>>>> On May 30, 2017, at 2:39 PM, Dmitriy Setrakyan < >>>> dsetrak...@apache.org> >>>>>>> wrote: >>>>>>>> >>>>>>>> On Tue, May 30, 2017 at 1:22 PM, Denis Magda <dma...@apache.org> >>>>> wrote: >>>>>>>> >>>>>>>>> I’m afraid that in the future we might need to add non WAL related >>>>>>> metrics >>>>>>>>> under this interface. This is why it might make sense to keep the >>>> name >>>>>>>>> generic. >>>>>>>>> >>>>>>>> >>>>>>>> Hm... I am not sure we are going to have any other components in >>>>> addition >>>>>>>> to WAL and Store here. What do you have in mind? >>>>>>> >>>>>>> >>>>> >>>>> >>>> >> >>