[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [ptp-dev] Question about performance tools framework in PTP
|
Greetings,
Yes I can put in something to clear up those
pop-ups. They only show up for utility applications that aren't found
in the system path but I can make them less persistent and add a case for non-tools.
As I was assembling the environment variable system I realized that
the application-composite model wouldn't always apply. TAU is actually
similar in that regard, I've just been compiling in instrumentation
options rather than using environment variables. I think I will
add a top-level xml tag for environment variables that go to the
general launch environment. The default
behavior will be to append environment variables specified for the
launch phase to the standard list and restore the list to its previous state after the launch.
By the way, how does compilation with your tool work? Is that
something it might be worth while to incorporate into the workflow with the launcher?
I'll take care of those exceptions too.
Thanks!
Wyatt
On Thu, Apr 9, 2009 at 5:23 AM, Dave Wootton
<dwootton@xxxxxxxxxx> wrote:
Wyatt
I was looking in the run configuration.
Once I created a performance configuration tab the panel showed up. I noticed
a couple things that could be problems though. The first time I created
a performance configurations, I got popups asking me for the path to the
directories for Tau and pinpath, where I think pinpath shows up because
that's the name of the group in the utility statement in my XML file. I
don't have Tau installed, and in pinpath's case, there is no such tool.
I was able to make the dialog go way by picking a random directory for
each. If a user chooses to not install Tau, he may be confused by what
he is being asked for. I can also get out of this by clicking cancel, although
it's not clear to me as a user what the consequences of clicking canel
are. Maybe the solution is to have text in the dialog along the lines of
'Click cancel if <tool> is not installed or is unavailable' and then
have the plugin handle the absence of that tool properly.
This extension doesn't exactly fit my
model either. In my case, I have an application binary that has been previously
instrumented by my instrumentation and performance analysis tool which
has it's own set of views to set up the instrumentation and create the
instrumented binary. Once I have the instrumented binary, I think it's
reasonable to tell the user that he has to use the profile configurations
instead of the run configurations, since this is a different workflow.
However, when I run the instrumented application, I don't have a tool that
I'm running to do the performance analysis, I'm just setting environment
variables which affect the instrumentation, running the instrumented application
and then waiting for that application to complete. Once the application
completes. I'm expecting PTP to notify me of job completion, perhaps by
use if the IProgressMonitor. At that point, my tool knows that it has to
look for the performance data files, finds them and opens views displaying
that data. So I would expect to specify the application's path in the application
tab of the performance configuration and not specify the application path
again in the performance analysis tab. I think all that's required for
my tool to work with your plugin is that your plugin not require me to
specify some tool to run the application or assume the existence of that
tool.
For the environment variables, I'm thinking
they just need to be appended to the set that's in the environment tab
of the performance configuration. I'm guessing that since you seem to be
building a command line, that your plugin gets control somewhere in the
flow to invoking the application, and that it can just provide the environment
variables I set at that point. In my case, I'm assuming the user will be
running the application on a remote node, not the same node as Eclipse,
so this would need to work for the remote execution case as well.
I also ran into a couple exceptions
trying this.
The first exception appears when I try
opening a performance configuration and may be caused by the fact taht
I don't have Tau installed.
The second exception occurs after I
press cancel in both of the popup dialogs asking me for pathnames to Tau
and pinpath.
Exception #1
java.lang.NoClassDefFoundError: edu/uoregon/tau/perfdmf/DataSource
at org.eclipse.ptp.perf.tau.TAUAnalysisTab.initDBCombo(TAUAnalysisTab.java:1015)
at org.eclipse.ptp.perf.tau.TAUAnalysisTab.initializeFrom(TAUAnalysisTab.java:994)
at org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup.initializeFrom(AbstractLaunchConfigurationTabGroup.java:86)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupWrapper.initializeFrom(LaunchConfigurationTabGroupWrapper.java:143)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.displayInstanceTabs(LaunchConfigurationTabGroupViewer.java:787)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer$8.run(LaunchConfigurationTabGroupViewer.java:663)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.inputChanged(LaunchConfigurationTabGroupViewer.java:680)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput0(LaunchConfigurationTabGroupViewer.java:642)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput(LaunchConfigurationTabGroupViewer.java:618)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.handleLaunchConfigurationSelectionChanged(LaunchConfigurationsDialog.java:959)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog$4.selectionChanged(LaunchConfigurationsDialog.java:566)
at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:880)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)
at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1639)
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1104)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView.handleConfigurationAdded(LaunchConfigurationView.java:281)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView.access$1(LaunchConfigurationView.java:271)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView$2.run(LaunchConfigurationView.java:260)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3800)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3425)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.open(LaunchConfigurationsDialog.java:1113)
at org.eclipse.debug.ui.DebugUITools$1.run(DebugUITools.java:388)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:396)
at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:332)
at org.eclipse.debug.ui.actions.OpenLaunchDialogAction.run(OpenLaunchDialogAction.java:81)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
at java.lang.reflect.Method.invoke(Unknown
Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
Caused by: java.lang.ClassNotFoundException:
edu.uoregon.tau.perfdmf.DataSource
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:481)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:397)
at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:385)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)
at java.lang.ClassLoader.loadClass(Unknown
Source)
at java.lang.ClassLoader.loadClassInternal(Unknown
Source)
... 63 more
Exception #2
java.lang.StringIndexOutOfBoundsException:
String index out of range: -1
at java.lang.String.substring(Unknown
Source)
at org.eclipse.ptp.perf.tau.TAUAnalysisTab.testTAUEnv(TAUAnalysisTab.java:533)
at org.eclipse.ptp.perf.tau.TAUAnalysisTab.initMakefiles(TAUAnalysisTab.java:472)
at org.eclipse.ptp.perf.tau.TAUAnalysisTab.initializeFrom(TAUAnalysisTab.java:929)
at org.eclipse.debug.ui.AbstractLaunchConfigurationTabGroup.initializeFrom(AbstractLaunchConfigurationTabGroup.java:86)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupWrapper.initializeFrom(LaunchConfigurationTabGroupWrapper.java:143)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.displayInstanceTabs(LaunchConfigurationTabGroupViewer.java:787)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer$8.run(LaunchConfigurationTabGroupViewer.java:663)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.inputChanged(LaunchConfigurationTabGroupViewer.java:680)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput0(LaunchConfigurationTabGroupViewer.java:642)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput(LaunchConfigurationTabGroupViewer.java:618)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.handleLaunchConfigurationSelectionChanged(LaunchConfigurationsDialog.java:959)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog$4.selectionChanged(LaunchConfigurationsDialog.java:566)
at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:842)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
at org.eclipse.core.runtime.Platform.run(Platform.java:880)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:840)
at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1639)
at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1104)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView.handleConfigurationAdded(LaunchConfigurationView.java:281)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView.access$1(LaunchConfigurationView.java:271)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationView$2.run(LaunchConfigurationView.java:260)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:133)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3800)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3425)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.open(LaunchConfigurationsDialog.java:1113)
at org.eclipse.debug.ui.DebugUITools$1.run(DebugUITools.java:388)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:396)
at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:332)
at org.eclipse.debug.ui.actions.OpenLaunchDialogAction.run(OpenLaunchDialogAction.java:81)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown
Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
Source)
at java.lang.reflect.Method.invoke(Unknown
Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)
Dave
04/08/2009 09:27 PM |
To
| Parallel Tools Platform general developers
<ptp-dev@xxxxxxxxxxx>
|
cc
|
|
Subject
| Re: [ptp-dev] Question about performance
tools framework in PTP |
|
Are you looking in the run configuration dialog or the
profile configuration dialog? It should be showing up in the latter.
Check the dropdown box in the Performance Analysis tab. If your tool
shows up there but has no associated UI tab then the tool-pane element
isn't being taken in properly. Can I take a look at your xml file?
I'm making some headway on environment variable support, hopefully I'll
have that up in CVS soon. Ideally full wiki documentation for that
and a few other useful features will follow shortly.
Regards,
Wyatt
On Wed, Apr 8, 2009 at 6:18 PM, Dave Wootton <dwootton@xxxxxxxxxx>
wrote:
Wyatt
I tried this tonight with PTP 2.1.1 installed on an Eclipse 3.4.1 installation
and can't seem to make it work. I have a simple plugin I'm experimenting
with which implements a single new view. That plugin loads successfully
since I can see the new view.
I copied the extension point usage into my plugin.xml file directly from
the example on your wiki page
<extension point="org.eclipse.ptp.perf.workflows">
<workflowDefinitionXML
XMLFile="data/toolxml/tf.xml">
</workflowDefinitionXML>
</extension>
Then I created the data/toolxml/tf.xml
file as a new file in my plugin project and pasted the full contents from
the tf.xml example just below the extension point example into that file.
After that, I started a 2nd Eclipse instance as Eclipse application and
could see my plugin view. I opened teh run configuration dialog and picked
a parallel application run configuration and a C run configuration. I expected
to see a new tab in the launch configuration dialog with the title Performance
Analysis, but I don't see it. I don't see any errors logged in the error
log views or to the console views. I do see the org.eclipse.ptp.perf plugin
which I think implements your extension point, in the list of plugins in
the Help->About Eclipse SDK dialog so I think I have teh right plugins
loading.
I also tried using the PTP preferences panel to select the path to the
tf.xml file then open the launch configuration, and still didn't see the
new tab.
Am I doing something wrong?
Dave
The most through documentation available at the moment can be found here:
http://wiki.eclipse.org/PTP/ETFw/PTP_External_Tools_Framework
There have been a few additions to the XML definition capabilities since
this was written and it doesn't cover the internal API as much as the external
XML tool definitions system. It sounds like what you want will be
something like what we did for TAU integration, using your plugin to wrap
the components provided by the external tools. I can pull together
some more information on that for you.
So far, most of our test cases have dealt with generating command line
arguments, so we don't have a complete general purpose environment variable
system in place. However it shouldn't take long to get that up and
running. Setting environment variables in the local eclipse launch
environment is fairly straightforward, but if a different method is needed
to send them to the remote system I can provide a 'getter' for environment
variables specified in the tool's UI.
-Wyatt
On Mon, Apr 6, 2009 at 11:02 AM, Dave Wootton <dwootton@xxxxxxxxxx>
wrote:
Wyatt
I was hoping that if I chose this approach that it would cover CDT as
well. So that's good news. In order for this to be useful to me, I do need
to be able to add to the list of environment variables passed to the
remote process. Can you give me a reference to current documentation on
how to use this? I will look at the IProgessMonitor. I just need to find
time to do it.
Dave
Wyatt Spear <wspear@xxxxxxxxxxxxxx>
Sent by: ptp-dev-bounces@xxxxxxxxxxx
04/06/2009 12:11 PM
Please respond to
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>
To
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>
cc
Subject
Re: [ptp-dev] Question about performance tools framework in PTP
Greetings Dave,
The ExternalTools provide a distinct launch configuration system for both
the PTP and CDT. Presently the system covers status with the standard
IProgressMonitor used to display job status in the UI. It may be
possible
for you to hook in to that, but if not I can probably add a listener
hook. I'll also need to take a look and make sure environment variable
control is up and running. Please let me know if you have any questions
or if I can help out with anything.
-Wyatt
On Mon, Apr 6, 2009 at 7:11 AM, Dave Wootton <dwootton@xxxxxxxxxx>
wrote:
Wyatt
I have a performance analysis tool that has an Eclipse plugin. I'd like
to
extend the Eclipse launch configuration dialog to add a new panel with
execution options specific to this tool. These options result in setting
environment variables that the tool recognizes. The tool itself runs as
a
remote process on a different node than the Eclipse node. Greg suggested
that your framework might be helpful for this.
I need to use this for parallel execution, where I'm thinking of this as
a
logical extension of the PTP launch configuration, as well as for serial
applications which would not use the PTP launch configuration and do not
run under control of any PTP resource manager. Does your tool framework
work only with PTP launch configurations, or would it work with the CDT
launch dialogs as well.
Also, does your framework provide any notifications of job start and
finish, such that a listener could register to be notified of those state
changes?
Thanks
Dave
_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev
_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev
_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev
_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev
_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev
_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev
_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev