Jika saya menggunakan mesin saya [Ubuntu 16.04 64 bit, kernel 4.4] untuk sementara waktu, QEMU membutuhkan cache kernel untuk dihapus, jika tidak, ia tidak akan berhasil mengalokasikan RAM.
Mengapa itu terjadi?
Ini adalah contoh dijalankan:
~$ free -m
total used free shared buff/cache available
Mem: 15050 5427 3690 56 5931 4803
Swap: 0 0 0
~$ sudo qemu-system-x86_64 -m 10240 # and other options
qemu-system-x86_64: cannot set up guest memory 'pc.ram': Cannot allocate memory
~$ echo 3 | sudo tee /proc/sys/vm/drop_caches
3
~$ free -m
total used free shared buff/cache available
Mem: 15050 1799 9446 56 3803 9414
Swap: 0 0 0
~$ sudo qemu-system-x86_64 -m 10240 # and other options
qemu-system-x86_64: cannot set up guest memory 'pc.ram': Cannot allocate memory
~$ echo 3 | sudo tee /proc/sys/vm/drop_caches
3
~$ free -m
total used free shared buff/cache available
Mem: 15050 1502 10819 56 2727 10784
Swap: 0 0 0
~$ sudo qemu-system-x86_64 -m 10240 # and other options
# Now QEMU starts
cache
kernel
linux-kernel
qemu
Marcus
sumber
sumber
Jawaban:
Tidak semua data yang di-cache dapat segera dibuang. Sebagai contoh, halaman kotor yang di-cache harus ditulis kembali ke disk sebelum dihapus dari RAM. Anda tidak memiliki swap, jadi sebelum penulisan selesai, tidak cukup ruang yang tersedia untuk QEMU.
Anda benar-benar harus menambahkan jumlah swap yang wajar. Anda tidak dapat mengharapkan manajer memori melakukan pekerjaan dengan baik dengan satu tangan terikat di belakang.
sumber
malloc()
panggilan untuk mungkin menemukan cukup memori?