Hiệu suất I / O ngẫu nhiên theo xu hướng chính xác để lập kế hoạch năng lực


11

Nơi tôi làm việc, chúng tôi có rất nhiều máy chủ "sắt lớn" được sử dụng để lưu trữ nhiều máy ảo sử dụng Xen Hypervisor. Chúng thường được cấu hình với RAM 32 GB, các tiến trình lõi kép và các ổ đĩa nhanh với dung lượng I / O dung lượng lớn.

Chúng ta đang ở thời điểm mà cấu hình phần cứng hiện tại đang tồn tại lâu hơn một chút và đã đến lúc phải ra ngoài và cung cấp phần cứng mới lớn hơn, nhanh hơn và sáng hơn.

Như đã đề cập ở trên, bộ công cụ hiện có đã được triển khai với RAM 32 GB và điều đó đã hạn chế một cách hiệu quả số lượng máy ảo mà chúng tôi có thể triển khai cho máy chủ lưu trữ.

Tuy nhiên, khi điều tra phần cứng mới hơn, rõ ràng là bạn có thể nhận được nhiều RAM hơn trong một máy với 64, 72 hoặc thậm chí 96GB trong một khung. Rõ ràng, điều này sẽ cho phép chúng tôi có được nhiều máy hơn đến một máy chủ nhất định luôn luôn là một chiến thắng. Phân tích hoàn thành cho đến nay cho thấy rằng yếu tố giới hạn bây giờ sẽ được chuyển sang hệ thống con đĩa.

Vấn đề là bây giờ, cố gắng hiểu ý tưởng của chúng ta về ... Sử dụng, chúng ta biết rằng chúng ta không bị giới hạn về băng thông I / O, hơn nữa, số lượng ngẫu nhiên I / O hoạt động có thể được hoàn thành .. Chúng tôi biết giai thoại rằng một khi chúng tôi đạt đến điểm này thì iowait sẽ bay lên trời và toàn bộ hiệu suất của máy sẽ chuyển sang những con chó.

Bây giờ đây là mấu chốt của câu hỏi tôi đang hỏi, có ai biết cách theo dõi / xu hướng chính xác hiệu suất I / O hiện tại cụ thể liên quan đến số lượng op / I ngẫu nhiên được hoàn thành không?

Điều tôi thực sự đang cố gắng để có được một số liệu là "cấu hình này có thể xử lý thành công X số lượng yêu cầu I / O ngẫu nhiên và hiện tại chúng tôi (trung bình) đang thực hiện Y ops với đỉnh Z ops".

Cảm ơn trước!

Câu trả lời:


5

sarlàm công việc độc đáo ở đây; nó sẽ thu thập số lượng giao dịch cũng như các lĩnh vực đọc / ghi mỗi giây, có thể được sử dụng để sau đó phát lại khối lượng công việc IO của bạn với độ chính xác tương đối tốt (về tỷ lệ đọc / ghi, cũng như quy mô giao dịch, đó là xác định yếu tố làm thế nào "ngẫu nhiên" IO của bạn). Nó không hoàn hảo, nhưng theo kinh nghiệm của tôi, nó là một công việc đủ tốt để thực hiện loại ước tính mà bạn đang xem xét.


2

Vì vậy, điều này trông giống như một vấn đề giám sát và báo cáo năng lực. Nếu bạn sẽ bắt đầu đo các chỉ số xu hướng, tôi sẽ đi qua bảng để bạn có thể so sánh, tương quan, v.v.

Về các công cụ bạn có ganglia, zenoss, nagios, v.v. trong thế giới mã nguồn mở và nhiều sản phẩm của nhà cung cấp khác.

Bạn có thể định cấu hình chúng để theo dõi, đo lường và lưu trữ KPI mà bạn quan tâm và sau đó báo cáo về chúng theo định kỳ.

Với các truy vấn của bạn về việc sử dụng RAM, sẽ rất hợp lý khi bao gồm các chỉ số bộ nhớ, mức sử dụng trao đổi và CPU, do đó bạn có thể so sánh chúng trên bảng trong cùng khoảng thời gian và xem cái nào bị giới hạn, v.v.

Khi bạn đang thu thập dữ liệu, bạn có thể lưu trữ tất cả trong một DB lớn để báo cáo, có thể làm hiếm dữ liệu lịch sử, vd. lưu trữ mỗi số liệu 5 giây trong 6 tháng, sau đó theo phút, sau đó 5, sau đó mỗi giờ, khi bạn quay trở lại. Những thứ đó có thể được viết kịch bản và chạy qua cron, autosys, v.v.

Những báo cáo đó sẽ cung cấp cho bạn những gì quản lý muốn - tức là. một cái gì đó với đồ thị đẹp.

Và để quản lý hàng ngày, bạn có thể xem thông tin theo thời gian thực trên biểu đồ / số liệu thông qua bảng điều khiển để xem bạn đang hoạt động như thế nào tại bất kỳ thời điểm nào.


Cám ơn phản hồi của bạn. Rắc rối lớn nhất mà tôi đang tìm kiếm là thực sự theo dõi số lượng ops một cách chính xác. Tức là, tất cả mọi thứ tôi đã xem qua các báo cáo về lượng dữ liệu được di chuyển, hoặc iowait, v.v. Điều này dường như không phù hợp với dự luật ở đây ..
Keiran Holloway

2

Chúng tôi sử dụng colll vì chúng tôi có thể kéo tất cả các thông tin cần thiết vào một tệp duy nhất và phát lại các số liệu thống kê khi cần. Điều này sẽ cho phép bạn xem số lượng IOPS trên mỗi khoảng thời gian ghi, chuyển đổi ngữ cảnh, thống kê bộ nhớ. Bạn có thể chia nhỏ phần này trên mỗi đĩa hoặc chỉ cần nhìn tổng thể vào hệ thống. Sưu tầm cũng hỗ trợ ánh.

Đây là một công cụ tuyệt vời để có được một cái nhìn tổng quan về tổng hiệu năng hệ thống. Chúc may mắn, từ các quan sát, các đĩa SATA thường đứng đầu trong khoảng 200-300 IOPS khi thực hiện truy cập ngẫu nhiên.


Bất cứ ai cũng có nhiều kinh nghiệm với các ổ đĩa 15K RPM SAS?
Keiran Holloway

2

Chúng tôi ghi lại và biểu đồ I / O đĩa giống như cách chúng tôi thực hiện tất cả các số liệu khác:

  • Dữ liệu được lấy từ máy chủ bằng SNMP. Hộp NAS / SAN của chúng tôi làm điều này tự nhiên. Chúng tôi sử dụng net-snmp trên tất cả các máy chủ Linux, cung cấp thông tin này từ USB-DISKIO-MIB .

  • Dữ liệu được lưu trữ (ở định dạng RRD) và được vẽ biểu đồ bằng Cacti . Một số mẫu Disk IO cung cấp cho chúng tôi số lượng và kích thước giao dịch, được hiển thị ở định dạng hiện tại, trung bình và cao điểm.

Các số liệu này không nhất thiết phải hữu hạn như sử dụng iostat/ dstat/ sartrên máy chủ. Nhưng đó là lửa và quên, được thiết lập tự động khi một máy mới được đưa vào vận hành, được lưu trữ tập trung và vẫn có sẵn để tham khảo trong tương lai.

Chúng tôi sử dụng dữ liệu này để cảnh báo chúng tôi về các xu hướng bất thường trên cơ sở hoạt động và luôn luôn nhìn lại nó bất cứ khi nào thực hiện kế hoạch năng lực.

Điều tôi thực sự đang cố gắng để có được một số liệu trên là "cấu hình này có thể xử lý thành công X số lượng yêu cầu I / O ngẫu nhiên [..]".

Có một vài vấn đề với điều này:

  • Thật khó để phân tách và định lượng I / O ngẫu nhiên từ I / O tuần tự. Vì sự khác biệt cơ bản giữa hai là vị trí vật lý của các khối được lưu trữ trên đĩa. Bạn có thể đoán từ quy mô của các giao dịch, trên cơ sở rất nhiều giao dịch nhỏ có thể liên quan đến các tệp nhỏ rải rác về đĩa. Nhưng không có gì đảm bảo. Nó thể đang đọc một lượng nhỏ dữ liệu tuần tự từ một tệp hoặc các khối liền kề trên đĩa.

  • Ghi lại các số liệu sẽ cho bạn một bức tranh rất tốt về những cam kết của bạn ngày hôm nay, cách chúng thay đổi theo thời gian và do đó chúng sẽ thay đổi như thế nào trong tương lai. Những gì nó sẽ không nói với bạn là trần nhà là gì. Ít nhất là không trước khi quá muộn. Để xác định điều này, bạn cần thực hiện một số phép toán (từ thông số kỹ thuật phần cứng của bạn), điểm chuẩn (tôi thích bonnie++bản thân mình) và thật hữu ích khi có một số ý tưởng hậu cần về những điều mà các dom đang làm / đang sử dụng.


1

Tùy thuộc vào phụ trợ lưu trữ của bạn (IBM SVC / DS8000), bạn có thể lấy các số liệu thống kê liên quan đến IOPS ngẫu nhiên từ nó.

Để lấy số liệu thống kê từ máy chủ, bạn có thể sử dụng nmon . Nó miễn phí (như trong bia). Được phát triển đầu tiên bởi IBM cho AIX, cũng chạy trên Linux.


Tất cả lưu trữ được đính kèm trực tiếp, chạy trên máy chủ debian. Bất cứ điều gì FOSS là tốt.
Keiran Holloway

1

Nếu mọi người sử dụng SAR, tôi ít nhất hy vọng bạn sẽ lấy mẫu dữ liệu của mình vài giây. Khi tôi sử dụng colll tôi lấy mẫu một lần / giây. Theo như đo lường mức độ bạn đang làm tốt với I / O ngẫu nhiên, hãy sử dụng một công cụ như dt của Robin Miller (google nó) và bạn có thể dễ dàng tạo ra RẤT NHIỀU I / O ngẫu nhiên và sau đó chỉ cần đo bằng colll để xem có bao nhiêu bạn có thể làm mỗi giây. Một đĩa thông thường thường thực hiện tối đa 200-300 I / O / giây, dựa khá nhiều vào độ trễ quay. Kích thước khối có hiệu lực tối thiểu khi chờ 1/2 vòng quay để đĩa ở đúng vị trí áp đảo mọi thứ khác.

btw - iowait là một trong những phép đo bị hiểu sai nhiều nhất. Nó không có gì để làm với tải cpu, điều đó chỉ có nghĩa là cpu không làm gì khác trong khi I / O đang xảy ra. Trong thực tế nếu bạn ở 100% iowait, điều đó có nghĩa là bạn không hoạt động!

-dấu

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.