我也在runsubmit.com上發佈了這個問題,這是一個在SE網絡之外的SAS相關問題的網站。爲什麼proc上傳這麼慢?
在工作中有2個我使用的sas服務器。當我通過proc上傳將sas數據集從一個數據庫傳輸到另一個數據集時,速度約爲2.5MB/s。但是,如果我將驅動器映射到一臺服務器上作爲網絡驅動器並複製並粘貼文件,則運行速度會更快,大約爲80MB/s(通過相同的千兆位連接)。
任何人都可以提出什麼可能會導致這種情況,我可以做什麼來解決它或作爲一種解決方法?
另外還有第三臺服務器,我無法在另外兩臺服務器上映射網絡驅動器 - SAS是唯一可用的傳輸文件的方式,所以我需要一個基於SAS的解決方案。儘管從這個版本開始的單個傳輸速度爲2.5MB/s,但我發現可以同時傳輸多個傳輸,每個傳輸速率爲2.5MB/s。
通過文件名和數據步SAS SAS會比使用proc上傳更快嗎?我可能會嘗試下一步,但我不想使用這個 - 我們只有SAS 9.1.3,所以SFTP不可用。
更新 - 更多細節:
- 我連接到產卵,我想它使用「SAS專有加密」(根據我記得在日誌中看到的)。
- 上傳內容爲Windows客戶端 - 第一種情況爲Windows遠程,第二種情況爲Unix客戶端 - > Windows遠程。
- 所討論的SAS數據集被壓縮(即通過SAS,而不是一些外部壓縮工具)。
- 使用proc upload以二進制模式傳輸外部文件(.bz2)時,傳輸速率與此類似。
- 所有服務器具有由企業級控制器(最少8個驅動器在RAID 10)
潛在的解決方案
- 並行PROC UPLOAD處理得非常快的磁盤陣列 - 潛在速度不夠快,但極其重CPU
- PROC COPY - 比PROC UPLOAD快得多,CPU開銷小得多
- SAS FTP - 不安全,未知速度,未知CPU開銷
更新 - 測試結果
- 並行PROC上傳:涉及相當多的設置*和很多的CPU,但效果相當好。
- PROC COPY:每個會話的傳輸速率與proc上傳完全相同,使用的CPU時間也更多。
- FTP:大約20倍快,最小的CPU(100MB /秒比2.5MB/s每個並行proc上傳)。
*我最初嘗試以下操作:
本地會話 - >源服務器上的遠程會話 - >ñ目標服務器上的遠程會話 - >重組目標服務器上的n個
雖然這導致n個同時傳輸,但它們每個都以原始速率的1/n運行,可能是由於源服務器上的CPU瓶頸造成的。爲了得到它與一個單一的傳輸的n倍的帶寬工作,我不得不將其設置爲:
本地會話 - > n個源服務器上的遠程會話 - > 1遠程 會話的每個目標服務器上 - >目標服務器
SAS FTP代碼的重組n個
filename source ftp '\dir1\dir2'
host='servername'
binary dir
user="&username" pass="&password";
let work = %sysfunc(pathname(work));
filename target "&work";
data _null_;
infile source('dataset.sas7bdat') truncover;
input;
file target('dataset.sas7bdat');
put _infile_;
run;
請更新與SAS服務器環境的詳細信息,以及如何連接您的問題,特別是如果你連接到CONNECT產卵或或其他方法。如果使用Spawner,請確定它是否使用加密。 – BellevueBob
已更新的問題 - 其他具體細節會有用嗎? – user667489
您上傳的SAS數據集是否已壓縮?我猜測一切都是Windows,對嗎?當你說你從一臺服務器複製到另一臺服務器時,你的意思是你正在通過服務器A的SAS/CONNECT會話連接到服務器B嗎? – BellevueBob