2013-01-12 39 views
5

Tôi cũng đã đăng câu hỏi này trên runsubmit.com, một trang web bên ngoài mạng SE cho các câu hỏi liên quan đến SAS.Tại sao tải lên quá chậm?

Tại nơi làm việc có 2 máy chủ sas tôi sử dụng. Khi tôi chuyển một bộ dữ liệu sas từ một đến khác thông qua tải lên proc, nó đi vào khoảng 2,5MB/s. Tuy nhiên, nếu tôi ánh xạ ổ đĩa trên một máy chủ như một ổ đĩa mạng và sao chép và dán tập tin trên, nó chạy nhanh hơn nhiều, khoảng 80MB/s (trên cùng một kết nối gigabit).

Ai đó có thể đề xuất điều gì có thể gây ra điều này và những gì tôi có thể làm để sửa chữa hoặc giải pháp thay thế?

Ngoài ra còn có một máy chủ thứ ba mà tôi sử dụng không thể ánh xạ ổ đĩa mạng trên hai SAS kia là phương tiện duy nhất có thể truyền tệp từ đó, vì vậy tôi cần một giải pháp dựa trên SAS. Mặc dù chuyển cá nhân từ lần chạy này với tốc độ 2.5MB/s, tôi đã nhận thấy rằng có thể có một số lần chuyển tất cả sẽ song song, mỗi lần chuyển đổi là 2,5MB/giây.

SAS FTP có thông qua tên tệp và bước dữ liệu nhanh hơn việc sử dụng tải lên proc không? Tôi có thể thử điều đó tiếp theo, nhưng tôi không muốn sử dụng điều này - chúng tôi chỉ có SAS 9.1.3, vì vậy SFTP không có sẵn.

Cập nhật - Thông tin chi tiết:

  • Tôi đang kết nối với một spawner, và tôi nghĩ rằng nó sử dụng 'SAS mã hóa độc quyền' (dựa trên những gì tôi nhớ lại thấy trong các bản ghi).
  • Tải lên là Windows client -> Windows từ xa trong trường hợp đầu tiên và máy khách Unix -> Windows từ xa trong trường hợp thứ hai.
  • Các bộ dữ liệu SAS được đề cập được nén (tức là bởi SAS, không phải một số tiện ích nén bên ngoài).
  • Tốc độ truyền tải tương tự khi sử dụng tải lên proc để truyền tệp bên ngoài (.bz2) ở chế độ nhị phân.
  • Tất cả các máy chủ có mảng đĩa rất nhanh xử lý bởi bộ điều khiển doanh nghiệp cấp (tối thiểu 8 ổ đĩa trong RAID 10)

giải pháp tiềm năng

  • Parallel PROC UPLOAD - có khả năng đủ nhanh, nhưng cực kỳ CPU nặng
  • PROC COPY - nhanh hơn nhiều so UPLOAD PROC, ít hơn nhiều CPU overhead
  • SAS FTP - không an toàn, tốc độ không rõ, chưa biết CPU overhead

Update - kiểm tra kết quả

  • Parallel PROC UPLOAD: bao gồm khá nhiều thiết lập * và rất nhiều CPU, nhưng hoạt động khá tốt.
  • COPY CHÉP: chính xác cùng tốc độ truyền mỗi phiên như tải lên proc và thời gian CPU được sử dụng nhiều hơn.
  • FTP: Giới thiệu nhanh hơn 20 lần, CPU tối thiểu (100MB/s so với 2,5MB/giây cho mỗi lần tải lên song song).

* Tôi bước đầu thử như sau:

phiên địa phương -> phiên từ xa trên máy chủ nguồn -> n phiên từ xa trên máy chủ đích -> tái tổ hợp n mảnh trên máy chủ đích

Mặc dù điều này dẫn đến n chuyển đồng thời, nhưng chúng chạy ở 1/n của tỷ lệ gốc, có thể do một nút cổ chai CPU trên máy chủ nguồn. Để có được nó để làm việc với n lần so với băng thông của một chuyển duy nhất, tôi đã phải thiết lập nó như:

