2012-11-24 25 views
2

我們致力於根據經驗測量某些算法的運行時間(以檢查它們的漸近行爲)。我試圖提出一套規則來在實驗前「清理」我們的目標計算機。這在Agner Fog的級別上並不是真正的性能,但我仍想從儘可能乾淨的機器開始(並儘可能保持不變的開銷)。我至今:如何爲受控實驗分析算法設置計算機?

  • 禁用所有的電源管理
  • 禁用屏幕服務器(?也許禁用X共)
  • 禁用網絡
  • 在單用戶模式引導[肯尼思Hoste先生]
  • 運行實驗不止一次(以平息偶然事件)
  • 配置爲以最大頻率運行的頻率縮放[binarym]

很明顯,重複實驗幾次會給我一些統計的力量,但我仍然希望儘可能使用乾淨的機器來做到這一點。

在程序分析期間,人們還知道其他什麼方法讓機器保持不變?這是一臺Linux機器,如果「規則」是Linux專用的,那就沒關係。

+0

如果是臺式機我會禁用藍牙,聲音等驅動程序...(即使可能的話,斷開那些硬件)。如果你不打算獲得GPU測試支持,那麼也是視頻卡。另外:http://linuxpoison.blogspot.cz/2009/06/how-to-disable-loading-of-unnecessary.html – HRgiger

回答

1

拉網線,所以您的系統不會花時間在網絡流量通過。

在單用戶模式下運行也有幫助,因爲然後運行的服務會減少,這可能會中斷您的測量。

實驗運行時遠離系統,你做的任何事情(登錄,ssh進入機器,'cat'文件,運行'ls'等)都會影響測量結果。

但是,要意識到沒有穩定測量這樣的事情,唯一確定的方法就是多次運行實驗,並使用適當的統計方法來報告性能。當您要比較實驗之間的性能時,這變得尤爲重要。

1

我不知道它是否是您提到的「電源管理」主題的一部分,但有些CPU實現了頻率調整。確保它已配置爲以最高頻率運行。

[email protected]:/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 
[email protected]:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_cur_freq 
800000 
[email protected]:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_governor 
ondemand 
[email protected]:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_available_governors 
conservative ondemand userspace powersave performance 
[email protected]:/sys/devices/system/cpu/cpu0/cpufreq# echo performance > scaling_governor 
[email protected]:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_governor scaling_cur_freq 
performance 
1600000 
[email protected]:/sys/devices/system/cpu/cpu0/cpufreq# cd ../../cpu1/cpufreq 
[email protected]:/sys/devices/system/cpu/cpu1/cpufreq# cat scaling_governor scaling_cur_freq 
performance 
1600000