Mối quan hệ giữa IOPS đĩa và sar tps


13

Tôi đang cố gắng ước tính các yêu cầu IOPS của ứng dụng của mình đang chạy trên CentOS 6.2 32 bit. Tôi bắt đầu thực hiện một số phép đo trên một máy có đĩa SATA và tôi khá bối rối về sự khác biệt giữa IOPS và tps được đo bằng sar.

Theo đĩa SATA wikipedia nên thực hiện 75-100 IOPS. tiện ích ioping dường như xác nhận điều này để kiểm tra truy cập ngẫu nhiên:

# ./ioping -R /dev/sda
--- /dev/sda (device 931.0 Gb) ioping statistics ---
279 requests completed in 3.0 s, 92 iops, 371.3 kb/s
min/avg/max/mdev = 2.7 ms / 10.8 ms / 130.8 ms / 7.9 ms

Nhưng giá trị tps được tạo bởi sar cao hơn nhiều (/ dev / sda):

# iostat 1
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
       0.17    0.00    2.02   14.86    0.00   82.96

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda             559.00         0.00    142600.00          0     142600
dm-0          18433.00         0.00    147464.00          0     147464
dm-1              0.00         0.00         0.00          0          0
dm-2              0.00         0.00         0.00          0          0

Không thực sự bận tâm nếu tải này là tuần tự (dd với các kích thước khối khác nhau) hoặc truy cập ngẫu nhiên (ioping), giá trị vẫn như nhau. Tôi nghĩ rằng tps thực sự là IOPS và tôi sẽ hy vọng nó đi xuống với khối lượng lớn hơn được chuyển.

Vì vậy, chính xác giá trị tps có nghĩa là gì? Và nó liên quan đến IOPS như thế nào?


2
Tôi tin rằng bạn đang thấy IOPS cao hơn trong giá trị TPS do bộ đệm đĩa.
ceejayoz

1
Ok, tôi đã thử một tệp 10 GB thông qua dd với khối 256kB để thực sự lấp đầy bộ đệm và sau ~ 90 giây tps giảm xuống ~ 200, vì vậy có lẽ bạn đã đúng. Nhưng 80 và 200 vẫn là một sự khác biệt ... Có thể đọc và viết IOPS khác nhau không? Và có cách nào để tìm ra IOPS cần thiết từ giá trị này không?
thu

1
Bạn có thể mô tả lý do tại sao bạn sau IOPS? đọc và viết là một đôi giày khác nhau được ném vào cùng một chậu ở đây.
Nils

Lý do là tôi cần mô tả một yêu cầu CTNH tối thiểu. Tôi có một máy chủ nhận dữ liệu qua mạng (chúng ta có thể giả sử tốc độ bit không đổi ở đây) và ghi dữ liệu nhận được vào đĩa. Dữ liệu được ghi vào các tệp tuần tự nhưng có thể có hàng trăm (ví dụ 800) trong số chúng song song. Tôi đã nhận ra rằng khi số lượng khách hàng đạt đến một số điểm tôi bắt đầu nhận được iowaits lớn. Thông lượng đĩa thực tế tôi có thể đạt được là khoảng 25MB / s, khá thấp, ít khách hàng có tốc độ bit cao hơn có thể thực hiện 35MB / s, tuần tự thuần khoảng 130MB / s. Vì vậy, tôi đoán IOPS là vấn đề quan trọng ở đây ...
pystole

Câu trả lời:


6

Giao dịch là các lệnh IO đơn (khối tìm nạp / khối ghi) được ghi vào đĩa RAW (trong ví dụ của bạn dm-0). Hạt nhân linux cố gắng sắp xếp các lệnh đó thành một chuỗi tốt hơn hoặc cố nén chúng thành các lệnh hiệu quả hơn (như: nhận hai khối cùng một lúc thay vì lấy một khối và lấy một khối khác ngay sau khối này). Đây là những giao dịch đi ra bộ điều khiển đĩa (tps cho sda).

Bộ điều khiển tốt di chuyển có logic của riêng họ làm giảm số lượng giao dịch thực sự hơn nữa.

Một giao dịch có thể là lệnh SCSI "ghi 2 GB cho crontoller 1 mục tiêu 2 lun 3 bắt đầu từ khu vực 22). Như bạn có thể thấy điều này không thể được đưa vào tương quan trực tiếp với các số thông lượng.

Những gì bạn đang theo là tốc độ ghi duy trì. Bạn có một vài yếu tố hạn chế ở đây:

  • kết nối máy khách: Nếu mạng là Gigabit, bạn sẽ không bao giờ có đầu vào hơn 100 MB / s
  • bộ điều khiển đĩa: Nếu đây là bộ điều khiển 3 Gb, bạn sẽ không bao giờ có thông lượng lớn hơn 300 MB / s
  • đĩa: Tra cứu giá trị của nhà sản xuất cho hiệu suất ghi bền vững
  • Hệ thống tập tin: Có một chút chi phí vì HĐH cần xử lý dữ liệu - kiểm tra xem trong đĩa RAM ...

Tôi đoán hệ thống của bạn là: Nhận một bộ điều khiển đột kích phần cứng tốt, có khả năng thực hiện đột kích 10 hoặc 5 và nhận được ít nhất 6 đĩa nhanh (15k).

Đối với chuyên nghiệp sử dụng sử dụng SAS thay vì SATA.


Ok, bạn đúng IOPS không có ý nghĩa gì khi viết vì có rất nhiều bộ nhớ cache, sắp xếp lại và hợp nhất có liên quan. Khép lại ... Cảm ơn.
thu

5

Cũng xin lưu ý rằng TPSgiá trị đại diện cho việc đọc và ghi, bạn có thể sử dụng -xchuyển đổi cho chế độ xem mở rộng, nơi đọc và ghi được phân tách (r / s = read IOPS, w / s = write IOPS):

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
vda               0.07    24.65    0.30   18.95    30.65   330.22    18.74     0.07    3.61   0.98   1.89

Uh, đúng vậy. Nhưng trong trường hợp của tôi, gần như 100% bài viết, số lần đọc gần như không có.
thu
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.