phiên địa phương -> n phiên từ xa trên máy chủ nguồn -> 1 từ xa phiên mỗi trên máy chủ đích - > tái tổ hợp n mảnh trên máy chủ đích đang

SAS FTP

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; 
+0

Vui lòng cập nhật câu hỏi của bạn với các chi tiết về môi trường máy chủ SAS và cách bạn CONNECT, đặc biệt nếu bạn đang kết nối với một CONNECT Spawner hoặc hoặc một số phương pháp khác. Nếu sử dụng Spawner, hãy tìm hiểu xem nó có đang sử dụng mã hóa hay không. – BellevueBob

+0

Câu hỏi được cập nhật - chi tiết cụ thể nào khác sẽ hữu ích? – user667489

+0

Các tập dữ liệu SAS bạn đang tải lên có bị nén không? Và tôi đoán mọi thứ là Windows, đúng không? Và khi bạn nói rằng bạn đang sao chép từ một máy chủ khác, bạn có nghĩa là bạn đang kết nối với máy chủ B với một phiên SAS/CONNECT từ máy chủ A? – BellevueBob

Trả lời

0

FTP, nếu có sẵn từ máy chủ nguồn, nhanh hơn nhiều so với tải lên proc hoặc bản sao proc. Cả hai đều hoạt động trên cơ sở ghi theo bản ghi và có thể bị ràng buộc CPU qua các kết nối mạng nhanh, đặc biệt là cho các bộ dữ liệu rất rộng. Một chuyển giao FTP đơn lẻ sẽ cố gắng sử dụng tất cả băng thông có sẵn, với chi phí CPU không đáng kể.

Điều này giả định rằng máy chủ đích có thể sử dụng tệp đã chuyển đổi chưa sửa đổi - nếu không, thời gian cần thiết để làm cho nó có thể sử dụng có thể phủ nhận tốc độ truyền tải tăng lên của FTP.

5

sự hiểu biết của tôi về PROC uPLOAD là nó được thực hiện tải lên kỷ lục của kỷ lục của tệp cùng với một số chuyển đổi và kiểm tra, điều này hữu ích theo một số cách, nhưng không đặc biệt nhanh. PROC COPY, mặt khác, sẽ vui vẻ sao chép các tập tin mà không được khá cẩn thận để duy trì những thứ như chỉ số và khó khăn; nhưng nó sẽ nhanh hơn nhiều. Bạn chỉ cần định nghĩa một libref cho các tệp của máy chủ của bạn.

Ví dụ: tôi đăng nhập vào máy chủ của mình và chỉ định biệt hiệu 'unix'. Sau đó, tôi xác định một thư viện trên đó: libname uwork server=unix slibref=work;

Sau đó, tôi thực thi mã PROC COPY sau, sử dụng một tệp dữ liệu hàng 1e7 được tạo ngẫu nhiên. Sau đó, tôi cũng RSUBMIT một PROC UPLOAD cho mục đích so sánh.

48 proc copy in=work out=uwork; 
NOTE: Writing HTML Body file: sashtml.htm 
49 select test; 
50 run; 

NOTE: Copying WORK.TEST to UWORK.TEST (memtype=DATA). 
NOTE: There were 10000000 observations read from the data set WORK.TEST. 
NOTE: The data set UWORK.TEST has 10000000 observations and 1 variables. 
NOTE: PROCEDURE COPY used (Total process time): 
     real time   13.07 seconds 
     cpu time   1.93 seconds 


51 rsubmit; 
NOTE: Remote submit to UNIX commencing. 
3 proc upload data=test; 
4 run; 


NOTE: Upload in progress from data=WORK.TEST to out=WORK.TEST 
NOTE: 80000000 bytes were transferred at 1445217 bytes/second. 
NOTE: The data set WORK.TEST has 10000000 observations and 1 variables. 
NOTE: Uploaded 10000000 observations of 1 variables. 
NOTE: The data set WORK.TEST has 10000000 observations and 1 variables. 
NOTE: PROCEDURE UPLOAD used: 
     real time   55.46 seconds 
     cpu time   42.09 seconds 


