📄 performance_test_options.cpp
字号:
"%8d = physical connections\n"
"%8d = thread count\n"
"%8d = low water mark\n"
"%8d = high water mark\n"
"%8d = message_size\n"
"%8d = initial queue length\n"
"%8d = consecutive ports\n"
"%8d = calculated checksum\n"
"%8d = perform xdr conversion\n"
"%8d = zero-copy driver\n"
"%8d = free dynamic memory\n"
"%8d = print summary only\n"
"%8d = eager exit\n"
"%8d = UDP\n"
"%8d = send ack\n"
"%8d = THR_DETACHED\n"
"%8d = THR_BOUND\n"
"%8d = THR_NEW_LWP\n"
"%8d = sleep time\n",
this->iterations (),
this->logical_connections (),
this->physical_connections (),
this->thr_count (),
this->low_water_mark (),
this->high_water_mark (),
this->msg_size (),
this->initial_queue_length (),
this->consecutive_ports (),
this->do_checksum () != 0,
this->do_xdr() != 0,
this->do_zero_copy () != 0,
this->do_delete () != 0,
this->do_print_summary () != 0,
this->do_eager_exit () != 0,
this->do_udp () != 0,
this->do_ack () != 0,
(this->t_flags () & THR_DETACHED) != 0,
(this->t_flags () & THR_BOUND) != 0,
(this->t_flags () & THR_NEW_LWP) != 0,
this->sleep_time ()));
}
void
Performance_Test_Options::print_results (void)
{
ACE_Profile_Timer::ACE_Elapsed_Time et;
this->_itimer.elapsed_time (et);
ACE_Profile_Timer::Rusage rusage;
this->_itimer.elapsed_rusage (rusage);
size_t total = this->count ();
double nbytes = total * this->msg_size ();
double cpu_time = et.user_time + et.system_time;
#if 0
mutex_timer.print_total ("ACE_Thread_Mutex overhead:", mutex_counter, 2);
condition_timer.print_total ("ACE_Condition overhead:", condition_counter, 2);
ACE_DEBUG ((LM_INFO,
"%8d (number of ACE_Thread_Mutex operations)\n"
"%8d (number of ACE_Condition operations)",
mutex_counter, condition_counter));
#endif /* NDEBUG */
if (this->do_print_summary ())
{
#if defined (ACE_HAS_PRUSAGE_T)
ACE_DEBUG ((LM_INFO,
"\n%8d PEs\n"
"%8.2f Mbit/sec\n"
"%8d (voluntary context switches)\n"
"%8d (involuntary context switches)\n"
"%8d (total context switches)\n"
"%8d.%d sec (wait-cpu time)\n"
"%8d.%d sec (user lock wait sleep time)\n"
"%8d.%d sec (all other sleep time)\n"
"%8d (major page faults)\n"
"%8d (minor page faults)\n"
"%8d (number of LWPs)\n",
this->thr_count (),
(nbytes / et.real_time) * 8.0 / 1024.0 / 1024.0,
rusage.pr_vctx,
rusage.pr_ictx,
rusage.pr_vctx + rusage.pr_ictx,
rusage.pr_wtime.tv_sec, rusage.pr_wtime.tv_nsec / 1000000,
rusage.pr_ltime.tv_sec, rusage.pr_ltime.tv_nsec / 1000000,
rusage.pr_slptime.tv_sec, rusage.pr_slptime.tv_nsec / 1000000,
rusage.pr_majf,
rusage.pr_minf,
ACE_Thread::getconcurrency ()));
#elif defined (ACE_HAS_GETRUSAGE) && !defined (ACE_WIN32)
ACE_DEBUG ((LM_INFO,
"\n%8d PEs\n"
"%8.2f Mbit/sec\n"
"%8d (voluntary context switches)\n"
"%8d (involuntary context switches)\n"
"%8d (total context switches)\n"
"%8d.%d sec (user time)\n"
"%8d.%d sec (system time)\n"
"%8d (major page faults)\n"
"%8d (minor page faults)\n"
"%8d (number of LWPs)\n",
this->thr_count (),
(nbytes / et.real_time) * 8.0 / 1024.0 / 1024.0,
rusage.ru_nvcsw,
rusage.ru_nivcsw,
rusage.ru_nvcsw + rusage.ru_nivcsw,
rusage.ru_utime.tv_sec, rusage.ru_utime.tv_usec / 1000000,
rusage.ru_stime.tv_sec, rusage.ru_stime.tv_usec / 1000000,
rusage.ru_majflt,
rusage.ru_minflt,
ACE_Thread::getconcurrency ()));
#elif defined (ACE_HAS_GETRUSAGE) && defined (ACE_WIN32)
// Need more stuff for Win32.
ACE_DEBUG ((LM_INFO,
"\n%8d PEs\n"
"%8.2f Mbit/sec\n"
"%8d (number of LWPs)\n",
this->thr_count (),
(nbytes / et.real_time) * 8.0 / 1024.0 / 1024.0,
ACE_Thread::getconcurrency ()));
#endif /* ACE_HAS_PRUSAGE_T */
}
else
{
ACE_DEBUG ((LM_INFO,
"\ntotal work = %d\n"
"(Only interpret the next two statistics for throughput tests)\n"
"%f bytes in %.2f real seconds = %.2f Mbit/sec\n"
"%f bytes in %.2f CPU seconds = %.2f Mbit/sec\n",
total,
nbytes, et.real_time, (nbytes / et.real_time) * 8.0 / 1024.0 / 1024.0,
nbytes, cpu_time, (nbytes / cpu_time) * 8.0 / 1024.0 / 1024.0));
#if defined (ACE_HAS_PRUSAGE_T)
ACE_DEBUG ((LM_INFO,
"%8d = lwpid\n"
"%8d = lwp count\n"
"%8d = minor page faults\n"
"%8d = major page faults\n"
"%8d = input blocks\n"
"%8d = output blocks\n"
"%8d = messages sent\n"
"%8d = messages received\n"
"%8d = signals received\n"
"%8ds, %dms = wait-cpu (latency) time\n"
"%8ds, %dms = user lock wait sleep time\n"
"%8ds, %dms = all other sleep time\n"
"%8d = voluntary context switches\n"
"%8d = involuntary context switches\n"
"%8d = total context switches\n"
"%8d = system calls\n"
"%8d = chars read/written\n"
"%8d = number of LWPs\n"
"---------------------\n"
"real time = %.3f\n"
"user time = %.3f\n"
"system time = %.3f\n"
"---------------------\n",
rusage.pr_lwpid,
rusage.pr_count,
rusage.pr_minf,
rusage.pr_majf,
rusage.pr_inblk,
rusage.pr_oublk,
rusage.pr_msnd,
rusage.pr_mrcv,
rusage.pr_sigs,
rusage.pr_wtime.tv_sec, rusage.pr_wtime.tv_nsec / 1000000,
rusage.pr_ltime.tv_sec, rusage.pr_ltime.tv_nsec / 1000000,
rusage.pr_slptime.tv_sec, rusage.pr_slptime.tv_nsec / 1000000,
rusage.pr_vctx,
rusage.pr_ictx,
rusage.pr_vctx + rusage.pr_ictx,
rusage.pr_sysc,
rusage.pr_ioch,
ACE_Thread::getconcurrency (),
et.real_time, et.user_time, et.system_time));
#elif defined (ACE_HAS_GETRUSAGE) && !defined (ACE_WIN32)
ACE_DEBUG ((LM_INFO,
"%8d = minor page faults\n"
"%8d = major page faults\n"
"%8d = input blocks\n"
"%8d = output blocks\n"
"%8d = messages sent\n"
"%8d = messages received\n"
"%8d = signals received\n"
"%8d = voluntary context switches\n"
"%8d = involuntary context switches\n"
"%8d = total context switches\n"
"%8d = number of LWPs\n"
"---------------------\n"
"real time = %.3f\n"
"user time = %.3f\n"
"system time = %.3f\n"
"---------------------\n",
rusage.ru_minflt,
rusage.ru_majflt,
rusage.ru_inblock,
rusage.ru_oublock,
rusage.ru_msgsnd,
rusage.ru_msgrcv,
rusage.ru_nsignals,
rusage.ru_nvcsw,
rusage.ru_nivcsw,
rusage.ru_nvcsw + rusage.ru_nivcsw,
ACE_Thread::getconcurrency (),
et.real_time, et.user_time, et.system_time));
#elif defined (ACE_HAS_GETRUSAGE) && defined (ACE_WIN32)
// need to write more dump ops for rusage on Win32
ACE_DEBUG ((LM_INFO,
"%8d = number of LWPs\n"
"---------------------\n"
"real time = %.3f\n"
"user time = %.3f\n"
"system time = %.3f\n"
"---------------------\n",
ACE_Thread::getconcurrency (),
et.real_time, et.user_time, et.system_time));
#endif /* ACE_HAS_PRUSAGE_T */
}
if (performance_test_options.do_eager_exit ())
ACE_OS::_exit (0);
}
#endif /* ACE_HAS_THREADS */
#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
#if defined(ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
template class ACE_Atomic_Op<ACE_Thread_Mutex, size_t>;
template class ACE_Atomic_Op_Ex<ACE_Thread_Mutex, size_t>;
#endif /* ACE_MT_SAFE */
#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
#if defined(ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
#pragma instantiate ACE_Atomic_Op<ACE_Thread_Mutex, size_t>
#pragma instantiate ACE_Atomic_Op_Ex<ACE_Thread_Mutex, size_t>
#endif /* ACE_MT_SAFE */
#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -