Kích thước bộ đệm cho lệnh sort là gì?


7

Tôi có một máy có RAM 2 TB và tôi đang chạy một lệnh sort trên tệp có kích thước 150G trong đó tôi đã chỉ định kích thước bộ đệm là 1000G, sau khi thực hiện tìm kiếm trên google, tôi đã nhận được thông tin này " càng nhiều kích thước bộ đệm, hiệu suất càng tốt ". Đây là lệnh mà tôi đã chạy

sort -rk2 --buffer-size=1000G master_matrix_unsorted.csv > master_matrix_sorted.csv

Nhưng điều này đang mất rất nhiều thời gian và tôi không có manh mối về tiến trình của nhiệm vụ.

Bất kỳ ý tưởng về những gì nên có kích thước bộ đệm tốt nhất cho hoạt động này? Tôi đang lên kế hoạch để chạy lại nhiệm vụ này với kích thước bộ đệm mới.


Bạn đang tìm cách sắp xếp theo trường 2 hoặc sắp xếp theo tất cả các trường bắt đầu 2?
iruvar

@ 1_CR Tôi đang tìm cách sắp xếp trên trường 2
Sambit Tripathy

@polym RAM khả dụng là 2 TB và kích thước tệp là 150G, vì vậy quyết định sử dụng 50% tổng số, hy vọng điều này sẽ đủ tốt. Nó có 32 CPU @ 2.6 Ghz.
Sambit Tripathy

@ 1_CR Chỉ cần nhận ra rằng lệnh của tôi sắp xếp toàn bộ nội dung bắt đầu từ vị trí 2 và đó là lý do tại sao nó chậm hơn. Tôi đã giảm kích thước bộ đệm xuống 200G và thử nó.
Sambit Tripathy

bạn cũng có thể muốn chơi xung quanh với --paralleltùy chọn xem số lượng bộ xử lý theo ý của bạn
iruvar

Câu trả lời:


4

Bạn không chỉ định HĐH và triển khai sắp xếp; Tôi giả sử bạn có nghĩa là sắp xếp GNU. Bạn cũng không nói "bao nhiêu thời gian" là bao lâu, hoặc bạn mong đợi nó sẽ kéo dài bao lâu. Quan trọng nhất, bạn không đề cập đến khả năng hệ thống con I / O, đây sẽ là yếu tố chi phối.

Một ổ đĩa SATA thông thường cung cấp ~ 150 MB / s. Với tốc độ đó, tệp 150 GB của bạn sẽ mất 1000 giây chỉ để đọc, khoảng 15 phút. Hãy thử $ time cat filename >/dev/nullxem. Nếu ~ 15 phút (hoặc bất cứ time catchương trình nào) đều ổn, bạn có thể có thể sắp xếp (1) hoạt động trong khoảng 3 lần thời gian, vì đầu ra cũng phải được viết.

Đặt cược tốt nhất của bạn cho việc tăng tốc dường như là - vô cùng, bởi vì dữ liệu của bạn phù hợp với bộ nhớ và bạn có bộ xử lý dự phòng. Theo trang thông tin, kích thước -buffer sẽ không thành vấn đề, bởi vì

... tùy chọn này chỉ ảnh hưởng đến kích thước bộ đệm ban đầu. Bộ đệm phát triển vượt quá SIZE nếu `sort 'gặp các dòng đầu vào lớn hơn SIZE.

trong khi đó một tìm kiếm nhanh chỉ ra GNU sử dụng sắp xếp hợp nhất , có thể tuân theo sự song song.

Nếu bạn thực sự muốn biết cách sắp xếp GNU xác định kích thước bộ đệm và thuật toán nào nó sử dụng để sắp xếp song song, mã nguồn coreutils và tài liệu đi kèm là có sẵn.

Nhưng nếu tôi là bạn, tôi sẽ không làm phiền. Dù bạn đang làm gì master_matrix_unsorted.csv, sắp xếp (1) chắc chắn không phụ thuộc vào nhiệm vụ.

Đầu tiên, một ngày, một tệp CSV sẽ khiến bạn vấp ngã vì cú pháp CSV vượt xa ken sắp xếp. Thứ hai, đó là cách chậm nhất có thể, bởi vì sort (1) buộc phải sắp xếp toàn bộ các hàng (có độ dài không xác định), không chỉ cột thứ hai. Thứ ba, khi bạn hoàn thành, bạn sẽ có gì? Một tệp CSV được sắp xếp . Điều đó thực sự tốt hơn? Tại sao thứ tự quan trọng rất nhiều?

Sắp xếp âm thanh giống như một bước trên đường tới mục tiêu có thể bao gồm một số loại tính toán trên dữ liệu, tính toán này sẽ yêu cầu các số ở định dạng nhị phân. Nếu đó là trường hợp, bạn cũng có thể đưa tệp CSV thành định dạng nhị phân dễ tính toán hơn, dễ tính hơn trước tiên, ví dụ, DBMS. Bạn có thể thấy rằng việc sắp xếp nó hóa ra không cần thiết cho mục tiêu cuối cùng.


1
Điều đó không đúng về kích thước bộ đệm - nó sẽ chỉ phát triển trong một dòng dài, đó là nó. Không cho một tập tin lớn. Tăng nó sẽ giúp ồ ạt bằng cách tránh sắp xếp trên đĩa.
Ariel

0

Làm thế nào kích thước bộ đệm của # sort được tính toán được đề cập ở đây. Điều này có thể cho một số ý tưởng cho bạn. Không chắc chắn nếu nó sẽ giải quyết vấn đề của bạn. Nhưng đáng đọc. Điều này được đề cập đến việc giữ mys mys db, nó cũng có thể được áp dụng kịch bản tương tự như của bạn.

Tính toán kích thước bộ đệm SORT

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.