< prev index next >

src/hotspot/share/gc/z/zStat.cpp

Print this page




 407 }
 408 
 409 //
 410 // Stat sampler
 411 //
 412 ZStatSampler::ZStatSampler(const char* group, const char* name, ZStatUnitPrinter printer) :
 413     ZStatIterableValue<ZStatSampler>(group, name, sizeof(ZStatSamplerData)),
 414     _printer(printer) {}
 415 
 416 ZStatSamplerData* ZStatSampler::get() const {
 417   return get_cpu_local<ZStatSamplerData>(ZCPU::id());
 418 }
 419 
 420 ZStatSamplerData ZStatSampler::collect_and_reset() const {
 421   ZStatSamplerData all;
 422 
 423   const uint32_t ncpus = ZCPU::count();
 424   for (uint32_t i = 0; i < ncpus; i++) {
 425     ZStatSamplerData* const cpu_data = get_cpu_local<ZStatSamplerData>(i);
 426     if (cpu_data->_nsamples > 0) {
 427       const uint64_t nsamples = Atomic::xchg((uint64_t)0, &cpu_data->_nsamples);
 428       const uint64_t sum = Atomic::xchg((uint64_t)0, &cpu_data->_sum);
 429       const uint64_t max = Atomic::xchg((uint64_t)0, &cpu_data->_max);
 430       all._nsamples += nsamples;
 431       all._sum += sum;
 432       if (all._max < max) {
 433         all._max = max;
 434       }
 435     }
 436   }
 437 
 438   return all;
 439 }
 440 
 441 ZStatUnitPrinter ZStatSampler::printer() const {
 442   return _printer;
 443 }
 444 
 445 //
 446 // Stat counter
 447 //
 448 ZStatCounter::ZStatCounter(const char* group, const char* name, ZStatUnitPrinter printer) :
 449     ZStatIterableValue<ZStatCounter>(group, name, sizeof(ZStatCounterData)),
 450     _sampler(group, name, printer) {}
 451 
 452 ZStatCounterData* ZStatCounter::get() const {
 453   return get_cpu_local<ZStatCounterData>(ZCPU::id());
 454 }
 455 
 456 void ZStatCounter::sample_and_reset() const {
 457   uint64_t counter = 0;
 458 
 459   const uint32_t ncpus = ZCPU::count();
 460   for (uint32_t i = 0; i < ncpus; i++) {
 461     ZStatCounterData* const cpu_data = get_cpu_local<ZStatCounterData>(i);
 462     counter += Atomic::xchg((uint64_t)0, &cpu_data->_counter);
 463   }
 464 
 465   ZStatSample(_sampler, counter);
 466 }
 467 
 468 //
 469 // Stat unsampled counter
 470 //
 471 ZStatUnsampledCounter::ZStatUnsampledCounter(const char* name) :
 472     ZStatIterableValue<ZStatUnsampledCounter>("Unsampled", name, sizeof(ZStatCounterData)) {}
 473 
 474 ZStatCounterData* ZStatUnsampledCounter::get() const {
 475   return get_cpu_local<ZStatCounterData>(ZCPU::id());
 476 }
 477 
 478 ZStatCounterData ZStatUnsampledCounter::collect_and_reset() const {
 479   ZStatCounterData all;
 480 
 481   const uint32_t ncpus = ZCPU::count();
 482   for (uint32_t i = 0; i < ncpus; i++) {
 483     ZStatCounterData* const cpu_data = get_cpu_local<ZStatCounterData>(i);
 484     all._counter += Atomic::xchg((uint64_t)0, &cpu_data->_counter);
 485   }
 486 
 487   return all;
 488 }
 489 
 490 //
 491 // Stat MMU (Minimum Mutator Utilization)
 492 //
 493 ZStatMMUPause::ZStatMMUPause() :
 494     _start(0.0),
 495     _end(0.0) {}
 496 
 497 ZStatMMUPause::ZStatMMUPause(const Ticks& start, const Ticks& end) :
 498     _start(TimeHelper::counter_to_millis(start.value())),
 499     _end(TimeHelper::counter_to_millis(end.value())) {}
 500 
 501 double ZStatMMUPause::end() const {
 502   return _end;
 503 }
 504 




 407 }
 408 
 409 //
 410 // Stat sampler
 411 //
 412 ZStatSampler::ZStatSampler(const char* group, const char* name, ZStatUnitPrinter printer) :
 413     ZStatIterableValue<ZStatSampler>(group, name, sizeof(ZStatSamplerData)),
 414     _printer(printer) {}
 415 
 416 ZStatSamplerData* ZStatSampler::get() const {
 417   return get_cpu_local<ZStatSamplerData>(ZCPU::id());
 418 }
 419 
 420 ZStatSamplerData ZStatSampler::collect_and_reset() const {
 421   ZStatSamplerData all;
 422 
 423   const uint32_t ncpus = ZCPU::count();
 424   for (uint32_t i = 0; i < ncpus; i++) {
 425     ZStatSamplerData* const cpu_data = get_cpu_local<ZStatSamplerData>(i);
 426     if (cpu_data->_nsamples > 0) {
 427       const uint64_t nsamples = Atomic::xchg(&cpu_data->_nsamples, (uint64_t)0);
 428       const uint64_t sum = Atomic::xchg(&cpu_data->_sum, (uint64_t)0);
 429       const uint64_t max = Atomic::xchg(&cpu_data->_max, (uint64_t)0);
 430       all._nsamples += nsamples;
 431       all._sum += sum;
 432       if (all._max < max) {
 433         all._max = max;
 434       }
 435     }
 436   }
 437 
 438   return all;
 439 }
 440 
 441 ZStatUnitPrinter ZStatSampler::printer() const {
 442   return _printer;
 443 }
 444 
 445 //
 446 // Stat counter
 447 //
 448 ZStatCounter::ZStatCounter(const char* group, const char* name, ZStatUnitPrinter printer) :
 449     ZStatIterableValue<ZStatCounter>(group, name, sizeof(ZStatCounterData)),
 450     _sampler(group, name, printer) {}
 451 
 452 ZStatCounterData* ZStatCounter::get() const {
 453   return get_cpu_local<ZStatCounterData>(ZCPU::id());
 454 }
 455 
 456 void ZStatCounter::sample_and_reset() const {
 457   uint64_t counter = 0;
 458 
 459   const uint32_t ncpus = ZCPU::count();
 460   for (uint32_t i = 0; i < ncpus; i++) {
 461     ZStatCounterData* const cpu_data = get_cpu_local<ZStatCounterData>(i);
 462     counter += Atomic::xchg(&cpu_data->_counter, (uint64_t)0);
 463   }
 464 
 465   ZStatSample(_sampler, counter);
 466 }
 467 
 468 //
 469 // Stat unsampled counter
 470 //
 471 ZStatUnsampledCounter::ZStatUnsampledCounter(const char* name) :
 472     ZStatIterableValue<ZStatUnsampledCounter>("Unsampled", name, sizeof(ZStatCounterData)) {}
 473 
 474 ZStatCounterData* ZStatUnsampledCounter::get() const {
 475   return get_cpu_local<ZStatCounterData>(ZCPU::id());
 476 }
 477 
 478 ZStatCounterData ZStatUnsampledCounter::collect_and_reset() const {
 479   ZStatCounterData all;
 480 
 481   const uint32_t ncpus = ZCPU::count();
 482   for (uint32_t i = 0; i < ncpus; i++) {
 483     ZStatCounterData* const cpu_data = get_cpu_local<ZStatCounterData>(i);
 484     all._counter += Atomic::xchg(&cpu_data->_counter, (uint64_t)0);
 485   }
 486 
 487   return all;
 488 }
 489 
 490 //
 491 // Stat MMU (Minimum Mutator Utilization)
 492 //
 493 ZStatMMUPause::ZStatMMUPause() :
 494     _start(0.0),
 495     _end(0.0) {}
 496 
 497 ZStatMMUPause::ZStatMMUPause(const Ticks& start, const Ticks& end) :
 498     _start(TimeHelper::counter_to_millis(start.value())),
 499     _end(TimeHelper::counter_to_millis(end.value())) {}
 500 
 501 double ZStatMMUPause::end() const {
 502   return _end;
 503 }
 504 


< prev index next >