From ce8319b61b7f7220644893ea109a701eca62af2c Mon Sep 17 00:00:00 2001 From: Bernd Hufmann Date: Thu, 15 Oct 2015 08:55:28 -0400 Subject: [PATCH] lttng: Add latency statistics Change-Id: I49863b3046717b3bba81443fc05305d78a80b302 Signed-off-by: Bernd Hufmann Reviewed-on: https://git.eclipse.org/r/58262 Reviewed-by: Hudson CI Tested-by: Matthew Khouzam Reviewed-by: Bernd Hufmann --- .../META-INF/MANIFEST.MF | 3 +- .../plugin.properties | 1 - .../plugin.xml | 2 +- .../latency/statistics/LatencyStatistics.java | 86 ++++++ .../LatencyStatisticsAnalysisModule.java | 148 ++++++++++ .../core/latency/statistics/package-info.java | 11 + .../META-INF/MANIFEST.MF | 3 +- .../icons/eview16/statistics_view.gif | Bin 0 -> 343 bytes .../plugin.properties | 3 +- .../plugin.xml | 9 + .../ui/views/latency/LatencyTableViewer.java | 29 ++ .../os/linux/ui/views/latency/Messages.java | 5 + .../ui/views/latency/messages.properties | 13 + .../AbstractLatencyStatisticsView.java | 76 +++++ .../AbstractLatencyStatisticsViewer.java | 264 ++++++++++++++++++ .../statistics/LatencyStatisticsView.java | 35 +++ .../statistics/LatencyStatisticsViewer.java | 97 +++++++ .../ui/views/latency/statistics/Messages.java | 48 ++++ .../latency/statistics/messages.properties | 19 ++ .../latency/statistics/package-info.java | 11 + .../META-INF/MANIFEST.MF | 2 +- 21 files changed, 859 insertions(+), 6 deletions(-) create mode 100644 analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/latency/statistics/LatencyStatistics.java create mode 100644 analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/latency/statistics/LatencyStatisticsAnalysisModule.java create mode 100644 analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/latency/statistics/package-info.java create mode 100755 analysis/org.eclipse.tracecompass.analysis.os.linux.ui/icons/eview16/statistics_view.gif create mode 100644 analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/AbstractLatencyStatisticsView.java create mode 100644 analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/AbstractLatencyStatisticsViewer.java create mode 100644 analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/LatencyStatisticsView.java create mode 100644 analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/LatencyStatisticsViewer.java create mode 100644 analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/Messages.java create mode 100644 analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/messages.properties create mode 100644 analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/package-info.java diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/META-INF/MANIFEST.MF index 231d9caf57..fc552e92af 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/META-INF/MANIFEST.MF +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/META-INF/MANIFEST.MF @@ -24,4 +24,5 @@ Export-Package: org.eclipse.tracecompass.analysis.os.linux.core.cpuusage, org.eclipse.tracecompass.analysis.os.linux.core.model, org.eclipse.tracecompass.analysis.os.linux.core.trace, org.eclipse.tracecompass.internal.analysis.os.linux.core;x-internal:=true, - org.eclipse.tracecompass.internal.analysis.os.linux.core.kernelanalysis;x-friends:="org.eclipse.tracecompass.analysis.os.linux.core.tests" + org.eclipse.tracecompass.internal.analysis.os.linux.core.kernelanalysis;x-friends:="org.eclipse.tracecompass.analysis.os.linux.core.tests", + org.eclipse.tracecompass.internal.analysis.os.linux.core.latency.statistics;x-friends:="org.eclipse.tracecompass.analysis.os.linux.ui" diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/plugin.properties b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/plugin.properties index 8866c02db3..588a285f79 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/plugin.properties +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/plugin.properties @@ -18,4 +18,3 @@ analysis.linuxkernel = Linux Kernel Analysis analysis.cpuusage = CPU usage analysis.latency = Latency Analysis - diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/plugin.xml b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/plugin.xml index e431977e9f..87658e64e6 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/plugin.xml +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/plugin.xml @@ -25,7 +25,7 @@ fPerSyscallStats = new HashMap<>(); + + @Override + protected Iterable getDependentAnalyses() { + ITmfTrace trace = getTrace(); + if (trace != null) { + LatencyAnalysis module = TmfTraceUtils.getAnalysisModuleOfClass(trace, LatencyAnalysis.class, LatencyAnalysis.ID); + fLatencyModule = module; + return checkNotNull(ImmutableList.of((IAnalysisModule) module)); + } + return super.getDependentAnalyses(); + } + + @Override + protected boolean executeAnalysis(IProgressMonitor monitor) throws TmfAnalysisException { + LatencyAnalysis latency = fLatencyModule; + ITmfTrace trace = getTrace(); + if ((latency == null) || (trace == null)) { + return false; + } + latency.waitForCompletion(); + + ISegmentStore store = latency.getResults(); + + if (store != null) { + + boolean result = calculateTotalManual(store, monitor); + + if (!result) { + return false; + } + + result = calculateTotalPerSyscall(store, monitor); + if (!result) { + return false; + } + } + return true; + } + + private boolean calculateTotalManual(ISegmentStore store, IProgressMonitor monitor) { + LatencyStatistics total = new LatencyStatistics(); + Iterator iter = store.iterator(); + while (iter.hasNext()) { + if (monitor.isCanceled()) { + return false; + } + ISegment segment = iter.next(); + total.update(checkNotNull(segment)); + } + + fTotalStats = total; + return true; + } + + private boolean calculateTotalPerSyscall(ISegmentStore store, IProgressMonitor monitor) { + fPerSyscallStats = new HashMap<>(); + + Iterator iter = store.iterator(); + while (iter.hasNext()) { + if (monitor.isCanceled()) { + return false; + } + ISegment segment = iter.next(); + if (segment instanceof SystemCall) { + SystemCall syscall = (SystemCall) segment; + LatencyStatistics values = fPerSyscallStats.get(syscall.getName()); + if (values == null) { + values = new LatencyStatistics(); + } + values.update(segment); + fPerSyscallStats.put(syscall.getName(), values); + } + } + + return true; + } + + @Override + protected void canceling() { + } + + /** + * The total statistics + * + * @return the total statistics + */ + public @Nullable LatencyStatistics getTotalStats() { + return fTotalStats; + } + + /** + * The per syscall statistics + * + * @return the per syscall statistics + */ + public Map getPerSyscallStats() { + return fPerSyscallStats; + } + + } diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/latency/statistics/package-info.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/latency/statistics/package-info.java new file mode 100644 index 0000000000..3551485e83 --- /dev/null +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/latency/statistics/package-info.java @@ -0,0 +1,11 @@ +/******************************************************************************* + * Copyright (c) 2015 Ericsson + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ + +@org.eclipse.jdt.annotation.NonNullByDefault +package org.eclipse.tracecompass.internal.analysis.os.linux.core.latency.statistics; diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/META-INF/MANIFEST.MF index 38f1d7dced..924a63f025 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/META-INF/MANIFEST.MF +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/META-INF/MANIFEST.MF @@ -27,4 +27,5 @@ Export-Package: org.eclipse.tracecompass.analysis.os.linux.ui.views.controlflow, org.eclipse.tracecompass.analysis.os.linux.ui.views.resources, org.eclipse.tracecompass.internal.analysis.os.linux.ui;x-internal:=true, org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.latency;x-internal:=true, - org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.resources;x-internal:=true + org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.resources;x-internal:=true, + org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.latency.statistics;x-internal:=true diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/icons/eview16/statistics_view.gif b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/icons/eview16/statistics_view.gif new file mode 100755 index 0000000000000000000000000000000000000000..d11c996e570dfe06518631ba3f0f1893a21f88d1 GIT binary patch literal 343 zcmZ?wbhEHb6krfwxXQrL*t=xKh671O{Rss<85L8yrmfy{NYquZUcHsQZLl+L5ymsX5t;1(-R&*|??pfS0VOjI!mCch^v`<^zJ!{>P z4F{HOI<#fqnG+Z97BS&av~iHtadMe)ow93pN}%f9pROFrWg( zpDc_F3|0&}AYqW77}!c2<`#J9NcFq9Bq=Nq5EJEITyl^ne{-M)L)J|j!E0QmE(|jL zZi<^P7AVZU958kD?pHr{W$9TxC{U_5syC^2(yS1!tT1p^V-uRdHhBu0nzKrUPLqV50y literal 0 HcmV?d00001 diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/plugin.properties b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/plugin.properties index cbf32c5875..2807aa9aab 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/plugin.properties +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/plugin.properties @@ -19,4 +19,5 @@ controlflow.view.name = Control Flow resources.view.name = Resources cpuusage.view.name = CPU Usage latency.view.name = Latency Analysis -latency.scatter.view.name = Latency vs Time \ No newline at end of file +latency.scatter.view.name = Latency vs Time +latency.stats.view.name = Latency Statistics diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/plugin.xml b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/plugin.xml index e9a758c01b..18c1a3c6bc 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/plugin.xml +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/plugin.xml @@ -47,6 +47,15 @@ id="org.eclipse.tracecompass.analysis.os.linux.views.latency.scatter" name="%latency.scatter.view.name" restorable="true"> + + getColumnData() { + /* All columns are sortable */ + List columns = new ArrayList<>(); + TmfTreeColumnData column = new TmfTreeColumnData(COLUMN_NAMES[0]); + column.setComparator(new ViewerComparator() { + @Override + public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) { + if ((e1 == null) || (e2 == null)) { + return 0; + } + + LatencyTreeViewerEntry n1 = (LatencyTreeViewerEntry) e1; + LatencyTreeViewerEntry n2 = (LatencyTreeViewerEntry) e2; + + return n1.getName().compareTo(n2.getName()); + + } + }); + columns.add(column); + column = new TmfTreeColumnData(COLUMN_NAMES[1]); + column.setComparator(new ViewerComparator() { + @Override + public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) { + if ((e1 == null) || (e2 == null)) { + return 0; + } + + LatencyTreeViewerEntry n1 = (LatencyTreeViewerEntry) e1; + LatencyTreeViewerEntry n2 = (LatencyTreeViewerEntry) e2; + + return Long.compare(n1.getEntry().getMin(), n2.getEntry().getMin()); + + } + }); + columns.add(column); + column = new TmfTreeColumnData(COLUMN_NAMES[2]); + column.setComparator(new ViewerComparator() { + @Override + public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) { + if ((e1 == null) || (e2 == null)) { + return 0; + } + + LatencyTreeViewerEntry n1 = (LatencyTreeViewerEntry) e1; + LatencyTreeViewerEntry n2 = (LatencyTreeViewerEntry) e2; + + return Long.compare(n1.getEntry().getMax(), n2.getEntry().getMax()); + + } + }); + columns.add(column); + column = new TmfTreeColumnData(COLUMN_NAMES[3]); + column.setComparator(new ViewerComparator() { + @Override + public int compare(@Nullable Viewer viewer, @Nullable Object e1, @Nullable Object e2) { + if ((e1 == null) || (e2 == null)) { + return 0; + } + + LatencyTreeViewerEntry n1 = (LatencyTreeViewerEntry) e1; + LatencyTreeViewerEntry n2 = (LatencyTreeViewerEntry) e2; + + return Double.compare(n1.getEntry().getAverage(), n2.getEntry().getAverage()); + + } + }); + columns.add(column); + + return columns; + } + + }; + } + + + @Override + public void initializeDataSource() { + /* Should not be called while trace is still null */ + ITmfTrace trace = checkNotNull(getTrace()); + TmfAbstractAnalysisModule module = createStatisticsAnalysiModule(); + if (module == null) { + return; + } + try { + module.setTrace(trace); + module.schedule(); + fModule = module; + } catch (TmfAnalysisException e) { + Activator.getDefault().logError("Error initializing statistics analysis module", e); //$NON-NLS-1$ + } + } + + /** + * Formats a double value string + * + * @param value + * a value to format + * @return formatted value + */ + protected static String toFormattedString(double value) { + // The cast to long is needed because the formatter cannot truncate the number. + String percentageString = checkNotNull(String.format("%s", FORMATTER.format(value))); //$NON-NLS-1$ + return percentageString; + } + + /** + * Class for defining an entry in the statistics tree. + */ + protected class LatencyTreeViewerEntry extends TmfTreeViewerEntry { + private LatencyStatistics fEntry; + + /** + * Constructor + * + * @param name + * name of entry + * + * @param entry + * latency statistics object + */ + public LatencyTreeViewerEntry(String name, LatencyStatistics entry) { + super(name); + fEntry = entry; + } + + /** + * Gets the statistics object + * + * @return statistics object + */ + public LatencyStatistics getEntry() { + return fEntry; + } + + } + + /** + * Class to define a level in the tree that doesn't have any values. + */ + protected class HiddenTreeViewerEntry extends LatencyTreeViewerEntry { + /** + * Constructor + * + * @param name + * the name of the level + */ + public HiddenTreeViewerEntry(String name) { + super(name, new LatencyStatistics()); + } + } + +} diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/LatencyStatisticsView.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/LatencyStatisticsView.java new file mode 100644 index 0000000000..d4b8377aa5 --- /dev/null +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/LatencyStatisticsView.java @@ -0,0 +1,35 @@ +/******************************************************************************* + * Copyright (c) 2015 Ericsson + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Bernd Hufmann - Initial API and implementation + *******************************************************************************/ + +package org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.latency.statistics; + +import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull; + +import org.eclipse.swt.widgets.Composite; + +/** + * View to display latency statistics. + * + * @author Bernd Hufmann + * + */ +public class LatencyStatisticsView extends AbstractLatencyStatisticsView { + + /** The view ID*/ + public static final String ID = "org.eclipse.tracecompass.analysis.os.linux.ui.views.latency.statsview"; //$NON-NLS-1$ + + @Override + protected AbstractLatencyStatisticsViewer createLatencyStatisticsViewer(Composite parent) { + return checkNotNull((AbstractLatencyStatisticsViewer) new LatencyStatisticsViewer(checkNotNull(parent))); + } + +} diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/LatencyStatisticsViewer.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/LatencyStatisticsViewer.java new file mode 100644 index 0000000000..a3443fe505 --- /dev/null +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/LatencyStatisticsViewer.java @@ -0,0 +1,97 @@ +/******************************************************************************* + * Copyright (c) 2015 Ericsson + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Bernd Hufmann - Initial API and implementation + *******************************************************************************/ +package org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.latency.statistics; + +import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.tracecompass.internal.analysis.os.linux.core.latency.statistics.LatencyStatistics; +import org.eclipse.tracecompass.internal.analysis.os.linux.core.latency.statistics.LatencyStatisticsAnalysisModule; +import org.eclipse.tracecompass.tmf.core.analysis.TmfAbstractAnalysisModule; +import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeViewerEntry; +import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfTreeViewerEntry; + +/** + * A tree viewer implementation for displaying latency statistics + * + * @author Bernd Hufmann + * + */ +public class LatencyStatisticsViewer extends AbstractLatencyStatisticsViewer { + + private static final String SYSCALL_LEVEL = checkNotNull(Messages.LatencyStatistics_SyscallLevelName); + + /** + * Constructor + * + * @param parent + * the parent composite + */ + public LatencyStatisticsViewer(Composite parent) { + super(parent); + } + + /** + * Gets the statistics analysis module + * + * @return the statistics analysis module + */ + @Override + @Nullable protected TmfAbstractAnalysisModule createStatisticsAnalysiModule() { + LatencyStatisticsAnalysisModule module = new LatencyStatisticsAnalysisModule(); + return module; + } + + @Override + @Nullable protected ITmfTreeViewerEntry updateElements(long start, long end, boolean isSelection) { + if (isSelection || (start == end)) { + return null; + } + + TmfAbstractAnalysisModule analysisModule = getStatisticsAnalysisModule(); + + if (getTrace() == null || !(analysisModule instanceof LatencyStatisticsAnalysisModule)) { + return null; + } + + LatencyStatisticsAnalysisModule module = (LatencyStatisticsAnalysisModule) analysisModule; + + module.waitForCompletion(); + + LatencyStatistics entry = module.getTotalStats(); + + TmfTreeViewerEntry root = new TmfTreeViewerEntry(""); //$NON-NLS-1$ + List entryList = root.getChildren(); + + TmfTreeViewerEntry child = new LatencyTreeViewerEntry(checkNotNull(Messages.LatencyStatistics_TotalLabel), checkNotNull(entry)); + entryList.add(child); + + HiddenTreeViewerEntry syscalls = new HiddenTreeViewerEntry(SYSCALL_LEVEL); + child.addChild(syscalls); + + Map perSyscallStats = module.getPerSyscallStats(); + + Iterator> stats = perSyscallStats.entrySet().iterator(); + while (stats.hasNext()) { + Entry statsEntry = stats.next(); + syscalls.addChild(new LatencyTreeViewerEntry(checkNotNull(statsEntry.getKey()), checkNotNull(statsEntry.getValue()))); + } + return root; + } + +} diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/Messages.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/Messages.java new file mode 100644 index 0000000000..9f9d6c82d6 --- /dev/null +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/Messages.java @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright (c) 2015 Ericsson + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Bernd Hufmann - Initial API and implementation + *******************************************************************************/ + +package org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.latency.statistics; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.osgi.util.NLS; + +/** + * Messages used in the LTTng kernel CPU usage view and viewers. + * + * @author Bernd Hufmann + */ +@NonNullByDefault(false) +public class Messages extends NLS { + + private static final String BUNDLE_NAME = "org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.latency.statistics.messages"; //$NON-NLS-1$ + + /** Name of the system call level in statistics tree */ + public static String LatencyStatistics_SyscallLevelName; + /** Name of level column */ + public static String LatencyStatistics_LevelLabel; + /** Name of the minimum column */ + public static String LatencyStatistics_MinLabel; + /** Name of maximum column */ + public static String LatencyStatistics_MaxLabel; + /** Name of average column */ + public static String LatencyStatistics_AverageLabel; + /** Name of Total statistics */ + public static String LatencyStatistics_TotalLabel; + + static { + // initialize resource bundle + NLS.initializeMessages(BUNDLE_NAME, Messages.class); + } + + private Messages() { + } +} diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/messages.properties b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/messages.properties new file mode 100644 index 0000000000..e4feb45cb3 --- /dev/null +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/messages.properties @@ -0,0 +1,19 @@ +############################################################################### +# Copyright (c) 2015 Ericsson +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Bernd Hufmann - Initial API and implementation +############################################################################### + +LatencyStatistics_SyscallLevelName=System Calls +LatencyStatistics_LevelLabel=Level +LatencyStatistics_MinLabel=Minimum +LatencyStatistics_MaxLabel=Maximum +LatencyStatistics_AverageLabel=Average +LatencyStatistics_TotalLabel=Total + \ No newline at end of file diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/package-info.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/package-info.java new file mode 100644 index 0000000000..74f584dad4 --- /dev/null +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/package-info.java @@ -0,0 +1,11 @@ +/******************************************************************************* + * Copyright (c) 2015 Ericsson + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ + +@org.eclipse.jdt.annotation.NonNullByDefault +package org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.latency.statistics; diff --git a/tmf/org.eclipse.tracecompass.tmf.ui/META-INF/MANIFEST.MF b/tmf/org.eclipse.tracecompass.tmf.ui/META-INF/MANIFEST.MF index cfa50dca6a..d871c7893b 100644 --- a/tmf/org.eclipse.tracecompass.tmf.ui/META-INF/MANIFEST.MF +++ b/tmf/org.eclipse.tracecompass.tmf.ui/META-INF/MANIFEST.MF @@ -21,7 +21,7 @@ Require-Bundle: org.eclipse.core.expressions, org.swtchart, com.ibm.icu, org.eclipse.linuxtools.dataviewers.piechart, - org.eclipse.tracecompass.segmentstore.core;bundle-version="1.0.0" + org.eclipse.tracecompass.segmentstore.core Export-Package: org.eclipse.tracecompass.internal.tmf.ui;x-friends:="org.eclipse.tracecompass.tmf.ui.tests,org.eclipse.tracecompass.tmf.ctf.ui.tests", org.eclipse.tracecompass.internal.tmf.ui.commands;x-internal:=true, org.eclipse.tracecompass.internal.tmf.ui.dialogs;x-internal:=true, -- 2.34.1