only print #cores seen

pull/3901/head
Alistair Veitch 9 years ago
parent dcfb3fe482
commit c11e8472b5
  1. 19
      test/core/support/cpu_test.c

@ -54,14 +54,15 @@
to run on all cores).
4) Each thread checks what core it is running on, and marks that core
as "used" in the test.
5) Check that all cores were "used"
5) Count number of "used" cores.
The test will fail if:
1) gpr_cpu_num_cores() == 0
2) The result of gpr_cpu_current_cpu() >= gpr_cpu_num_cores()
3) Not all cores are used/seen in the test. If a system does not exhibit
this property (e.g. some cores reserved/unusable), then this condition
will have to be rethought.
2) Any result from gpr_cpu_current_cpu() >= gpr_cpu_num_cores()
3) Ideally, we would fail if not all cores were seen as used. Unfortunately,
this is only probabilistically true, and depends on the OS, it's
scheduler, etc. So we just print out an indication of how many were seen;
hopefully developers can use this to sanity check their system.
*/
/* Status shared across threads */
@ -92,7 +93,6 @@ static void worker_thread(void *arg) {
gpr_mu_unlock(&ct->mu);
}
gpr_mu_lock(&ct->mu);
fprintf(stderr, "thread done on core %d\n", cpu);
ct->r = r; /* make it look like we care about r's value... */
ct->nthreads--;
if (ct->nthreads == 0) {
@ -104,11 +104,11 @@ static void worker_thread(void *arg) {
static void cpu_test(void) {
gpr_uint32 i;
int cores_seen = 0;
struct cpu_test ct;
gpr_thd_id thd;
ct.ncores = gpr_cpu_num_cores();
GPR_ASSERT(ct.ncores > 0);
fprintf(stderr, "#cores = %d\n", ct.ncores);
ct.nthreads = (int)ct.ncores * 3;
ct.used = gpr_malloc(ct.ncores * sizeof(int));
memset(ct.used, 0, ct.ncores * sizeof(int));
@ -124,8 +124,11 @@ static void cpu_test(void) {
}
gpr_mu_unlock(&ct.mu);
for (i = 0; i < ct.ncores; i++) {
GPR_ASSERT(ct.used[i]);
if (ct.used[i]) {
cores_seen++;
}
}
fprintf(stderr, "Saw %d/%d cores\n", cores_seen, ct.ncores);
}
int main(int argc, char *argv[]) {

Loading…
Cancel
Save