locationd profiling (#1625)
	
		
	
				
					
				
			
							parent
							
								
									165bcf1f31
								
							
						
					
					
						commit
						66455b075d
					
				
				 2 changed files with 51 additions and 0 deletions
			
			
		@ -0,0 +1,49 @@ | 
				
			|||||||
 | 
					#!/usr/bin/env python3 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cProfile  # pylint: disable=import-error | 
				
			||||||
 | 
					import pprofile  # pylint: disable=import-error | 
				
			||||||
 | 
					import pyprof2calltree  # pylint: disable=import-error | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from tools.lib.logreader import LogReader | 
				
			||||||
 | 
					from selfdrive.locationd.locationd import locationd_thread | 
				
			||||||
 | 
					from selfdrive.test.profiling.lib import SubMaster, PubMaster, ReplayDone | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					BASE_URL = "https://commadataci.blob.core.windows.net/openpilotci/" | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CARS = { | 
				
			||||||
 | 
					  'toyota': ("77611a1fac303767|2020-02-29--13-29-33/3", "TOYOTA COROLLA TSS2 2019"), | 
				
			||||||
 | 
					} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def get_inputs(msgs, process): | 
				
			||||||
 | 
					  sub_socks = ['gpsLocationExternal', 'sensorEvents', 'cameraOdometry', 'liveCalibration', 'carState'] | 
				
			||||||
 | 
					  trigger = 'cameraOdometry' | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  sm = SubMaster(msgs, trigger, sub_socks) | 
				
			||||||
 | 
					  pm = PubMaster() | 
				
			||||||
 | 
					  return sm, pm | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == "__main__": | 
				
			||||||
 | 
					  segment, fingerprint = CARS['toyota'] | 
				
			||||||
 | 
					  segment = segment.replace('|', '/') | 
				
			||||||
 | 
					  rlog_url = f"{BASE_URL}{segment}/rlog.bz2" | 
				
			||||||
 | 
					  msgs = list(LogReader(rlog_url)) | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Statistical | 
				
			||||||
 | 
					  sm, pm = get_inputs(msgs, 'locationd') | 
				
			||||||
 | 
					  with pprofile.StatisticalProfile()(period=0.00001) as pr: | 
				
			||||||
 | 
					    try: | 
				
			||||||
 | 
					      locationd_thread(sm, pm) | 
				
			||||||
 | 
					    except ReplayDone: | 
				
			||||||
 | 
					      pass | 
				
			||||||
 | 
					  pr.dump_stats('cachegrind.out.locationd_statistical') | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Deterministic | 
				
			||||||
 | 
					  sm, pm = get_inputs(msgs, 'controlsd') | 
				
			||||||
 | 
					  with cProfile.Profile() as pr: | 
				
			||||||
 | 
					    try: | 
				
			||||||
 | 
					      locationd_thread(sm, pm) | 
				
			||||||
 | 
					    except ReplayDone: | 
				
			||||||
 | 
					      pass | 
				
			||||||
 | 
					  pyprof2calltree.convert(pr.getstats(), 'cachegrind.out.locationd_deterministic') | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue