如何为受控实验分析算法设置计算机?

时间:2012-11-24 11:54:05

标签: linux performance profiling

我们致力于根据经验测量某些算法的运行时间(以检查它们的渐近行为)。我试图在实验之前提出一套规则来“清理”我们的目标计算机。这不是Agner Fog级别的真正性能,但我仍然希望从尽可能干净的机器开始(并尽可能多地保持它的开销)。我到目前为止:

  • 禁用所有电源管理
  • 禁用屏幕服务器(可能完全禁用X?)
  • 禁用网络
  • 以单用户模式启动[Kenneth Hoste]
  • 多次运行实验(以消除偶然事件)
  • 配置为以最大频率[binarym]
  • 运行的频率调整

显然,重复实验几次会给我一些统计能力,但我仍然希望尽可能在干净的机器上做到这一点。

人们知道在程序分析期间保持机器不变的其他技巧是什么?这是一台Linux机器,如果“规则”是特定于Linux的,则可以。

2 个答案:

答案 0 :(得分:1)

拔下网线,这样您的系统就不会花时间在路过的网络流量上。

在单用户模式下运行也会有所帮助,因为运行的服务会减少,这可能会破坏您的测量。

在实验运行期间远离系统,您所做的任何事情(登录,ssh进入机器,'cat'文件,运行'ls'等)都会影响测量。

但是,要意识到没有稳定测量这样的东西,唯一可以确定的方法是多次运行实验,并使用适当的统计方法来报告性能。当您要比较实验之间的性能时,这一点变得尤为重要。

答案 1 :(得分:1)

我不知道它是否是电源管理的一部分"你提到的主题,但有些CPU实现了频率调整。确保将其配置为以最大频率运行。

root@chupa-ThinkPad-Edge:/sys/devices/system/cpu/cpu0/cpufreq# ls
affected_cpus  cpuinfo_cur_freq  cpuinfo_transition_latency     scaling_available_governors  scaling_governor  scaling_setspeed
bios_limit     cpuinfo_max_freq  related_cpus                   scaling_cur_freq             scaling_max_freq  stats
cpb            cpuinfo_min_freq  scaling_available_frequencies  scaling_driver               scaling_min_freq
root@chupa-ThinkPad-Edge:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_cur_freq 
800000
root@chupa-ThinkPad-Edge:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_governor 
ondemand
root@chupa-ThinkPad-Edge:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_available_governors 
conservative ondemand userspace powersave performance 
root@chupa-ThinkPad-Edge:/sys/devices/system/cpu/cpu0/cpufreq# echo performance > scaling_governor 
root@chupa-ThinkPad-Edge:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_governor scaling_cur_freq 
performance
1600000
root@chupa-ThinkPad-Edge:/sys/devices/system/cpu/cpu0/cpufreq# cd ../../cpu1/cpufreq
root@chupa-ThinkPad-Edge:/sys/devices/system/cpu/cpu1/cpufreq# cat scaling_governor scaling_cur_freq 
performance
1600000