2012-04-23 30 views
5

Trong Java có phương pháp Runtime.getRuntime().availableProcessors() trong đó có Javadoc sau:Java: Các lõi có sẵn cho JVM?

Trả về số bộ vi xử lý dành cho máy ảo Java. Giá trị này có thể thay đổi trong một lần gọi cụ thể của máy ảo.

Giá trị thực sự có thể thay đổi như thế nào? Trong những trường hợp nào sẽ có ít bộ vi xử lý có sẵn cho JVM hơn là cài đặt vật lý chẳng hạn?

Jonas

+0

Đây là [chuỗi SO có liên quan] (http://stackoverflow.com/questions/10133570/availableprocessors-returns-1-for-dualcore-phones). – rrufai

Trả lời

10

Lệnh Linux taskset(1) có thể được sử dụng để buộc các quy trình sử dụng CPU cụ thể hoặc các bộ CPU cụ thể; nó là khá dễ dàng để sửa đổi một chương trình đang chạy để buộc nó vào một hoặc nhiều bộ vi xử lý. Ví dụ:

taskset -p `pidof java` --cpu-list 0,5,7,9-11 
5

Trong Windows, có thể thay đổi số lõi mà ứng dụng được phép sử dụng thông qua một số thuộc tính đơn giản. Trong các môi trường ảo hóa, bạn cũng có thể hạn chế các lõi tới máy ảo để bạn chỉ thấy các lõi mà VM thấy. Và trong Linux/Unix, bạn có thể đặt mối quan hệ cốt lõi để các ứng dụng hoặc người dùng không thể sử dụng tất cả các lõi để có thể bạn có nhiều lõi được cài đặt hơn so với hiển thị với JVM.

Lưu ý: điều này rất hữu ích cho các máy chạy nhiều công việc mà bạn không muốn tranh chấp tài nguyên cao và bạn muốn tài nguyên kém (hoặc thậm chí dự phòng quá mức).

1

Bạn có thể tùy chỉnh tài nguyên có sẵn cho các ứng dụng java bằng các tùy chọn trên lệnh java. Tôi thực sự không biết chính xác tên của các thiết bị chuyển mạch nhưng bạn có thể tùy chỉnh một loạt các công cụ.

Tại sao bạn cung cấp cho bộ vi xử lý ít hơn cho một trường hợp của JVM? Nó phụ thuộc! có thể bạn đang lưu trữ tomcats và muốn phân phối tài nguyên có sẵn cho khách hàng của bạn.

Hy vọng điều này sẽ hữu ích.

2

Trên một số phần cứng (máy chủ), có thể làm nóng bộ xử lý mà không cần khởi động lại hệ thống. Điều này có thể làm cho số lượng bộ vi xử lý thay đổi. Mặc dù nguyên nhân phổ biến hơn là khi sysadmin thay đổi chính sách lập lịch trình bộ xử lý.

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