NOTE: Remote submit to UNIX complete. 

PROC COPY vẫn không hoàn toàn nhanh bằng cách sao chép hệ điều hành, nhưng tốc độ này gần hơn về tốc độ. PROC UPLOAD thực sự khá chậm hơn một chút so với một bước dữ liệu thông thường, bởi vì nó đang thực hiện một số kiểm tra; thực tế, ở đây bước dữ liệu có thể so sánh với PROC COPY do sự đơn giản của tập dữ liệu (và có lẽ thực tế là tôi có kích thước khối 64k, nghĩa là bước dữ liệu đang sử dụng kích thước khối 16k của máy chủ trong khi PROC COPY có lẽ không).

52 data uwork.test; 
53 set test; 
54 run; 

NOTE: There were 10000000 observations read from the data set WORK.TEST. 
NOTE: The data set UWORK.TEST has 10000000 observations and 1 variables. 
NOTE: DATA statement used (Total process time): 
     real time   12.60 seconds 
     cpu time   1.66 seconds 

Nói chung trong những tình huống 'thực thế giới, PROC COPY là nhanh hơn một bước dữ liệu, nhưng cả hai đều nhanh hơn PROC UPLOAD - trừ khi bạn cần phải sử dụng tải lên proc vì sự phức tạp trong tình hình của bạn (Tôi có bao giờ đã thấy lý do, nhưng tôi biết điều đó là có thể). Tôi nghĩ rằng PROC UPLOAD là cần thiết hơn trong các phiên bản cũ của SAS nhưng phần lớn không cần thiết, nhưng kinh nghiệm của tôi khá hạn chế về thiết lập phần cứng, điều này có thể không áp dụng cho tình huống của bạn.

+1

Chỉ cần làm rõ thêm một chút - nhìn vào sự khác biệt giữa thời gian thực và thời gian CPU cho mỗi; đó là thời gian truy cập đĩa, chủ yếu. Trong mỗi trường hợp, nó là 11-14 giây. PROC UPLOAD quá chậm vì nó làm tất cả những thứ khác đòi hỏi sự chú ý của CPU, do đó 42 giây của CPU thời gian so với ít hơn 2 cho PROC COPY và bước dữ liệu. – Joe

+0

Tôi đã tự hỏi về lượng thời gian CPU được sử dụng bởi tải lên proc, nhưng nó không xảy ra nghiêm trọng với tôi rằng đây có thể là một nút cổ chai. Cảm ơn bạn đã cho tôi biết về bản sao proc - Tôi sẽ kiểm tra điều đó tiếp theo. Tôi cho rằng bản sao hệ điều hành sẽ tối đa kết nối bạn đang sử dụng - để so sánh, kết nối bạn đã sử dụng để thực hiện kiểm tra nhanh như thế nào so với tốc độ truyền bạn nhận được với bản sao? – user667489

+0

Tôi nghĩ rằng bản sao hệ điều hành vẫn còn nhanh hơn một chút so với các bài kiểm tra trước đó, nhưng tôi không có quyền truy cập vào máy tính công việc của mình để kiểm tra trực tiếp tại thời điểm này. Trong trường hợp của tôi, tôi đang trên một kết nối gigabit với một NAS trên cùng một switch, vì vậy nó về mặt lý thuyết rất nhanh (có thể tương tự như của bạn, mặc dù tôi nghi ngờ tôi sẽ nhận được 80MB/s). Hệ điều hành sao chép sẽ không nhất thiết phải tối đa kết nối, nhớ bạn, trừ khi kết nối chậm hơn tốc độ truyền HDD của bạn; cho một ổ cứng vật lý, thường là nhiều nhất là 125MB/s hoặc hơn (và bạn mất một số không có vấn đề gì, vì vậy 80MB/s có lẽ là một giới hạn thực tế hợp lý). – Joe

Các vấn đề liên quan