“模擬退火演算法的並行化”之“工欲善其事,必先利其器”
阿新 • • 發佈:2019-02-16
孫子曰:“夫未戰而廟算勝者,得算多也,未戰而廟算不勝者,得算少也。多算勝,少算不勝,而況於無算乎!”,孫子又曰:“知己知彼,百戰不殆;不知彼而知己,一勝一負;不知彼,不知己,每戰必殆。”
我們工作時使用的平臺是Linux/GNU系統,公司有個專門給我們軟體組使用的伺服器,名字叫做Blade,看來應該是個刀鋒伺服器啦,大家可以腦補一下刀鋒伺服器陣列的畫面。這個伺服器不賴,用top,然後按1,可以看到她如下:
看官可以看到她有十二個核,500+GB記憶體。使用
% cat /proc/cpuinfo | less
...
model name : Intel(R) Xeon(R) CPU E5-2643 v2 @ 3.50GHz
cpu MHz : 3500.230
cache_size : 25600 KB
cache_alignment : 64
...
可以看到這臺伺服器CPU的具體引數。效能不錯,但是作為多執行緒測試平臺,不行!
為什麼不行?
且聽我慢慢道來。當時大家發現這個平臺上面測得的時間不是穩定的,但主管這個專案的人並不知道問題出在了哪裡,而且一直使用這個平臺進行測試,所以他的測試資料也只具有參考價值了。正巧我們組又搭建了兩個伺服器TM1和TM2,顧名思義,Timing Machine,主要用於測試時間效能的伺服器啦,但這個系統不如Blade,top資料如下:
她只有4個核,記憶體也只有30GB左右,使用
$ cat /proc/cpuinfo | less
...
model name : Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz
cpu MHz : 4000.112
cache size : 8192 KB
cache_alignment : 64
...
快取沒有Blade大,但是主頻稍高。