2016-07-25 15 views
7

Có dễ dàng, giá rẻ (không yêu cầu thử nghiệm chương trình trên nhiều cấu hình phần cứng) và phương pháp không đau để xác định các yêu cầu phần cứng (như CPU, bộ nhớ RAM, v.v.). chương trình riêng? Làm thế nào nó nên được thực hiện?Làm thế nào để xác định các yêu cầu của chương trình

Tôi có chương trình khá thiếu tài nguyên được viết bằng Java và tôi không biết cách xác định đặc tả phần cứng sẽ đủ để chạy ứng dụng này một cách trơn tru.

+0

Có một JVM đang chạy một số tác vụ hoặc một số JVM khác nhau không? Có phải họ đang chạy không ngừng, hoặc là họ gây ra bởi hệ điều hành (cron ví dụ) và ngừng chạy khi kết thúc? – Thierry

+0

Trong trường hợp cụ thể này, tôi có chương trình với nhiệm vụ máy chủ trên JVM singe, và nó sẽ làm việc vĩnh viễn, nhưng trên thực tế tôi đang tìm một số giải pháp chung, thậm chí không chỉ cho các chương trình Java. – Marcon

Trả lời

4

Không, tôi không nghĩ rằng có bất kỳ cách áp dụng chung nào để xác định các yêu cầu tối thiểu không liên quan đến thử nghiệm trên một số phần cứng tham chiếu được chỉ định.

Bạn có thể tìm thấy một số hạn chế bằng cách sử dụng Máy ảo thuộc loại nào đó - dễ dàng sửa đổi các thông số của một số máy ảo hơn sửa đổi phần cứng. Nhưng có những hiện vật được tạo ra bởi sự tương tác giữa máy chủ và máy ảo có thể ảnh hưởng đến kết quả của bạn.

Thật khó để xác định tiêu chí cho "hiệu suất được chấp nhận" nói chung mà không biết nhiều về các trường hợp sử dụng.

Nhiều chương trình sẽ sử dụng nhiều tài nguyên hơn nếu chúng khả dụng, nhưng cũng có thể mang lại ít tài nguyên hơn.

Ví dụ: hãy xem xét một chương trình sử dụng một nhóm luồng có kích thước dựa trên số lõi CPU. Khi chạy trên một CPU có nhiều lõi hơn, nhiều công việc hơn có thể được thực hiện song song, nhưng đồng thời chi phí do tạo luồng, đồng bộ hóa và tập hợp các kết quả tăng lên. Các hiệu ứng là phi tuyến tính trong số lượng CPU và phụ thuộc rất nhiều vào chương trình và dữ liệu thực tế. Tương tự như vậy, hiệu ứng giảm phạm vi bộ nhớ khả dụng từ khả năng ném OutOfMemory-Errors cho một số đầu vào (nhưng có thể không dành cho người khác) chỉ chạy GC một chút thường xuyên hơn (và hiệu ứng của phụ thuộc vào chiến lược GC, từ đáng chú ý đóng băng chỉ một chút tải CPU).

Tất cả những điều đó thậm chí không cân nhắc rằng các chương trình thường không sống riêng rẽ - chúng chạy trên một hệ điều hành song song với các tác vụ khác cũng tiêu thụ tài nguyên.

+0

Tôi đang tìm kiếm một số giải pháp chung. Có một số phương pháp để xác định khả năng tính toán và bộ nhớ của bộ xử lý được chương trình sử dụng như thế nào. Vì vậy, cần có một số phương pháp để xác định tối thiểu (hoặc recomended) đặc điểm kỹ thuật phần cứng dựa trên chúng và tôi đang tìm một số ví dụ. Nó thậm chí không cần phải dựa trên Java. – Marcon

+0

Nhiều chương trình sẽ sử dụng nhiều tài nguyên hơn nếu chúng có sẵn, nhưng cũng có thể ít hơn. Ngoài ra, các tài nguyên cần thiết có thể phụ thuộc rất nhiều vào tải - khá thường nó quy mô bằng cách nào đó (thường là phi tuyến tính) với kích thước và tần số đầu vào hoặc một số dữ liệu đầu vào khác. – Hulk

+2

Về cơ bản, bạn chỉ có thể kiểm tra và đo lường - bạn không thể dễ dàng dự đoán hiệu suất trên phần cứng khác nhau. – Hulk

Các vấn đề liên quan