我在使用BCCD(可引導集羣CD)作爲集羣設置的24臺計算機上實驗我的分佈式集羣算法(使用MPI實現),該集羣可以在http://bccd.net/下載。如何測量我的MPI程序傳輸的數據量?
我已經寫了一個批處理程序來運行我的實驗,這個實驗包括運行我的算法幾次,改變了節點的數量和輸入數據的大小。
我想知道每次運行我的算法時MPI通信中使用的數據量,以便在更改上述參數時可以看到數據量如何變化。我想用批處理程序自動完成所有這些。
有人告訴我使用tcpdump,但是我發現這種方法有些困難。
首先,我不知道如何在每次運行我的算法之前,在我的批處理程序(使用命令系統進行調用的C++編寫)中調用tcpdump,因爲tcpdump需要另一個終端與我的應用程序。由於網絡使用交換機,因此我無法在另一臺計算機上運行tcpdump。所以我需要在主節點上運行它。
其次,在我的實驗進行中,我看到了tcpdump的流量,我無法弄清楚MPI使用的端口是什麼。它似乎使用許多端口。我想知道用於過濾軟件包。
第三,我嘗試捕獲整個軟件包並使用tcpdump將其保存到文件中,幾秒鐘後文件爲3.5MB。但是我的整個實驗需要2天。所以如果我遵循這個方法,最終的日誌文件將會很大。
理想的方法是隻捕獲包的頭部中的大小字段,並將其總和,以獲得傳輸的總數據量。以這種方式,日誌文件將比我捕獲整個軟件包時小得多。但我不知道該怎麼做。
另一個限制是我沒有訪問計算機光盤。所以我只有RAM和我的4GB USB閃存驅動器。所以我不能擁有巨大的日誌文件。
我已經想過使用一些MPI跟蹤或剖析工具,如http://www.open-mpi.org/faq/?category=perftools中提到的那些工具。至今我只測試過Sun性能分析器。問題是,我猜這些工具很難在BCCD上安裝,甚至是不可能的。除此之外,這個工具會讓我的實驗花費更長的時間來結束,它會增加開銷。但是如果有人熟悉BCCD並認爲使用這些工具是一個不錯的選擇,那麼請讓我知道。
希望有人有解決方案。
感謝您的回覆。我會檢查這些可能性。 – cesarsalgado 2011-02-06 14:01:48