Hiệu suất Linux RAID-0 không tăng lên hơn 1 GB / giây


8

Tôi gặp sự cố khi lấy thông lượng tối đa ra khỏi thiết lập của mình. Phần cứng như sau:

  • Bộ xử lý lõi kép AMD Opteron (tm) 2376
  • RAM 16 GB DDR2 ECC
  • bộ điều khiển RAID Adaptec 52245 kép
  • 48 Ổ đĩa SATA 1 TB được thiết lập thành 2 mảng RAID-6 (sọc 256KB) + phụ tùng.

Phần mềm :

  • Hạt nhân vanilla 2.6.32.25 đơn giản, được biên dịch cho AMD-64, được tối ưu hóa cho NUMA; Vùng người dùng Debian Lenny.
  • điểm chuẩn chạy: Disktest, bonnie ++, dd, v.v ... Tất cả đều cho kết quả như nhau. Không có sự khác biệt ở đây.
  • lập lịch io sử dụng: noop. Vâng, không có mẹo ở đây.

Cho đến bây giờ, về cơ bản tôi đã giả định rằng việc phân loại (RAID 0) một số thiết bị vật lý sẽ tăng hiệu năng một cách tuyến tính. Tuy nhiên đây không phải là trường hợp ở đây:

  • mỗi mảng RAID đạt được khoảng 780 MB / s ghi, duy trì và đọc 1 GB / s, duy trì.
  • ghi vào cả hai mảng RAID đồng thời với hai quy trình khác nhau sẽ cho 750 + 750 MB / s và đọc từ cả hai cho 1 + 1 GB / s.
  • tuy nhiên khi tôi kết hợp cả hai mảng lại với nhau, sử dụng mdadm hoặc lvm, hiệu suất đạt khoảng 850 MB / s ghi và đọc 1,4 GB / s. ít hơn 30% so với dự kiến!
  • chạy hai tiến trình đọc hoặc ghi song song với các mảng sọc không làm tăng số liệu, trên thực tế, nó làm giảm hiệu suất hơn nữa.

Vậy chuyện gì đang xảy ra ở đây? Về cơ bản tôi đã loại trừ sự tranh chấp giữa bus hoặc bộ nhớ, bởi vì khi tôi chạy dd trên cả hai ổ đĩa, tốc độ ghi tổng hợp thực sự đạt tới 1,5 GB / giây và tốc độ đọc lên tới 2 GB / s.

Vì vậy, nó không phải là xe buýt PCIe. Tôi cho rằng đó không phải là RAM. Đây không phải là hệ thống tập tin, bởi vì tôi nhận được chính xác số điểm chuẩn so với thiết bị thô hoặc sử dụng XFS. Và tôi cũng nhận được chính xác hiệu suất tương tự bằng cách sử dụng phân chia LVM và phân chia md.

Chuyện gì vậy? Điều gì ngăn cản một quá trình đi lên đến thông lượng tối đa có thể? Linux có bị lỗi không? Những bài kiểm tra khác tôi có thể chạy?


Tôi không hiểu tại sao bạn lại sử dụng RAID 6 + 0 tại đây, tại sao bạn lại làm vậy khi bạn chỉ có thể sử dụng RAID 1 + 0 thông thường?
Chopper3

Điều đó sẽ không giải quyết được vấn đề. md / lvm chia sẻ hành vi tương tự khi tước mảng RAID-10. Tôi đang tìm kiếm sự thiếu hiệu suất chung, không phải là một thiết lập cụ thể. Đây là một hệ thống thử nghiệm, không phải là một máy sản xuất.
wazoox

5
cuộc đột kích của bạn 0 sọc có phù hợp với cuộc đột kích 6 sọc của bạn không? Nói chung RAID xếp lớp là một khu vực rất bấp bênh và sẽ không ổn khi giả sử một RAID nhất định sẽ hoạt động như thể đó là một ổ cứng duy nhất có cùng tốc độ.
JamesRyan

1
Bạn đã thử định cấu hình thẻ Adaptec là JBOD và chỉ thực hiện RAID-10 trong phần mềm (md) chưa? Tôi sẽ không ngạc nhiên nếu tính năng RAID của bộ điều khiển được các trình điều khiển xử lý một phần, phủ nhận mọi lợi thế về hiệu suất khi bạn xen kẽ hai RAID khác nhau. md, mặt khác, sẽ cố gắng tối ưu hóa quyền truy cập vào từng ổ đĩa một cách độc lập, bỏ qua thời gian lý thuyết (tất nhiên nếu không có nút cổ chai nào khác)
Javier

1
Điều đó không giống như một cuộc điều tra dễ dàng. Thoạt nhìn tôi sẽ ủng hộ khả năng stripingchương trình không thể thực hiện thông qua thuật toán đa luồng. Vì bạn đang sử dụng RAID mềm từ đó mdadm, tôi khuyên bạn nên xem qua nguồn.
e2-e4

Câu trả lời:


3

Bạn đã thử chạy latencytop trong khi làm điểm chuẩn chưa? có thể hữu ích để xem linux syscall là thủ phạm (nếu có).


2

Đó là thẻ x8 PICe Gen 1 theo như tôi có thể nói - tốc độ dữ liệu tối đa tuyệt đối mà nó có thể hỗ trợ là 2GB / giây với giả định không có chi phí nào. Bản thân Adaptec chỉ tuyên bố rằng các thẻ có thể duy trì tối đa 1,2Gbyte / giây và bạn đang vượt quá mức đó.

Được trang bị RAID lõi kép hàng đầu trong ngành về chip (RoC), kết nối x8 PCI Express và bộ nhớ cache 512MB DDR, chúng cung cấp hơn 250.000 IO mỗi giây và 1,2GB / giây.

Tôi đoán là vì bạn có thể vượt quá đáng kể hiệu năng được yêu cầu của họ với hai bộ RAID 0 hoạt động độc lập với tải bổ sung, nhỏ và có thể là vậy, việc phân loại thêm vào đó đang làm quá tải CPU RAID, hoặc có thể là hệ thống con RAM trên bộ điều khiển, ở mức tải GByte / giây.


1
Tôi hoàn toàn không hiểu ... Theo OP, có vẻ như anh ta có 2 bộ điều khiển RAID, mỗi bộ xử lý một mảng RAID6. Sau đó, RAID 0 là hai mảng RAID 6 trong phần mềm. sử dụng Linux 'được xây dựng trong kernel kernel. Trong trường hợp này, mỗi bộ điều khiển chỉ nên xử lý một nửa tải, vì vậy mỗi bộ điều khiển chỉ cần thực hiện ghi 780MB / s và đọc 1GB / s. Các bộ điều khiển đã chứng minh rằng họ có thể làm điều này (trước khi RAID phần mềm được thêm vào). Vì vậy, bộ điều khiển bus / RAID PCI-Express không phải là yếu tố hạn chế?
Jesper M

Điểm công bằng - đã bỏ lỡ nhận xét bộ điều khiển kép (và phần lvm \ md nhấn mạnh điều đó). Quan điểm của ông về việc nó không phải là xe buýt \ Giới hạn IO được chứng minh khá nhiều sau đó.
Helvick
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.