Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(543)

Side by Side Diff: ct/go/master_scripts/run_chromium_perf_on_workers/main.go

Issue 1411423003: [CT] Add ability to run unlanded benchmarks on Chromium Perf (Closed) Base URL: https://skia.googlesource.com/buildbot@master
Patch Set: Add documentation link Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // run_chromium_perf_on_workers is an application that runs the specified teleme try 1 // run_chromium_perf_on_workers is an application that runs the specified teleme try
2 // benchmark on all CT workers and uploads the results to Google Storage. The 2 // benchmark on all CT workers and uploads the results to Google Storage. The
3 // requester is emailed when the task is done. 3 // requester is emailed when the task is done.
4 package main 4 package main
5 5
6 import ( 6 import (
7 "bytes" 7 "bytes"
8 "database/sql" 8 "database/sql"
9 "flag" 9 "flag"
10 "fmt" 10 "fmt"
(...skipping 29 matching lines...) Expand all
40 targetPlatform = flag.String("target_platform", util.PLATFORM _ANDROID, "The platform the benchmark will run on (Android / Linux).") 40 targetPlatform = flag.String("target_platform", util.PLATFORM _ANDROID, "The platform the benchmark will run on (Android / Linux).")
41 runID = flag.String("run_id", "", "The unique run id (typically requester + timestamp).") 41 runID = flag.String("run_id", "", "The unique run id (typically requester + timestamp).")
42 varianceThreshold = flag.Float64("variance_threshold", 0.0, "The variance threshold to use when comparing the resultant CSV files.") 42 varianceThreshold = flag.Float64("variance_threshold", 0.0, "The variance threshold to use when comparing the resultant CSV files.")
43 discardOutliers = flag.Float64("discard_outliers", 0.0, "The p ercentage of outliers to discard when comparing the result CSV files.") 43 discardOutliers = flag.Float64("discard_outliers", 0.0, "The p ercentage of outliers to discard when comparing the result CSV files.")
44 44
45 taskCompletedSuccessfully = false 45 taskCompletedSuccessfully = false
46 46
47 htmlOutputLink = util.MASTER_LOGSERVER_LINK 47 htmlOutputLink = util.MASTER_LOGSERVER_LINK
48 skiaPatchLink = util.MASTER_LOGSERVER_LINK 48 skiaPatchLink = util.MASTER_LOGSERVER_LINK
49 chromiumPatchLink = util.MASTER_LOGSERVER_LINK 49 chromiumPatchLink = util.MASTER_LOGSERVER_LINK
50 benchmarkPatchLink = util.MASTER_LOGSERVER_LINK
50 noPatchOutputLink = util.MASTER_LOGSERVER_LINK 51 noPatchOutputLink = util.MASTER_LOGSERVER_LINK
51 withPatchOutputLink = util.MASTER_LOGSERVER_LINK 52 withPatchOutputLink = util.MASTER_LOGSERVER_LINK
52 ) 53 )
53 54
54 func sendEmail(recipients []string) { 55 func sendEmail(recipients []string) {
55 // Send completion email. 56 // Send completion email.
56 emailSubject := fmt.Sprintf("Cluster telemetry chromium perf task has co mpleted (%s)", *runID) 57 emailSubject := fmt.Sprintf("Cluster telemetry chromium perf task has co mpleted (%s)", *runID)
57 failureHtml := "" 58 failureHtml := ""
58 if !taskCompletedSuccessfully { 59 if !taskCompletedSuccessfully {
59 emailSubject += " with failures" 60 emailSubject += " with failures"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 gs, err := util.NewGsUtil(nil) 133 gs, err := util.NewGsUtil(nil)
133 if err != nil { 134 if err != nil {
134 glog.Errorf("Could not instantiate gsutil object: %s", err) 135 glog.Errorf("Could not instantiate gsutil object: %s", err)
135 return 136 return
136 } 137 }
137 remoteOutputDir := filepath.Join(util.ChromiumPerfRunsDir, *runID) 138 remoteOutputDir := filepath.Join(util.ChromiumPerfRunsDir, *runID)
138 139
139 // Copy the patches to Google Storage. 140 // Copy the patches to Google Storage.
140 skiaPatchName := *runID + ".skia.patch" 141 skiaPatchName := *runID + ".skia.patch"
141 chromiumPatchName := *runID + ".chromium.patch" 142 chromiumPatchName := *runID + ".chromium.patch"
142 » for _, patchName := range []string{skiaPatchName, chromiumPatchName} { 143 » benchmarkPatchName := *runID + ".benchmark.patch"
144 » for _, patchName := range []string{skiaPatchName, chromiumPatchName, ben chmarkPatchName} {
143 if err := gs.UploadFile(patchName, os.TempDir(), remoteOutputDir ); err != nil { 145 if err := gs.UploadFile(patchName, os.TempDir(), remoteOutputDir ); err != nil {
144 glog.Errorf("Could not upload %s to %s: %s", patchName, remoteOutputDir, err) 146 glog.Errorf("Could not upload %s to %s: %s", patchName, remoteOutputDir, err)
145 return 147 return
146 } 148 }
147 } 149 }
148 skiaPatchLink = util.GS_HTTP_LINK + filepath.Join(util.GSBucketName, rem oteOutputDir, skiaPatchName) 150 skiaPatchLink = util.GS_HTTP_LINK + filepath.Join(util.GSBucketName, rem oteOutputDir, skiaPatchName)
149 chromiumPatchLink = util.GS_HTTP_LINK + filepath.Join(util.GSBucketName, remoteOutputDir, chromiumPatchName) 151 chromiumPatchLink = util.GS_HTTP_LINK + filepath.Join(util.GSBucketName, remoteOutputDir, chromiumPatchName)
152 benchmarkPatchLink = util.GS_HTTP_LINK + filepath.Join(util.GSBucketName , remoteOutputDir, benchmarkPatchName)
150 153
151 // Create the two required chromium builds (with patch and without the p atch). 154 // Create the two required chromium builds (with patch and without the p atch).
152 chromiumHash, skiaHash, err := util.CreateChromiumBuild(*runID, *targetP latform, "", "", true) 155 chromiumHash, skiaHash, err := util.CreateChromiumBuild(*runID, *targetP latform, "", "", true)
153 if err != nil { 156 if err != nil {
154 glog.Errorf("Could not create chromium build: %s", err) 157 glog.Errorf("Could not create chromium build: %s", err)
155 return 158 return
156 } 159 }
157 160
158 // Reboot all workers to start from a clean slate. 161 // Reboot all workers to start from a clean slate.
159 if !*master_common.Local { 162 if !*master_common.Local {
160 util.RebootWorkers() 163 util.RebootWorkers()
161 } 164 }
162 165
163 if *targetPlatform == util.PLATFORM_ANDROID { 166 if *targetPlatform == util.PLATFORM_ANDROID {
164 // Reboot all Android devices to start from a clean slate. 167 // Reboot all Android devices to start from a clean slate.
165 util.RebootAndroidDevices() 168 util.RebootAndroidDevices()
166 } 169 }
167 170
168 // Run the run_chromium_perf script on all workers. 171 // Run the run_chromium_perf script on all workers.
169 runIDNoPatch := *runID + "-nopatch" 172 runIDNoPatch := *runID + "-nopatch"
170 runIDWithPatch := *runID + "-withpatch" 173 runIDWithPatch := *runID + "-withpatch"
171 chromiumBuildNoPatch := fmt.Sprintf("try-%s-%s-%s", chromiumHash, skiaHa sh, runIDNoPatch) 174 chromiumBuildNoPatch := fmt.Sprintf("try-%s-%s-%s", chromiumHash, skiaHa sh, runIDNoPatch)
172 chromiumBuildWithPatch := fmt.Sprintf("try-%s-%s-%s", chromiumHash, skia Hash, runIDWithPatch) 175 chromiumBuildWithPatch := fmt.Sprintf("try-%s-%s-%s", chromiumHash, skia Hash, runIDWithPatch)
173 runChromiumPerfCmdTemplate := "DISPLAY=:0 run_chromium_perf " + 176 runChromiumPerfCmdTemplate := "DISPLAY=:0 run_chromium_perf " +
174 "--worker_num={{.WorkerNum}} --log_dir={{.LogDir}} --log_id={{.R unID}} --pageset_type={{.PagesetType}} " + 177 "--worker_num={{.WorkerNum}} --log_dir={{.LogDir}} --log_id={{.R unID}} --pageset_type={{.PagesetType}} " +
175 "--chromium_build_nopatch={{.ChromiumBuildNoPatch}} --chromium_b uild_withpatch={{.ChromiumBuildWithPatch}} " + 178 "--chromium_build_nopatch={{.ChromiumBuildNoPatch}} --chromium_b uild_withpatch={{.ChromiumBuildWithPatch}} " +
176 » » "--run_id_nopatch={{.RunIDNoPatch}} --run_id_withpatch={{.RunIDW ithPatch}} " + 179 » » "--run_id={{.RunID}} --run_id_nopatch={{.RunIDNoPatch}} --run_id _withpatch={{.RunIDWithPatch}} " +
177 "--benchmark_name={{.BenchmarkName}} --benchmark_extra_args=\"{{ .BenchmarkExtraArgs}}\" " + 180 "--benchmark_name={{.BenchmarkName}} --benchmark_extra_args=\"{{ .BenchmarkExtraArgs}}\" " +
178 "--browser_extra_args_nopatch=\"{{.BrowserExtraArgsNoPatch}}\" - -browser_extra_args_withpatch=\"{{.BrowserExtraArgsWithPatch}}\" " + 181 "--browser_extra_args_nopatch=\"{{.BrowserExtraArgsNoPatch}}\" - -browser_extra_args_withpatch=\"{{.BrowserExtraArgsWithPatch}}\" " +
179 "--repeat_benchmark={{.RepeatBenchmark}} --run_in_parallel={{.Ru nInParallel}} --target_platform={{.TargetPlatform}} " + 182 "--repeat_benchmark={{.RepeatBenchmark}} --run_in_parallel={{.Ru nInParallel}} --target_platform={{.TargetPlatform}} " +
180 "--local={{.Local}};" 183 "--local={{.Local}};"
181 runChromiumPerfTemplateParsed := template.Must(template.New("run_chromiu m_perf_cmd").Parse(runChromiumPerfCmdTemplate)) 184 runChromiumPerfTemplateParsed := template.Must(template.New("run_chromiu m_perf_cmd").Parse(runChromiumPerfCmdTemplate))
182 runChromiumPerfCmdBytes := new(bytes.Buffer) 185 runChromiumPerfCmdBytes := new(bytes.Buffer)
183 if err := runChromiumPerfTemplateParsed.Execute(runChromiumPerfCmdBytes, struct { 186 if err := runChromiumPerfTemplateParsed.Execute(runChromiumPerfCmdBytes, struct {
184 WorkerNum string 187 WorkerNum string
185 LogDir string 188 LogDir string
186 PagesetType string 189 PagesetType string
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 pathToCsvComparer, 260 pathToCsvComparer,
258 "--csv_file1=" + noPatchCSVPath, 261 "--csv_file1=" + noPatchCSVPath,
259 "--csv_file2=" + withPatchCSVPath, 262 "--csv_file2=" + withPatchCSVPath,
260 "--output_html=" + htmlOutputDir, 263 "--output_html=" + htmlOutputDir,
261 "--variance_threshold=" + strconv.FormatFloat(*varianceThreshold , 'f', 2, 64), 264 "--variance_threshold=" + strconv.FormatFloat(*varianceThreshold , 'f', 2, 64),
262 "--discard_outliers=" + strconv.FormatFloat(*discardOutliers, 'f ', 2, 64), 265 "--discard_outliers=" + strconv.FormatFloat(*discardOutliers, 'f ', 2, 64),
263 "--absolute_url=" + htmlOutputLinkBase, 266 "--absolute_url=" + htmlOutputLinkBase,
264 "--requester_email=" + *emails, 267 "--requester_email=" + *emails,
265 "--skia_patch_link=" + skiaPatchLink, 268 "--skia_patch_link=" + skiaPatchLink,
266 "--chromium_patch_link=" + chromiumPatchLink, 269 "--chromium_patch_link=" + chromiumPatchLink,
270 "--benchmark_patch_link=" + benchmarkPatchLink,
267 "--description=" + *description, 271 "--description=" + *description,
268 "--raw_csv_nopatch=" + noPatchOutputLink, 272 "--raw_csv_nopatch=" + noPatchOutputLink,
269 "--raw_csv_withpatch=" + withPatchOutputLink, 273 "--raw_csv_withpatch=" + withPatchOutputLink,
270 "--num_repeated=" + strconv.Itoa(*repeatBenchmark), 274 "--num_repeated=" + strconv.Itoa(*repeatBenchmark),
271 "--target_platform=" + *targetPlatform, 275 "--target_platform=" + *targetPlatform,
272 "--browser_args_nopatch=" + *browserExtraArgsNoPatch, 276 "--browser_args_nopatch=" + *browserExtraArgsNoPatch,
273 "--browser_args_withpatch=" + *browserExtraArgsWithPatch, 277 "--browser_args_withpatch=" + *browserExtraArgsWithPatch,
274 "--pageset_type=" + *pagesetType, 278 "--pageset_type=" + *pagesetType,
275 "--chromium_hash=" + chromiumHash, 279 "--chromium_hash=" + chromiumHash,
276 "--skia_hash=" + skiaHash, 280 "--skia_hash=" + skiaHash,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 if err != nil { 338 if err != nil {
335 return noOutputSlaves, fmt.Errorf("Error running csv_merger.py: %s", err) 339 return noOutputSlaves, fmt.Errorf("Error running csv_merger.py: %s", err)
336 } 340 }
337 // Copy the output file to Google Storage. 341 // Copy the output file to Google Storage.
338 remoteOutputDir := filepath.Join(util.BenchmarkRunsDir, runID, "consolid ated_outputs") 342 remoteOutputDir := filepath.Join(util.BenchmarkRunsDir, runID, "consolid ated_outputs")
339 if err := gs.UploadFile(outputFileName, localOutputDir, remoteOutputDir) ; err != nil { 343 if err := gs.UploadFile(outputFileName, localOutputDir, remoteOutputDir) ; err != nil {
340 return noOutputSlaves, fmt.Errorf("Unable to upload %s to %s: %s ", outputFileName, remoteOutputDir, err) 344 return noOutputSlaves, fmt.Errorf("Unable to upload %s to %s: %s ", outputFileName, remoteOutputDir, err)
341 } 345 }
342 return noOutputSlaves, nil 346 return noOutputSlaves, nil
343 } 347 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698