Add overflow and normal kernel nOS-V tests
This commit is contained in:
		
							parent
							
								
									acf18c1bb4
								
							
						
					
					
						commit
						99dc3904af
					
				| @ -66,7 +66,8 @@ nosv_test(several-tasks.c SORT NAME several-tasks-breakdown-level-4 LEVEL 4 BREA | ||||
| include(CheckPerfParanoid) | ||||
| if (PERF_PARANOID_KERNEL) | ||||
|   message(STATUS "Enabling perf paranoid tests for nOS-V") | ||||
|   nosv_test(overflow-kernel-ring.c DRIVER "overflow-kernel-ring.driver.sh") | ||||
|   nosv_test(kernel.c NAME kernel-overflow DRIVER "kernel-overflow.driver.sh") | ||||
|   nosv_test(kernel.c NAME kernel-normal   DRIVER "kernel-normal.driver.sh") | ||||
| elseif(ENABLE_ALL_TESTS) | ||||
|   message(FATAL_ERROR "Cannot enable perf paranoid tests for nOS-V") | ||||
| else() | ||||
|  | ||||
							
								
								
									
										47
									
								
								test/rt/nosv/kernel-overflow.driver.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								test/rt/nosv/kernel-overflow.driver.sh
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| target=$OVNI_TEST_BIN | ||||
| 
 | ||||
| # We will set our own | ||||
| unset NOSV_CONFIG | ||||
| unset NOSV_CONFIG_OVERRIDE | ||||
| 
 | ||||
| export NOSV_APPID=1 | ||||
| 
 | ||||
| # Small kernel ring size to make execution fast | ||||
| ringsize=$((64*1024)) | ||||
| 
 | ||||
| # Each CS event pair occupies 16 bytes. | ||||
| cspair=32 | ||||
| 
 | ||||
| # How many CS event pairs fit in the ring buffer? | ||||
| navail=$(($ringsize / $cspair)) | ||||
| 
 | ||||
| # For the test, write 8 times the ring buffer | ||||
| ncs=$((8 * $navail)) | ||||
| 
 | ||||
| # Flush the kernel after overflowing the ring buffer, by writing to it twice the | ||||
| # ring size | ||||
| nflush=$((2 * $ringsize / $cspair)) | ||||
| 
 | ||||
| cat > nosv.toml << EOF | ||||
| instrumentation.version = "ovni" | ||||
| ovni.level = 3 | ||||
| ovni.kernel_ringsize = ${ringsize} | ||||
| EOF | ||||
| 
 | ||||
| $target $ncs $nflush 2>&1 | tee err.log | ||||
| 
 | ||||
| # Ensure no nOS-V warnings at runtime | ||||
| if grep -c "cannot enable kernel events" err.log; then | ||||
|   echo "cannot enable kernel events in all threads" >&2 | ||||
|   exit 1 | ||||
| fi | ||||
| 
 | ||||
| # We need to sort the trace as it has unsorted regions | ||||
| ovnisort ovni | ||||
| 
 | ||||
| # Ensure we have at least the number of context switches we caused, and ensure | ||||
| # the number of "in" and "out" events match. | ||||
| ovnitop ovni | awk '{n[$1] = $2} END { if (n["KCO"] != n["KCI"] || n["KCO"] < '$ncs') exit 1 }' | ||||
| 
 | ||||
| # Run the emulator | ||||
| ovniemu -l ovni | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user