Làm thế nào tôi có thể tìm ra những gì nút cổ chai làm chậm một quá trình cụ thể / toàn bộ hệ thống?


7

Đưa ra một quy trình chạy cụ thể, có cách nào để tìm ra phần tử phần cứng nào hiện đang là nút cổ chai cho hoạt động của nó không? Nói cách khác, tính toán hiện tại của nó có giới hạn CPU, giới hạn GPU, giới hạn bộ nhớ, ràng buộc IO, v.v.?

Câu trả lời phù hợp với Windows XP thì tốt hơn, nhưng tất cả các câu trả lời đều được chào đón.

EDIT: Tôi đang suy nghĩ về các quy trình chiếm phần lớn tài nguyên hệ thống cho chính họ; vì vậy các giải pháp có thể giúp tôi tìm ra battleneck hiện tại cho toàn bộ hệ thống (ví dụ: phần tử nào đang làm việc chăm chỉ nhất trong khi các phần tử khác đang nghỉ ngơi) cũng tốt.

EDIT 2: ai đó đã hỏi tôi câu hỏi này và câu trả lời của tôi là

Mở trình quản lý tác vụ của bạn và chọn xem lỗi trang cho ứng dụng - một gợi ý về số lượng rất cao mà bạn không có đủ bộ nhớ vật lý. Kiểm tra mức độ sử dụng CPU - nếu liên tục ở mức 100% thì đó là dấu hiệu có thể không đủ nhanh cho ứng dụng thời gian thực này.

Đó là những gì tôi sẽ làm nhưng cảm thấy hơi nghiệp dư, vì vậy tôi đang tìm cách chính xác hơn, đầy đủ hơn để xác định người phạm tội.


1
Bất cứ điều gì ít thô thiển hơn so với Nhìn vào trình quản lý tác vụ của bạn, sẽ rất đặc trưng cho hệ điều hành, vì vậy tôi đã tự do thêm thẻ OS.
Gilles

@Gilles không có vấn đề gì, tôi đoán rằng đó không phải là một ý tưởng tốt để đặt câu hỏi về bất khả tri về hệ điều hành ngay từ đầu.
Sồi

Câu trả lời:


1

Bạn có thể sử dụng các công cụ Microsoft XPERF để đi bộ và tìm cổ chai. Bạn chỉ có thể xem kết quả trên Vista / 7 (hoặc máy chủ 2008) nhưng bạn có thể chạy công cụ hồ sơ trên XP. Lợn Can Fly có một số bài viết thực sự hay về stackwalking với XPERF.

Chúng tôi đã sử dụng nó để tìm ra các nút cổ chai trong tốc độ khởi động của chúng tôi và cuối cùng đã có bằng chứng cho thấy công ty loại bỏ một số công cụ đang sử dụng quá nhiều Disk IO khi khởi động.


Để "đi bộ ngăn xếp", bạn sẽ cần các biểu tượng gỡ lỗi cho ứng dụng được đề cập.
Billy ONeal

Có, nhưng chỉ với các công cụ gỡ lỗi của windows, bạn có thể thấy những gì hệ thống đang chờ đợi, như đĩa, mạng, trình điều khiển video, v.v., bằng cách xem nó dành bao nhiêu thời gian cho các tác vụ đó. Điều đó có thể cho bạn biết để thử trình điều khiển mới hơn hoặc đĩa nhanh hơn, v.v.
Brian

0

Bạn sẽ cần phải sử dụng một hồ sơ. Bạn cũng có thể cần truy cập vào mã nguồn của chương trình, hoặc ít nhất là để gỡ lỗi các biểu tượng.


Tôi đang hỏi về các quy trình bên ngoài, những quy trình mà tôi không có quyền truy cập đặc biệt. Các ứng dụng không thể tùy biến.
Oak

Oak, theo như tôi biết bạn không thể làm điều đó. Bạn có thể đo toàn bộ những gì đang làm tắc nghẽn máy, nhưng không có hồ sơ, bạn sẽ không thể biết chính xác bất kỳ quy trình cụ thể nào đang làm (và bạn cần các biểu tượng gỡ lỗi cho điều đó)
Billy ONeal

@Billy Cảm ơn đã giải thích. Đo lường nút cổ chai trên toàn bộ hệ thống thực sự tốt đối với tôi; Tôi đã chỉnh sửa câu hỏi của mình cho phù hợp.
Oak

@Oak: Ok, nếu nút cổ chai có liên quan đến đĩa, thì hãy nhìn vào đèn hoạt động của ổ cứng trên máy của bạn. Nếu nó liên tục sáng, nó bị tắc nghẽn. Nhìn vào trình quản lý tác vụ - nếu CPU được tối đa hóa, thì CPU bị giới hạn. Nếu bộ nhớ vật lý đầy, điều đó cũng được hiển thị ở đó. Mặc dù vậy, tôi không biết cách kiểm tra xem ứng dụng có bị ràng buộc GPU hay không.
Billy ONeal

1
@Billy: Đó là một cách nhìn khá ngây thơ. CPU của bạn có thể chạy ở mức 99% và ứng dụng vẫn có thể bị ràng buộc IO bởi ổ cứng. OP về cơ bản là hỏi liệu có cách nào để đo lường điều này mà không chỉ nhìn vào ánh sáng hoạt động và trình quản lý tác vụ và xấp xỉ.
Sasha Chedygov
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.