Sử dụng CPU thấp nhưng chờ tín hiệu cao


8

Tôi có một máy chủ với 16 CPU được cấu hình với max degree of parallelism8 và max worker threadscài đặt bằng không.

Trong một giờ nhất định, tín hiệu của tôi chờ là 20% nhưng mức sử dụng CPU hệ điều hành của tôi trong thời gian đó không bao giờ vượt quá 25%. Ai đó có thể giải thích tại sao tín hiệu của tôi chờ đợi rất cao?

Nhà cung cấp của tôi có một hệ thống tính điểm tốt nhất trong lớp, dự kiến ​​chúng tôi sẽ ở mức 10% hoặc ít hơn tín hiệu chờ đợi, hoặc chúng tôi bị sứt mẻ. Làm thế nào tôi có thể sửa lỗi này (mà không cần thêm CPU)?

  • Chúng tôi không có nhiều hơn 8 CPU cho mỗi nút NUMA, vì vậy Trace Flag 8048 không áp dụng.
  • Các trường hợp chờ lớn nhất là CXPACKET(70%), sau đó PREEMPTIVE_OS_PIPEOPS(20%)
  • cost threshold for parallelismđược đặt thành 50. Tôi có nên nuôi nó không? Để làm gì?
  • Đây là một máy vật lý (không phải VM), dành riêng cho SQL Server.
  • Tôi đang sử dụng một công cụ giám sát để xác định các truy vấn và thủ tục chạy thường xuyên nhất. Tôi có muốn xem CPU cao, I / O cao hay thời lượng cao không? Thông thường ứng dụng của chúng tôi là I / O chuyên sâu nên tôi điều chỉnh I / O cao. Nhưng vì vấn đề là tín hiệu chờ, tôi có cần xem CPU cao không?
  • Tôi đã hy vọng tránh đề xuất của Max Vernon xuống mức MAXDOP4, vì ứng dụng thực hiện một số truy vấn kiểu kho cần các luồng bổ sung.

Cảm ơn Aaron! Tôi sẽ tìm kiếm các truy vấn với thời lượng cao và CPU thấp.
Chris Woods

Câu trả lời:


2

Câu trả lời Wiki cộng đồng được tạo ra từ các bình luận về câu hỏi của Aaron .

Trừ khi bạn gặp vấn đề về hiệu suất, phần trăm CXPACKETchờ đợi cao chỉ có thể là một dấu hiệu cho thấy một phần lớn các truy vấn đang diễn ra song song và không thực sự là một vấn đề.

CPU cao có thể là một chỉ số, nhưng từ những gì bạn đã giải thích tôi sẽ nói hãy nhìn vào các truy vấn có thời lượng dài nhưng CPU thấp để bắt đầu. Các CXPACKETchờ đợi đôi khi được kết hợp với một truy vấn chờ đợi cho tất cả các chủ đề để kết thúc trước khi nó có thể kết hợp các kết quả (dữ liệu nghiêng).

Nếu bạn có thể sửa đổi các truy vấn và quy trình, bạn có thể đặt mức cao hơn MAXDOPcho các tác vụ kho cần nó và đặt mức toàn cầu MAXDOPthấp hơn. Tuy nhiên, tôi sẽ chỉ làm điều đó như là phương sách cuối cùng. Bạn chỉ thực sự muốn thực hiện các loại gợi ý rõ ràng đó khi bạn đã sử dụng hết tất cả các khả năng hoặc bạn không thể thay đổi mã, truy vấn hoặc lược đồ cơ sở dữ liệ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.