diff --git a/.idea/modules.xml b/.idea/modules.xml
index a05ee8883d7a..440e155da563 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -585,6 +585,7 @@
+
diff --git a/plugins/performanceTesting/backend-split/intellij.performanceTesting.backend.split.iml b/plugins/performanceTesting/backend-split/intellij.performanceTesting.backend.split.iml
new file mode 100644
index 000000000000..bd5c9e272bb8
--- /dev/null
+++ b/plugins/performanceTesting/backend-split/intellij.performanceTesting.backend.split.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/performanceTesting/backend-split/resources/intellij.performanceTesting.backend.split.xml b/plugins/performanceTesting/backend-split/resources/intellij.performanceTesting.backend.split.xml
new file mode 100644
index 000000000000..d93684eb370b
--- /dev/null
+++ b/plugins/performanceTesting/backend-split/resources/intellij.performanceTesting.backend.split.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/performanceTesting/backend-split/src/com/intellij/performanceTesting/backend/split/RemoteClientSnapshotUploader.kt b/plugins/performanceTesting/backend-split/src/com/intellij/performanceTesting/backend/split/RemoteClientSnapshotUploader.kt
new file mode 100644
index 000000000000..e23dce724d5b
--- /dev/null
+++ b/plugins/performanceTesting/backend-split/src/com/intellij/performanceTesting/backend/split/RemoteClientSnapshotUploader.kt
@@ -0,0 +1,34 @@
+package com.intellij.performanceTesting.backend.split
+
+import com.intellij.idea.AppMode
+import com.intellij.openapi.client.ClientSessionsManager
+import com.intellij.openapi.diagnostic.thisLogger
+import com.intellij.openapi.project.Project
+import com.jetbrains.performancePlugin.PerformanceTestingBundle
+import com.jetbrains.performancePlugin.profilers.SnapshotOpener
+import com.jetbrains.rd.ide.model.RemoteFileAddress
+import com.jetbrains.rd.ide.model.SplitIde
+import com.jetbrains.rd.ide.model.fileTransferModel
+import com.jetbrains.rdserver.core.protocolModel
+import org.jetbrains.annotations.Nls
+import java.io.File
+
+internal class RemoteClientSnapshotUploader : SnapshotOpener {
+ override fun canOpen(snapshot: File, project: Project?): Boolean {
+ return project != null && AppMode.isRemoteDevHost()
+ }
+
+ override fun getPresentableName(): @Nls String? {
+ return PerformanceTestingBundle.message("profiling.load.snapshot.to.client.action.text")
+ }
+
+ override fun open(snapshot: File, project: Project?) {
+ if (project == null) {
+ thisLogger().warn("Unable to load a snapshot without a project")
+ return
+ }
+
+ val remoteFileAddress = RemoteFileAddress(snapshot.absolutePath, SplitIde.Host)
+ ClientSessionsManager.getProjectSession(project)?.protocolModel?.fileTransferModel?.chooseTargetDirectoryAndDownloadFile?.fire(listOf(remoteFileAddress))
+ }
+}
\ No newline at end of file
diff --git a/plugins/performanceTesting/core/resources/messages/PerformanceTestingBundle.properties b/plugins/performanceTesting/core/resources/messages/PerformanceTestingBundle.properties
index f24d20304ae6..88b12e3978cc 100644
--- a/plugins/performanceTesting/core/resources/messages/PerformanceTestingBundle.properties
+++ b/plugins/performanceTesting/core/resources/messages/PerformanceTestingBundle.properties
@@ -3,6 +3,7 @@ profiling.capture.snapshot.success=Captured snapshot ''{0}'' is placed in user h
profiling.capture.snapshot.error=Failed to capture snapshot: {0}
profiling.capture.snapshot.action.showInFolder=Show in {0}
profiling.capture.snapshot.action.open=Open With Intellij Profiler
+profiling.load.snapshot.to.client.action.text=Download to Client Machine
command.goto.finish=GoTo was executed
command.inspection.extension=No files with extension: