Giới hạn tốc độ CPU trong một máy ảo?


29

Có ai biết cách giới hạn tốc độ CPU trong máy ảo không? Hoặc nếu thậm chí có một phần mềm ảo hóa cho phép bạn làm điều này?

Tôi đang cố gắng tìm các yêu cầu tối thiểu cho một hệ thống, được cung cấp một hình ảnh hệ điều hành cụ thể mà tôi có. Tôi thấy các cách để hạn chế RAM và kích thước ổ cứng và số lượng lõi, nhưng tôi cần làm chậm CPU xuống 800 MHz để thực sự mô phỏng cấu hình hệ thống. Ngoài ra, máy tính chạy máy ảo là máy Windows 7.

Câu trả lời:


21

Tôi đã được giao nhiệm vụ với cùng một vấn đề và tôi đã cài đặt Oracle VirtualBox trên Windows 7 (với tư cách là máy chủ lưu trữ) và Ubuntu (với tư cách là khách). Tôi đã sử dụng một máy tính xách tay độc lập, HP EliteBook 8540W với Intl Core i7 chạy ở mức 1.87 GigHZ và RAM 8Gig.

Giả sử cài đặt của bạn hoạt động chính xác, trên máy Guest của bạn (ví dụ: trong trường hợp của tôi, Ubuntu), chọn "Cài đặt ..." từ "Máy" trong menu chính; chọn "Hệ thống" và nhấp vào tab "Bộ xử lý". Bạn có thể điều chỉnh tốc độ đồng hồ (được gắn nhãn, "Nắp thực thi") bằng cách trượt chỉ báo trên thanh xuống hết 1 phần trăm.

Tôi giả định rằng hệ điều hành máy chủ (Windows 7 trong trường hợp của tôi) không tiêu thụ bất kỳ chu kỳ xung nhịp nào (tôi đã xác nhận điều này bằng cách kiểm tra "Trình quản lý tác vụ" và tôi thấy việc sử dụng CPU ZERO trên máy chủ .ie windows 7 trong trường hợp của tôi). Do đó, tôi đã thực hiện 100% "nắp thực thi" bằng với máy chủ (ví dụ: 1,87 GigHZ). Tôi nghĩ rằng bằng cách lấy một tỷ lệ phần trăm giữa tốc độ đồng hồ máy chủ của bạn và 800 MHZ, bạn có thể tìm ra giá trị phần trăm tương ứng với 800 MHZ.

Tôi hi vọng cái này giúp được.

May mắn nhất.


9

Trên VMWare ESX và ESXi, bạn có thể tạo Nhóm tài nguyên và giới hạn tài nguyên CPU cho nhóm đó. Điều này sẽ cho phép bạn giới hạn tốc độ CPU của bất kỳ hệ thống nào được tạo trong Nhóm tài nguyên đó.


Tôi đọc về tùy chọn nhóm tài nguyên và nghĩ rằng nó được áp dụng cho người chơi. Đáng buồn thay, đây không phải là trường hợp. Và ESX / ESxi không miễn phí ... Nhưng tôi có thể dùng thử và nếu nó thực sự hoạt động, hãy xem xét thêm.
RCC

6
ESXi là miễn phí. (và một vài nhân vật nữa ...)
Tarnay Kálmán

Có thật không? Vì một số lý do tôi đã không nghĩ rằng nó là. Nhưng tôi đứng đúng! Cảm ơn rất nhiều vì đã chỉ ra rằng.
RCC


2

Mặc dù tôi không phải là chuyên gia về tất cả các công nghệ ảo hóa khác nhau, tôi nghĩ không có khả năng bạn sẽ tìm thấy một cài đặt như vậy. Tuy nhiên, bạn sẽ tìm thấy các cài đặt (ít nhất là trong MS hyper-V) cho phép bạn giới hạn một máy ảo trong một phần trăm của toàn bộ các hành động của máy chủ. Vì vậy, nếu bạn có máy chủ 8 lõi chạy ở tốc độ 2 GHz, bạn có thể thử giới hạn máy ảo của máy khách ở một lõi và không quá 45% lõi.

Tuy nhiên, điều này sẽ rất thô sơ và không phù hợp nếu bạn đang thử kiểm tra các vòng lặp thời gian hoặc thứ gì đó có tốc độ bộ xử lý thực tế phát huy tác dụng.


Tôi đã thấy một vài chương trình thực hiện điều đó - cụ thể là giới hạn phần trăm sử dụng CPU trên mỗi quy trình - nhưng chỉ thấy các tùy chọn Linux. Cấp, tôi đã không nhìn vào họ nhiều. Nếu giải pháp tôi đang thử như được mô tả trong phản hồi của tôi đối với MaxMackie không hoạt động, tôi sẽ xem xét các tùy chọn này hơn nữa.
RCC

Vâng, điều này có thể có một tác động xấu thực sự trên các vòng lặp thời gian. Tất cả phụ thuộc vào việc nó chạy tốc độ tối đa lên tới 45% sau đó cắt ra hay nếu nó cố gắng thực sự chạy ở mức 45%.
Zan Lynx

2

--cpuexecutcap <1-100>: Cài đặt này kiểm soát thời gian CPU có thể sử dụng CPU. Giá trị 50 ngụ ý một CPU ảo có thể sử dụng tới 50% của một CPU chủ.


1
Thêm thông tin sẽ làm cho câu trả lời này được chấp nhận.
Ramhound

1

Tôi có thể xác nhận rằng điều này không được hỗ trợ trong VirtualBox. Tuy nhiên, tài liệu dường như là iffy về việc VMware có thể làm điều này hay không.

EDIT: Đối với VMware: "Điều này là không thể đối với các sản phẩm Player và Server, nhưng tôi tin rằng nó nằm trong ESXi (sản phẩm" trình ảo hóa kim loại trần "miễn phí) và các sản phẩm trả tiền như VMWare Workstation."


Tôi cũng có thể xác nhận điều đó - Tôi đã thiết lập mọi thứ trên VirtualBox và sau đó phát hiện ra điều đó. Tôi hiện đang sử dụng VMware và đã thử sửa đổi tệp config.ini để giới hạn host.cpukHz thành 800000. Điều này dường như giả mạo máy ảo nghĩ rằng CPU MHz là 800. Tôi không chắc liệu điều này có thực sự làm những gì tôi muốn không nó là, nhưng đó là những gì tôi hy vọng. Ý tưởng?
RCC

Từ những gì tôi đã thấy rằng nên làm việc. Chỉ cần đảm bảo rằng bạn đặt host.noTSC = "TRUE" trong cùng tệp cấu hình đó. Điều này điều chỉnh xung nhịp CPU để đảm bảo nó không bị chậm. Ngoài ra, trong hệ điều hành khách, hãy chuyển đến tab Tùy chọn và đảm bảo rằng đồng bộ hóa Thời gian giữa máy ảo và hệ điều hành máy chủ được chọn.
n0pe

Có, tôi cũng có host.noTSc = "TRUE". Tôi chưa thể tìm thấy nơi kích hoạt đồng bộ hóa thời gian giữa vm và máy chủ trong trình phát vmware mặc dù ...
RCC

Tôi khá chắc chắn rằng bạn phải chạy trong hệ điều hành khách
n0pe

1

Bạn có thể mô phỏng điều này bằng cách ghim CPU. Sau đó tạo một số quy trình ràng buộc CPU được ghim vào cùng một CPU. Tốc độ CPU ước tính là (Tốc độ CPU thực / # quy trình).

Một số phần mềm giới hạn tài nguyên sẽ cho phép bạn giới hạn tỷ lệ phần trăm tài nguyên. Điều này sẽ giúp việc giới hạn tốc độ CPU dễ dàng hơn. Để làm như vậy, bạn cần phải vô hiệu hóa quyền truy cập vào tài nguyên dự phòng.


0

Trên VirtualBOX có một thanh trượt nơi bạn có thể định cấu hình% CPU chủ mà CPU khách có thể sử dụng. Tỷ lệ như vậy áp dụng cho từng lõi.

Trên VirtualBOX, không có cách nào để mô phỏng đa lõi với tốc độ khác nhau trên mỗi lõi, chỉ có một thanh trượt cho tất cả các lõi.

Đặt thanh trượt ở mức 50% sẽ làm cho lõi khách chạy ở 1/2 số lõi máy chủ (một điểm cơ bản trên mỗi lõi).

Vì vậy, nếu bạn có lõi deca (10 lõi) trên máy chủ và lõi ba trên máy khách (ba) và bạn muốn khách chạy ở X MHz trong khi máy chủ chạy ở Y MHz, chỉ cần bỏ qua số lõi để tính phần trăm.

Công thức sẽ là: Phần trăm = 100 * X / Y

Hy vọng điều này cũng sẽ giúp những người khác đến đây trong tương lai.

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.