Implement 'perf bench' subsystem and suite completion
This commit is contained in:
		
							parent
							
								
									af2e596fa8
								
							
						
					
					
						commit
						ab17b682be
					
				
							
								
								
									
										68
									
								
								src/_perf
								
								
								
								
							
							
						
						
									
										68
									
								
								src/_perf
								
								
								
								
							|  | @ -136,12 +136,11 @@ _perf() { | |||
|             && ret=0 | ||||
|         ;; | ||||
|         (bench) | ||||
|           # TODO Complete subsystems | ||||
|           # TODO Complete suites | ||||
|           _arguments \ | ||||
|             '(-f --format)'{-f,--format=}'[specify format style]: :((default\:mainly\ for\ human\ reading simple\:friendly\ for\ automated\ processing\ by\ scripts))' \ | ||||
|             '1::subsystem' \ | ||||
|             '2::suite' \ | ||||
|             '(-r --repeat)'{-r,--repeat=}'[specify amount of times to repeat the run]' \ | ||||
|             '(-f --format)'{-f,--format=}'[specify format style]: :(default simple)' \ | ||||
|             '1:subsystem:(sched mem numa futex epoll all)' \ | ||||
|             '*:: :->bench_subsystem' \ | ||||
|             && ret=0 | ||||
|         ;; | ||||
|         (buildid-cache) | ||||
|  | @ -625,6 +624,37 @@ _perf() { | |||
|   esac | ||||
| 
 | ||||
|   case $state in | ||||
|     (bench_subsystem) | ||||
|       case $words[1] in | ||||
|         (sched) | ||||
|           _arguments \ | ||||
|             '1:suite:(messaging pipe)' \ | ||||
|             '*:: :->bench_sched_suite' \ | ||||
|             && ret=0 | ||||
|         ;; | ||||
|         (mem) | ||||
|           _arguments \ | ||||
|             '1:suite:(memcpy memset)' \ | ||||
|             '*:: :->bench_mem_suite' \ | ||||
|             && ret=0 | ||||
|         ;; | ||||
|         (numa) | ||||
|           _arguments \ | ||||
|             '1:suite:(mem)' \ | ||||
|             && ret=0 | ||||
|         ;; | ||||
|         (futex) | ||||
|           _arguments \ | ||||
|             '1:suite:(hash wake wake-parallel requeue lock-pi)' \ | ||||
|             && ret=0 | ||||
|         ;; | ||||
|         (epoll) | ||||
|           _arguments \ | ||||
|             '1:suite:(wait ctl)' \ | ||||
|             && ret=0 | ||||
|         ;; | ||||
|       esac | ||||
|     ;; | ||||
|     (c2c_args) | ||||
|       case $words[1] in | ||||
|         (record) | ||||
|  | @ -696,6 +726,34 @@ _perf() { | |||
|       fi | ||||
|     ;; | ||||
|   esac | ||||
| 
 | ||||
|   case $state in | ||||
|     (bench_sched_suite) | ||||
|       case $words[1] in | ||||
|         (messaging) | ||||
|           _arguments \ | ||||
|             '(-p --pipe)'{-p,--pipe}'[use pipe instead of socketpair]' \ | ||||
|             '(-t --thread)'{-t,--thread}'[be multi thread instead of multi process]' \ | ||||
|             '(-g --group)'{-g,--group=}'[specify number of groups]:number:' \ | ||||
|             '(-l --nr_loops)'{-l,--nr_loops=}['specify number of loops']\ | ||||
|             && ret=0 | ||||
|         ;; | ||||
|         (pipe) | ||||
|           _arguments \ | ||||
|             '(-l --loop)'{-l,--loop}'[specify number of loops]:number:' \ | ||||
|             && ret=0 | ||||
|       esac | ||||
|     ;; | ||||
|     (bench_mem_suite) | ||||
|       # memcpy and memset support same options | ||||
|       _arguments \ | ||||
|         '(-l --size)'{-l,--size=}'[specify size of memory to copy]:size:' \ | ||||
|         '(-f --function)'{-f,--function=}'[specify function to copy]:function:' \ | ||||
|         '(-l --nr_loops)'{-l,--nr_loops=}'[repeat memcpy invocation this number of times]:number:' \ | ||||
|         '(-c --cycles)'{-c,--cycles}'[use perf cpu-cycles event instead of gettimeofday]' \ | ||||
|         && ret=0 | ||||
|     ;; | ||||
|   esac | ||||
| } | ||||
| 
 | ||||
| # FIXME Parse 'perf --help' instead of hard-coding. | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue