Database
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Database

Sử dụng Microsoft DiskSpd để kiểm tra hệ thống con lưu trữ của bạn

Trước đây, tôi đã trình bày những kiến ​​thức cơ bản về số liệu và kiểm tra hệ thống con lưu trữ trong bài viết Phân tích hiệu suất hệ thống con I / O cho SQL Server, bao gồm cả phần giới thiệu về CrystalDiskMark 4.0. CrystalDiskMark gần đây đã được viết lại để sử dụng Microsoft DiskSpd cho thử nghiệm của nó, điều này làm cho nó trở thành một công cụ thậm chí còn có giá trị hơn cho những nỗ lực thử nghiệm hệ thống con lưu trữ ban đầu của bạn. DiskSpd cung cấp chức năng cần thiết để tạo ra nhiều mẫu yêu cầu đĩa, có thể rất hữu ích trong việc chẩn đoán và phân tích các vấn đề về hiệu suất I / O với tính linh hoạt hơn nhiều so với các công cụ điểm chuẩn cũ hơn như SQLIO. Nó cực kỳ hữu ích để kiểm tra hệ thống con lưu trữ tổng hợp khi bạn muốn mức độ kiểm soát lớn hơn mức có sẵn trong CrystalDiskMark.

Bây giờ, chúng ta sẽ đi sâu hơn một chút về cách thực sự sử dụng Microsoft DiskSpd để kiểm tra hệ thống con lưu trữ của bạn mà không cần sử dụng CrystalDiskMark 4.0. Để thực hiện việc này, bạn cần tải xuống và giải nén DiskSpd. Để làm cho mọi thứ dễ dàng hơn, tôi luôn sao chép tệp thực thi diskspd.exe mong muốn từ thư mục thực thi thích hợp (amd64fre, armfre hoặc x86fre) vào một đường dẫn ngắn, đơn giản như C:\DiskSpd . Trong hầu hết các trường hợp, bạn sẽ muốn phiên bản DiskSpd 64 bit từ thư mục amd64fre.

Khi bạn đã có sẵn tệp thực thi diskspd.exe, bạn sẽ cần mở dấu nhắc lệnh có quyền quản trị (bằng cách chọn “Chạy với tư cách Quản trị viên”), rồi điều hướng đến thư mục bạn đã sao chép tệp diskspd.exe.

Dưới đây là một số tham số dòng lệnh mà bạn sẽ muốn bắt đầu:

Thông số Mô tả
- b Kích thước khối của I / O, được chỉ định là (K / M / G). Ví dụ –b8K có nghĩa là kích thước khối 8KB, có liên quan đến SQL Server
- d Thời lượng kiểm tra tính bằng giây. Các bài kiểm tra 30-60 giây thường đủ lâu để có kết quả hợp lệ
- o I / Os vượt trội (nghĩa là độ sâu hàng đợi) trên mỗi mục tiêu, mỗi chuỗi công nhân
- t Chủ đề công nhân cho mỗi mục tiêu tệp thử nghiệm
- h Tắt bộ nhớ đệm phần mềm ở cấp hệ điều hành và bộ nhớ đệm ghi phần cứng, đây là một ý tưởng hay để kiểm tra SQL Server
- r Cờ tuần tự hoặc ngẫu nhiên. Nếu –r được sử dụng, các thử nghiệm ngẫu nhiên được thực hiện, nếu không, các thử nghiệm tuần tự được thực hiện
- w Viết phần trăm. Ví dụ:–w25 có nghĩa là 25% ghi, 75% đọc
- Z Kiểm tra khối lượng công việc ghi kích thước bộ đệm nguồn, được chỉ định là (K / M / G). Được sử dụng để cung cấp dữ liệu ngẫu nhiên để ghi, đây là một ý tưởng hay để kiểm tra SQL Server
- L Nắm bắt thông tin về độ trễ trong quá trình kiểm tra, đây là một ý tưởng rất hay để kiểm tra SQL Server
- c Tạo (các) tệp khối lượng công việc có kích thước được chỉ định, được chỉ định là (K / M / G)

Bảng 1:Các tham số dòng lệnh cơ bản cho DiskSpd

Bạn cũng sẽ muốn chỉ định vị trí tệp thử nghiệm và tên tệp cho kết quả ở cuối dòng. Đây là một dòng lệnh mẫu:

diskspd –b8K –d30 –o4 –t8 –h –r –w25 –L –Z1G –c20G T:\ iotest.dat> DiskSpeedResults.txt

Dòng lệnh ví dụ này sẽ chạy kiểm tra I / O ngẫu nhiên 30 giây bằng cách sử dụng tệp kiểm tra 20GB nằm trên ổ T:, với tỷ lệ ghi 25% và đọc 75%, với kích thước khối 8K. Nó sẽ sử dụng tám luồng công nhân, mỗi luồng có bốn I / O vượt trội và một hạt giá trị entropy ghi là 1GB. Nó sẽ lưu kết quả của bài kiểm tra vào một tệp văn bản có tên DiskSpeedResults.txt. Đây là một tập hợp các tham số khá tốt cho khối lượng công việc SQL Server OLTP.

Hình 1:Dòng lệnh mẫu cho DiskSpd

Việc chạy thử nghiệm bắt đầu với thời gian khởi động mặc định là năm giây (trước khi bất kỳ phép đo nào thực sự bắt đầu), và sau đó thử nghiệm thực tế sẽ chạy trong khoảng thời gian được chỉ định tính bằng giây với thời gian hạ nhiệt mặc định là 0 giây. Khi kiểm tra kết thúc, DiskSpd sẽ cung cấp mô tả về kiểm tra và kết quả chi tiết. Theo mặc định, đây sẽ là một bản tóm tắt văn bản đơn giản trong một tệp văn bản sử dụng tên tệp mà bạn đã chỉ định, tên này sẽ nằm trong cùng thư mục với tệp thực thi diskspd.

Dưới đây là kết quả cho lần chạy thử nghiệm cụ thể này trên máy trạm của tôi.

Hình 2:Ví dụ về kết quả kiểm tra DiskSpd

Phần đầu tiên của kết quả cung cấp cho bạn dòng lệnh chính xác được sử dụng cho quá trình kiểm tra, sau đó chỉ định tất cả các tham số đầu vào được sử dụng cho quá trình chạy thử nghiệm (bao gồm các giá trị mặc định có thể chưa được chỉ định trong dòng lệnh thực tế ). Tiếp theo, kết quả kiểm tra được hiển thị bắt đầu với thời gian kiểm tra thực tế, số luồng và bộ xử lý logic. Phần CPU hiển thị việc sử dụng CPU cho từng bộ xử lý logic, bao gồm cả thời gian của người dùng và nhân, trong khoảng thời gian thử nghiệm.

Phần thú vị hơn của kết quả thử nghiệm sẽ đến tiếp theo. Bạn nhận được tổng số byte, tổng số I / Os, MB / giây, I / O mỗi giây (IOPS) và độ trễ trung bình của bạn tính bằng mili giây. Các kết quả này được chia nhỏ cho từng chủ đề (trong trường hợp của chúng tôi là bốn), với các phần riêng biệt trong kết quả cho Tổng IO, Đọc IO và Ghi IO. Các kết quả cho mỗi chủ đề sẽ rất giống nhau trong hầu hết các trường hợp. Thay vì ban đầu tập trung vào các giá trị tuyệt đối cho mỗi phép đo, tôi muốn so sánh các giá trị khi tôi chạy cùng một bài kiểm tra trên các ổ đĩa logic khác nhau, (sau khi thay đổi vị trí của tệp kiểm tra trong dòng lệnh), điều này cho phép bạn so sánh hiệu suất cho mỗi ổ đĩa logic.

Phần cuối cùng của kết quả kiểm tra thậm chí còn thú vị hơn. Nó hiển thị phân tích phần trăm về sự phân phối của kết quả kiểm tra độ trễ bắt đầu từ giá trị nhỏ nhất tính bằng mili giây cho đến giá trị lớn nhất tính bằng mili giây, được chia nhỏ cho các lần đọc, ghi và tổng độ trễ. “Nines” trong cột% -ile đề cập đến số nines, trong đó 3-nines có nghĩa là 99,9, 4-nines có nghĩa là 99,99, v.v. Lý do tại sao các giá trị cho các hàng phân vị cao hơn giống nhau là vì thử nghiệm này có tổng số hoạt động tương đối thấp. Nếu bạn muốn mô tả chính xác đặc điểm của các phân vị cao hơn, bạn sẽ phải chạy thử nghiệm thời gian dài hơn để tạo ra số lượng hoạt động I / O riêng biệt cao hơn.

Những gì bạn muốn tìm kiếm trong các kết quả này là điểm mà các giá trị tạo ra một bước nhảy lớn. Ví dụ:trong bài kiểm tra này, chúng tôi có thể thấy rằng 99% số lần đọc có độ trễ từ 1,832 mili giây trở xuống.

Hình 3:Phân phối kết quả độ trễ

Như bạn có thể thấy, việc chạy DiskSpd thực sự khá đơn giản khi bạn hiểu ý nghĩa của các tham số cơ bản và cách chúng được sử dụng. Bạn không chỉ có thể chạy DiskSpd từ một dòng lệnh kiểu cũ, bạn còn có thể chạy nó bằng PowerShell. DiskSpd cũng cung cấp cho bạn nhiều thông tin chi tiết hơn những gì bạn nhận được từ SQLIO. Phần phức tạp hơn của việc sử dụng DiskSpd là phân tích và diễn giải kết quả, đây là điều mà tôi sẽ đề cập trong một bài viết trong tương lai.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng AT TIME ZONE để sửa một báo cáo cũ

  2. Khắc phục sự cố hiệu suất tránh đầu gối

  3. Hekaton with a twist:In-memory TVPs - Part 2

  4. Giảm thiểu tác động của việc mở rộng cột IDENTITY - phần 1

  5. Các cột chỉ mục mới nên nằm trong khóa, hay được bao gồm?