Tôi đang cố gắng tối ưu hóa thiết lập lưu trữ trên một số phần cứng của Sun với Linux. Bất kỳ suy nghĩ sẽ được đánh giá rất cao.
Chúng tôi có các phần cứng sau:
- Phiến mặt trời X6270
- Bộ điều khiển 2 * LSISAS1068E
- 2 * Sun J4400 JBOD với 1 đĩa TB (24 đĩa cho mỗi JBOD)
- Lõi Fedora 12
- 2.6.33 phát hành kernel từ FC13 (cũng đã thử với kernel 2.6.31 mới nhất từ FC12, kết quả tương tự)
Đây là biểu dữ liệu cho phần cứng SAS:
http://www.sun.com/st Storage / st Storage_networking / hba / sas / PCIe.pdf
Đó là sử dụng PCI Express 1.0a, 8 làn. Với băng thông 250 MB / giây trên mỗi làn, chúng ta sẽ có thể thực hiện 2000 MB / giây trên mỗi bộ điều khiển SAS.
Mỗi bộ điều khiển có thể thực hiện 3 Gb / giây trên mỗi cổng và có hai PHY 4 cổng. Chúng tôi kết nối cả PHY từ bộ điều khiển với JBOD. Vì vậy, giữa JBOD và bộ điều khiển, chúng ta có 2 PHY * 4 cổng SAS * 3 Gb / giây = 24 Gb / giây băng thông, nhiều hơn băng thông PCI Express.
Với bộ nhớ đệm ghi được kích hoạt và khi thực hiện ghi lớn, mỗi đĩa có thể duy trì khoảng 80 MB / giây (gần khi bắt đầu đĩa). Với 24 đĩa, điều đó có nghĩa là chúng tôi sẽ có thể thực hiện 1920 MB / giây mỗi JBOD.
đa đường { rr_min_io 100 uid 0 path_grouping_policy multibus hướng dẫn dự phòng path_selector "vòng tròn 0" ưu tiên rr_ weight bí danh somealias hàng đợi no_path_retry chế độ 0644 gid 0 một cách nào đó }
Tôi đã thử các giá trị 50, 100, 1000 cho rr_min_io, nhưng dường như nó không tạo ra nhiều khác biệt.
Cùng với rr_min_io khác nhau, tôi đã cố gắng thêm một số độ trễ giữa việc bắt đầu dd để ngăn tất cả chúng viết trên cùng một PHY cùng một lúc, nhưng điều này không tạo ra bất kỳ sự khác biệt nào, vì vậy tôi nghĩ rằng I / O đang được trải đều.
Theo / Proc / ngắt, bộ điều khiển SAS đang sử dụng sơ đồ ngắt "IR-IO-APIC-fasteoi". Vì một số lý do, chỉ có lõi số 0 trong máy đang xử lý các ngắt này. Tôi có thể cải thiện hiệu suất một chút bằng cách chỉ định một lõi riêng để xử lý các ngắt cho mỗi bộ điều khiển SAS:
tiếng vang 2> / Proc / irq / 24 / smp_affinity tiếng vang 4> / Proc / irq / 26 / smp_affinity
Việc sử dụng dd để ghi vào đĩa sẽ tạo ra "Các ngắt cuộc gọi chức năng" (không biết đây là những gì), được xử lý bởi lõi số 4, vì vậy tôi cũng giữ các quy trình khác khỏi lõi này.
Tôi chạy 48 dd (một cho mỗi đĩa), gán chúng cho các lõi không xử lý các ngắt như vậy:
tasket -c somecore dd if = / dev / zero of = / dev / mapper / mpathx oflag = direct bs = 128M
oflag = direct ngăn bất kỳ loại bộ đệm bộ đệm nào tham gia.
Không có lõi của tôi dường như tối đa. Các lõi xử lý các ngắt hầu hết là không hoạt động và tất cả các lõi khác đang chờ trên I / O như người ta mong đợi.
Cpu0: 0,0% chúng tôi, 1,0% sy, 0,0% ni, 91,2% id, 7,5% wa, 0,0% hi, 0,2% si, 0,0% st Cpu1: 0,0% chúng tôi, 0,8% sy, 0,0% ni, 93,0% id, 0,2% wa, 0,0% hi, 6,0% si, 0,0% st Cpu2: 0,0% chúng tôi, 0,6% sy, 0,0% ni, 94,4% id, 0,1% wa, 0,0% hi, 4,8% si, 0,0% st Cpu3: 0,0% chúng tôi, 7,5% sy, 0,0% ni, 36,3% id, 56,1% wa, 0,0% hi, 0,0% si, 0,0% st Cpu4: 0,0% chúng tôi, 1,3% sy, 0,0% ni, 85,7% id, 4,9% wa, 0,0% hi, 8,1% si, 0,0% st Cpu5: 0,1% chúng tôi, 5,5% sy, 0,0% ni, 36,2% id, 58,3% wa, 0,0% hi, 0,0% si, 0,0% st Cpu6: 0,0% chúng tôi, 5,0% sy, 0,0% ni, 36,3% id, 58,7% wa, 0,0% hi, 0,0% si, 0,0% st Cpu7: 0,0% chúng tôi, 5,1% sy, 0,0% ni, 36,3% id, 58,5% wa, 0,0% hi, 0,0% si, 0,0% st Cpu8: 0,1% chúng tôi, 8,3% sy, 0,0% ni, 27,2% id, 64,4% wa, 0,0% hi, 0,0% si, 0,0% st Cpu9: 0,1% chúng tôi, 7,9% sy, 0,0% ni, 36,2% id, 55,8% wa, 0,0% hi, 0,0% si, 0,0% st Cpu10: 0,0% chúng tôi, 7,8% sy, 0,0% ni, 36,2% id, 56,0% wa, 0,0% hi, 0,0% si, 0,0% st Cpu11: 0,0% chúng tôi, 7,3% sy, 0,0% ni, 36,3% id, 56,4% wa, 0,0% hi, 0,0% si, 0,0% st Cpu12: 0,0% chúng tôi, 5,6% sy, 0,0% ni, 33,1% id, 61,2% wa, 0,0% hi, 0,0% si, 0,0% st Cpu13: 0,1% chúng tôi, 5,3% sy, 0,0% ni, 36,1% id, 58,5% wa, 0,0% hi, 0,0% si, 0,0% st Cpu14: 0,0% chúng tôi, 4,9% sy, 0,0% ni, 36,4% id, 58,7% wa, 0,0% hi, 0,0% si, 0,0% st Cpu15: 0,1% chúng tôi, 5,4% sy, 0,0% ni, 36,5% id, 58,1% wa, 0,0% hi, 0,0% si, 0,0% st
Với tất cả điều này, thông lượng được báo cáo bằng cách chạy "dstat 10" nằm trong khoảng 2200-2300 MB / giây.
Với phép toán ở trên, tôi sẽ mong đợi một cái gì đó trong phạm vi 2 * 1920 ~ = 3600+ MB / giây.
Có ai có ý tưởng về việc băng thông bị thiếu của tôi đã đi đâu không?
Cảm ơn!