You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
| 
								 
											7 years ago
										 
									 | 
							
								# Ninja build log collection
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[TOC]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Overview
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								When chromium developers use autoninja for their build,
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								e.g.
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								$ autoninja -C out/Release chrome
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								autoninja uploads ninja's build log for Google employees but we don't collect
							 | 
						||
| 
								 | 
							
								logs from external contributors.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								We use [this page](https://chromium-build-stats-staging.appspot.com/should-upload)
							 | 
						||
| 
								 | 
							
								to decide whether an autoninja user is a Googler or not. Only people with access
							 | 
						||
| 
								 | 
							
								to Google's internal network can see 'Success'.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Before uploading logs, autoninja shows a message 10 times to warn users that we
							 | 
						||
| 
								 | 
							
								will collect build logs.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								autoninja users can also opt in or out by using the following commands:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* `ninjalog_uploader_wrapper.py opt-in`
							 | 
						||
| 
								 | 
							
								* `ninjalog_uploader_wrapper.py opt-out`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## What type of data are collected?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The collected build log contains
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* output file of build tasks (e.g. chrome, obj/url/url/url_util.o)
							 | 
						||
| 
								 | 
							
								* hash of build command
							 | 
						||
| 
								 | 
							
								* start and end time of build tasks
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								See [manual of ninja](https://ninja-build.org/manual.html#ref_log) for more
							 | 
						||
| 
								 | 
							
								details.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In addition to ninja's build log, we send the following data for further
							 | 
						||
| 
								 | 
							
								analysis:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								* OS (e.g. Win, Mac or Linux)
							 | 
						||
| 
								 | 
							
								* number of cpu cores of building machine
							 | 
						||
| 
								 | 
							
								* build targets (e.g. chrome, browser_tests)
							 | 
						||
| 
								 | 
							
								* parallelism passed by -j flag
							 | 
						||
| 
								 | 
							
								* following build configs
							 | 
						||
| 
								 | 
							
								  * host\_os, host\_cpu
							 | 
						||
| 
								 | 
							
								  * target\_os, target\_cpu
							 | 
						||
| 
								 | 
							
								  * symbol\_level
							 | 
						||
| 
								 | 
							
								  * use\_goma
							 | 
						||
| 
								 | 
							
								  * is\_debug
							 | 
						||
| 
								 | 
							
								  * is\_component\_build
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 We don't collect personally identifiable information
							 | 
						||
| 
								 | 
							
								(e.g. username, ip address).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Why ninja log is collected? / How the collected logs are used?
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								We (goma team) collect build logs to find slow build tasks that harm developer's
							 | 
						||
| 
								 | 
							
								productivity. Based on collected stats, we find the place/build tasks where we
							 | 
						||
| 
								 | 
							
								need to focus on. Also we use collected stats to track chrome build performance
							 | 
						||
| 
								 | 
							
								on developer's machine. We'll use this stats to measure how much we can/can't
							 | 
						||
| 
								 | 
							
								improve build performance on developer's machine.
							 |