Membatasi kecepatan CPU di mesin virtual?

29

Adakah yang tahu cara untuk membatasi kecepatan CPU di mesin virtual? Atau apakah ada perangkat lunak virtualisasi yang memungkinkan Anda melakukan ini?

Saya mencoba mencari persyaratan minimum untuk suatu sistem, mengingat gambar OS tertentu yang saya miliki. Saya melihat cara untuk membatasi RAM dan ukuran hard disk dan jumlah core, tetapi saya perlu memperlambat CPU hingga 800 MHz untuk benar-benar mensimulasikan konfigurasi sistem. Juga, komputer yang menjalankan mesin virtual adalah mesin Windows 7.

RCC
sumber

Jawaban:

21

Saya telah ditugaskan dengan masalah yang sama dan saya menginstal Oracle VirtualBox pada Windows 7 (sebagai tuan rumah) dan Ubuntu (sebagai tamu). Saya menggunakan laptop mandiri, HP EliteBook 8540W dengan Intl Core i7 berjalan pada 1,87 GigHZ dan 8Gig RAM.

Dengan anggapan instalasi Anda berfungsi dengan baik, pada mesin Guest Anda (misalnya dalam kasus saya, Ubuntu) pilih "Pengaturan ..." dari "Mesin" di menu utama; pilih "System" dan klik pada tab "Processor". Anda dapat menyesuaikan kecepatan jam (label, "Cap Eksekusi") dengan menggeser indikator pada bilah hingga 1 persen.

Saya berasumsi bahwa OS host (Windows 7 dalam kasus saya) tidak mengkonsumsi siklus clock (Saya mengkonfirmasi ini dengan memeriksa "Task Manager" dan saya menemukan NOL penggunaan CPU pada mesin host. Yaitu windows 7 dalam kasus saya). Karena itu, saya mengasumsikan 100% "eksekusi cap" sama dengan mesin host (mis. 1,87 GigHZ). Saya pikir dengan mengambil persentase antara kecepatan jam mesin host Anda dan 800 MHZ, Anda dapat mengetahui nilai persentase yang sesuai dengan 800 MHZ.

Saya harap ini membantu.

Semoga berhasil.

Seif
sumber
9

Pada VMWare ESX dan ESXi Anda bisa membuat Resource Pool dan membatasi Sumber Daya CPU untuk pool itu. Ini akan memungkinkan Anda membatasi kecepatan CPU dari semua sistem yang dibuat di Resource Pool tersebut.

LeoB
sumber
Saya membaca tentang opsi kumpulan sumber daya, dan berpikir itu berlaku untuk pemain. Sayangnya, ini bukan masalahnya. Dan ESX / ESxi tidak gratis ... Tapi saya mungkin mencoba persidangan dan jika itu benar-benar berfungsi, lihat lagi.
RCC
6
ESXi gratis. (dan beberapa karakter lagi ...)
Tarnay Kálmán
Sangat? Untuk beberapa alasan saya tidak berpikir itu. Tapi aku berdiri terkoreksi! Terima kasih banyak untuk menunjukkannya.
RCC
6

Dikompilasi dan digunakan: cpulimit yang bekerja seperti pesona untuk memperlambat VM.

Nicolas Modrzyk
sumber
2

Meskipun saya bukan ahli dalam semua teknologi virtualisasi yang berbeda, saya pikir tidak mungkin Anda akan menemukan pengaturan seperti itu. Namun, Anda akan menemukan pengaturan (setidaknya dalam MS hyper-V) yang memungkinkan Anda membatasi mesin virtual hingga persen dari keseluruhan tindakan mesin host. Jadi jika Anda memiliki 8 core host yang berjalan pada 2 GHz, Anda dapat mencoba membatasi mesin virtual klien menjadi satu core, dan tidak lebih dari 45% dari core.

Namun, ini akan sangat kasar dan tidak cocok jika Anda mencoba untuk menguji timing loop atau sesuatu di mana kecepatan prosesor yang sebenarnya ikut bermain.

Knox
sumber
Saya melihat beberapa program yang melakukan itu - yaitu membatasi persentase penggunaan CPU per proses - tetapi hanya melihat opsi Linux. Memang, saya belum melihat banyak ke mereka. Jika solusi yang saya coba seperti yang dijelaskan dalam respons saya terhadap MaxMackie tidak berfungsi, saya akan melihat opsi ini lebih lanjut.
RCC
Ya, ini bisa memiliki efek buruk nyata pada pengaturan waktu loop. Itu semua tergantung pada apakah itu berjalan dengan kecepatan penuh hingga 45% kemudian mati, atau jika ia mencoba untuk benar-benar berjalan pada 45%.
Zan Lynx
2

--cpuexecutioncap <1-100>: Pengaturan ini mengontrol berapa banyak waktu CPU yang dapat digunakan oleh CPU virtual. Nilai 50 menyiratkan CPU virtual tunggal dapat menggunakan hingga 50% dari CPU host tunggal.

Oh tidak
sumber
1
Informasi lebih lanjut akan membuat jawaban ini dapat diterima.
Ramhound
1

Saya dapat mengonfirmasi bahwa ini tidak didukung di VirtualBox. Namun, dokumentasi tampaknya ragu apakah VMware dapat melakukan ini atau tidak.

EDIT: Untuk VMware: "Ini tidak mungkin dengan produk Player dan Server, tapi saya percaya itu ada di ESXi (produk" bare-metal hypervisor "gratis) dan produk berbayar seperti VMWare Workstation."

n0pe
sumber
Saya dapat mengkonfirmasi itu juga - saya mengatur semuanya di VirtualBox kemudian menemukan itu. Saya saat ini menggunakan VMware dan telah mencoba memodifikasi file config.ini untuk membatasi host.cpukHz hingga 800000. Ini tampaknya menipu mesin virtual untuk berpikir bahwa CPU MHz adalah 800. Saya tidak yakin apakah ini benar-benar akan melakukan apa yang saya inginkan itu untuk, tapi itulah yang saya harapkan. Ide ide?
RCC
Dari apa yang saya lihat itu seharusnya berhasil. Pastikan Anda mengatur host.noTSC = "BENAR" di file konfigurasi yang sama. Ini mengatur jam CPU untuk memastikan itu tidak melambat. Juga, di sistem operasi tamu, buka tab Opsi dan pastikan bahwa sinkronisasi waktu antara mesin virtual dan sistem operasi host dipilih.
n0pe
Ya, saya memiliki host.noTSc = "BENAR" juga. Saya belum dapat menemukan tempat untuk memungkinkan sinkronisasi waktu antara vm dan host di vmware player ...
RCC
Saya cukup yakin Anda harus menjalankannya di OS tamu
n0pe
1

Anda mungkin dapat mensimulasikan ini dengan pinning CPU. Kemudian buat beberapa proses yang terikat CPU disematkan ke CPU yang sama. Perkiraan kecepatan CPU adalah (Kecepatan CPU nyata / # proses).

Beberapa perangkat lunak yang membatasi sumber daya akan memungkinkan Anda untuk membatasi persentase sumber daya. Ini akan membuatnya lebih mudah untuk membatasi kecepatan CPU. Untuk melakukannya, Anda perlu menonaktifkan akses ke sumber daya cadangan.

BillThor
sumber
0

Pada VirtualBOX ada slider di mana Anda dapat mengkonfigurasi% CPU host yang dapat digunakan CPU tamu. Persentase tersebut berlaku untuk setiap inti.

Pada VirtualBOX tidak ada cara untuk mensimulasikan multi-core dengan kecepatan berbeda pada setiap core, hanya satu slider untuk semua core.

Mengatur slider pada 50% akan membuat core tamu berjalan pada 1/2 core host (a per core basics).

Jadi jika Anda memiliki deca core (10 core) pada host dan tri core pada guest (tiga), dan Anda ingin guest menjalankan pada X MHz sementara host berjalan pada Y MHz, abaikan saja jumlah core untuk menghitung persen.

Rumusnya adalah: Persen = 100 * X / Y

Semoga ini juga membantu orang lain datang di sini di masa depan.

Laura
sumber