5

Tôi có câu hỏi liên quan đến hiệu suất ứng dụng và thông minh.cải thiện hiệu suất ứng dụng và thông minh

Tôi đã tạo dịch vụ cửa sổ, nếu tôi chạy dịch vụ này trên 3 máy cấu hình khác nhau. Tôi muốn nó sử dụng các nguồn lực thích hợp của máy (CPU và bộ nhớ).

Máy nói 1 (M1) có lõi đơn với ram 1 GB.

Máy2 (M2) có hai lõi với 2 GB ram.

Máy3 (M3) có 4 lõi với 4 GB ram.

Bây giờ khi dịch vụ của tôi chạy trên đó, nó sẽ sử dụng tài nguyên phù hợp. Giống như nếu sử dụng cpu của máy là 1% nó nên đi vào người dùng tối đa 50% hoặc nhiều hơn. Nếu đã 50% thì chỉ sử dụng 30%. Vì vậy, làm ram. Nhưng không bao giờ vượt quá giới hạn như 90% hay gì đó.

Về cơ bản tôi đã viết một dịch vụ đa luồng mà hiện tại không quan tâm đến tài nguyên máy và tiếp tục sử dụng nó. Tôi muốn bao gồm trí thông minh này trong đó.

Hãy giúp tôi hiểu ý tưởng của bạn.

Cảm ơn

+0

Tôi đang đặt câu hỏi này vì ứng dụng của tôi có thể chạy trên bất kỳ máy cấu hình nào. Trong trường hợp nếu nó chạy trên một máy đơn luồng của nó sẽ truy cập vào tất cả các tài nguyên như 100% và gần 70 đến 80% bộ nhớ. Tôi không muốn theo cách đó. Tôi muốn tạo ra một trình quản lý tài nguyên hoàn hảo có thể chạy trên bất kỳ loại máy cấu hình nào và vẫn hoạt động hoàn hảo – sunder

+0

Bạn có thể đặt chủ đề của mình thành ưu tiên thấp, vì vậy nó sẽ chỉ sử dụng tài nguyên hệ thống nếu không ai muốn sử dụng chúng? – Archeg

+0

Tôi không phải là tất cả chơi với preorites thread, chỉ cần kế hoạch chủ đề. Vì nó có thể gây ra nạn đói tài nguyên. Tôi muốn ngăn chặn nó và xử lý thủ công để dịch vụ của tôi chạy thanh lịch trên bất kỳ loại cấu hình hệ thống nào. – sunder

Trả lời

4

Như Archeg cho biết, dựa trên số lượng bộ xử lý, bạn có thể tăng số lượng chỉ. Nhưng tăng số lượng các chủ đề dựa trên hoạt động của CPU là sai lầm để đi về nó.

Xem xét theo cách này - trình lập lịch CPU phân bổ thời gian ở mức chi tiết milli giây. Nếu tải trên hệ thống từ các quá trình khác thấp, nó sẽ cung cấp cho quá trình của bạn thêm thời gian. Giai đoạn. Nếu có nhiều quy trình, , bạn sẽ nhận được các khe thời gian ít thường xuyên hơn. Bạn không nên đập nó với nhiều chủ đề hơn là cần thiết.

Điều bạn cần làm là quyết định những gì bạn muốn làm. Dịch vụ có nhạy cảm với thời gian không? Nếu vậy, sau đó trong một hệ thống tải nặng, bạn có ít thời gian CPU để hoạt động với, và trong một hệ thống nhàn rỗi, bạn có thể sử dụng nhiều thời gian CPU trong cùng một, nói, thứ hai. Hãy coi chừng: Nếu dịch vụ của bạn thực hiện I/O, có thể bản thân dịch vụ của bạn sẽ điều chỉnh lượng CPU mà nó có thể sử dụng.

Với RAM, bạn có thể thực hiện một số thứ như RAM, hệ thống chuyển đổi thuật toán sang sử dụng ít xử lý hoặc xử lý nhanh hơn, nhưng cần nhiều bộ nhớ hơn (và ngược lại).

Vấn đề là không có cách nào 'độc lập với dịch vụ' để thực hiện loại quy mô thông minh này, bên cạnh lịch trình tốt hơn (đó là điều mà nhiều người thông minh đã xem trong nhiều năm). Tuy nhiên, bạn có thể viết các dịch vụ nhận biết các ràng buộc hệ thống hiện tại và thay đổi hành vi tương ứng.

2

Tạo các ứng dụng .NET hiệu suất cao dễ dàng hơn đáng kể nếu bạn thiết kế với hiệu suất trong đầu. Hãy chắc chắn rằng bạn phát triển một kế hoạch hiệu suất ngay từ đầu của dự án của bạn. Không bao giờ cố gắng thêm hiệu suất dưới dạng bước xây dựng sau. Ngoài ra, sử dụng một quá trình phát triển lặp đi lặp lại kết hợp đo lường liên tục giữa các lần lặp.

Bằng cách làm theo các nguyên tắc thiết kế thực hành tốt nhất, bạn tăng đáng kể cơ hội tạo ứng dụng hiệu suất cao.

Hãy xem xét các nguyên tắc thiết kế sau:

  • xem xét an ninh và hiệu suất.
  • Phân vùng ứng dụng của bạn một cách hợp lý.
  • Đánh giá mối quan hệ.
  • Giảm các chuyến đi khứ hồi.
  • Tránh chặn các tác vụ lâu dài.
  • Sử dụng bộ nhớ đệm.
  • Tránh các ngoại lệ không cần thiết.
Các vấn đề liên quan