cpus_t *read_force_affinity(int n_avail, int verbose) { int sz = n_avail <= 1 ? 1 : n_avail ; tsc_t max = sec / 100 ; for ( ; ; ) { warm_up(sz+1,max) ; cpus_t *r = read_affinity() ; if (n_avail <= r->sz) return r ; if (verbose) { fprintf(stderr,"Read affinity: '") ; cpus_dump(stderr,r) ; fprintf(stderr,"'\n") ; } cpus_free(r) ; } }
void force_one_affinity(int a, int sz,int verbose, char *name) { if (a >= 0) { cpu_set_t mask; int r ; CPU_ZERO(&mask) ; CPU_SET(a,&mask) ; do { r = pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) ; if (r != 0) { if (verbose) fprintf(stderr,"%s: force %i failed\n",name,a) ; int nwarm = get_present() ; if (verbose > 1) fprintf(stderr,"%s: present=%i\n",name,nwarm) ; if (nwarm < 0) nwarm = sz+1 ; warm_up(nwarm,sec/100) ; } } while (r != 0) ; } }
/** * Run the simulation taking stats for some batches. * * The simulation are split in three phases: * Warm-up, Convergency assurement & Stationary state. * * @see warm_up() * @see convergency() * @see stationary() */ void run_network_batch(void){ warm_up(); convergency(); stationary(); }