Re: [rt-tests v1 3/6] cyclictest: Use affinity_mask for stearing thread placement

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Fri, 18 Dec 2020, Daniel Wagner wrote:

> We don't need an extra variable to track the state if a bitmask is
> available or not. Check directly if the mask is usable.
> 
> Signed-off-by: Daniel Wagner <dwagner@xxxxxxx>
> ---
>  src/cyclictest/cyclictest.c | 28 ++++------------------------
>  1 file changed, 4 insertions(+), 24 deletions(-)
> 
> diff --git a/src/cyclictest/cyclictest.c b/src/cyclictest/cyclictest.c
> index a5ca764da254..0e6519125c2f 100644
> --- a/src/cyclictest/cyclictest.c
> +++ b/src/cyclictest/cyclictest.c
> @@ -893,7 +893,6 @@ static int interval = DEFAULT_INTERVAL;
>  static int distance = -1;
>  static struct bitmask *affinity_mask = NULL;
>  static int smp = 0;
> -static int setaffinity = AFFINITY_UNSPECIFIED;
>  
>  static int clocksources[] = {
>  	CLOCK_MONOTONIC,
> @@ -1020,19 +1019,13 @@ static void process_options(int argc, char *argv[], int max_cpus)
>  				break;
>  			if (optarg) {
>  				parse_cpumask(optarg, max_cpus, &affinity_mask);
> -				setaffinity = AFFINITY_SPECIFIED;
>  			} else if (optind < argc &&
>  				   (atoi(argv[optind]) ||
>  				    argv[optind][0] == '0' ||
>  				    argv[optind][0] == '!')) {
>  				parse_cpumask(argv[optind], max_cpus, &affinity_mask);
> -				setaffinity = AFFINITY_SPECIFIED;
> -			} else {
> -				setaffinity = AFFINITY_USEALL;
>  			}
>  
> -			if (setaffinity == AFFINITY_SPECIFIED && !affinity_mask)
> -				display_help(1);
>  			if (verbose)
>  				printf("Using %u cpus.\n",
>  					numa_bitmask_weight(affinity_mask));
> @@ -1125,7 +1118,6 @@ static void process_options(int argc, char *argv[], int max_cpus)
>  		case OPT_SMP: /* SMP testing */
>  			smp = 1;
>  			num_threads = -1; /* update after parsing */
> -			setaffinity = AFFINITY_USEALL;
>  			break;
>  		case 't':
>  		case OPT_THREADS:
> @@ -1194,23 +1186,16 @@ static void process_options(int argc, char *argv[], int max_cpus)
>  		use_nanosleep = MODE_CLOCK_NANOSLEEP;
>  	}
>  
> -	/* if smp wasn't requested, test for numa automatically */
> -	if (!smp) {
> -		if (setaffinity == AFFINITY_UNSPECIFIED)
> -			setaffinity = AFFINITY_USEALL;
> -	}
> -
>  	if (option_affinity && smp) {
>  		warn("-a ignored due to smp mode\n");
>  		if (affinity_mask) {
>  			numa_bitmask_free(affinity_mask);
>  			affinity_mask = NULL;
>  		}
> -		setaffinity = AFFINITY_USEALL;
>  	}
>  
>  	if (smi) {
> -		if (setaffinity == AFFINITY_UNSPECIFIED)
> +		if (affinity_mask)
>  			fatal("SMI counter relies on thread affinity\n");
>  
>  		if (!has_smi_counter())
> @@ -1756,7 +1741,7 @@ int main(int argc, char **argv)
>  		printf("Max CPUs = %d\n", max_cpus);
>  
>  	/* Restrict the main pid to the affinity specified by the user */
> -	if (affinity_mask != NULL) {
> +	if (affinity_mask) {
>  		int res;
>  
>  		errno = 0;
> @@ -1915,17 +1900,12 @@ int main(int argc, char **argv)
>  		if (status != 0)
>  			fatal("error from pthread_attr_init for thread %d: %s\n", i, strerror(status));
>  
> -		switch (setaffinity) {
> -		case AFFINITY_UNSPECIFIED: cpu = -1; break;
> -		case AFFINITY_SPECIFIED:
> +		if (affinity_mask) {
>  			cpu = cpu_for_thread_sp(i, max_cpus, affinity_mask);
>  			if (verbose)
>  				printf("Thread %d using cpu %d.\n", i, cpu);
> -			break;
> -		case AFFINITY_USEALL:
> +		} else {
>  			cpu = cpu_for_thread_ua(i, max_cpus);
> -			break;
> -		default: cpu = -1;
>  		}
>  
>  		/* find the memory node associated with the cpu i */
> -- 
> 2.29.2
> 
> 
-Fixed spelling of "steering"
Signed-off-by: John Kacur <jkacur@xxxxxxxxxx>



[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux