On Fri, Feb 10, 2012 at 7:10 PM, Stefan Hajnoczi <stefa...@gmail.com> wrote: > On Fri, Feb 10, 2012 at 11:00 AM, Zhi Yong Wu <zwu.ker...@gmail.com> wrote: >> On Fri, Feb 10, 2012 at 6:35 PM, Stefan Hajnoczi <stefa...@gmail.com> wrote: >>> On Fri, Feb 10, 2012 at 9:47 AM, Zhi Yong Wu <zwu.ker...@gmail.com> wrote: >>>> Today i tried to create one VM with the option "-m 4000", and found it >>>> failed with the following errors: >>>> >>>> Failed to allocate 4194304000 B: Cannot allocate memory >>>> Aborted (core dumped) >>> >>> Did you run on a 32-bit host? >> No, it is one x86_64 host. > > That is weird. Have you tried strace(1) to find out which system call > is failing and why? It seems that it failed to call mmap(). ENOMEM
mprotect(0x7fdd5f973000, 4096, PROT_NONE) = 0 clone(child_stack=0x7fdd60172eb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fdd601739d0, tls=0x7fdd60173700, child_tidptr=0x7fdd601739d0) = 25488 rt_sigprocmask(SIG_SETMASK, [BUS ALRM IO RT_6], NULL, 8) = 0 select(11, [10], [], NULL, NULL) = 1 (in [10]) read(10, "\0", 16) = 1 close(9) = 0 open("/home/zwu/work/misc/rh6.img", O_RDONLY|O_NONBLOCK) = 9 fstat(9, {st_mode=S_IFREG|0644, st_size=1396244480, ...}) = 0 close(9) = 0 open("/home/zwu/work/misc/rh6.img", O_RDONLY|O_NONBLOCK) = 9 fstat(9, {st_mode=S_IFREG|0644, st_size=1396244480, ...}) = 0 close(9) = 0 stat("/home/zwu/work/misc/rh6.img", {st_mode=S_IFREG|0644, st_size=1396244480, ...}) = 0 open("/home/zwu/work/misc/rh6.img", O_RDWR|O_DSYNC|O_CLOEXEC) = 9 lseek(9, 0, SEEK_END) = 1396244480 futex(0x7fdd67c6e724, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x7fdd67c6e720, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 select(11, [10], [], NULL, NULL) = 1 (in [10]) read(10, "\0", 16) = 1 lseek(9, 0, SEEK_END) = 1396244480 mmap(NULL, 266240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdd670d1000 write(7, "\1\0\0\0\0\0\0\0", 8) = 8 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [BUS ALRM IO RT_6], 8) = 0 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fdd5f172000 mprotect(0x7fdd5f172000, 4096, PROT_NONE) = 0 clone(child_stack=0x7fdd5f971eb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fdd5f9729d0, tls=0x7fdd5f972700, child_tidptr=0x7fdd5f9729d0) = 25489 rt_sigprocmask(SIG_SETMASK, [BUS ALRM IO RT_6], NULL, 8) = 0 select(11, [10], [], NULL, NULL) = 1 (in [10]) read(10, "\0", 16) = 1 write(7, "\1\0\0\0\0\0\0\0", 8) = 8 brk(0) = 0x7fdd68f1a000 brk(0x7fdd68f3b000) = 0x7fdd68f3b000 open("/proc/meminfo", O_RDONLY) = 12 fstat(12, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fdd67243000 read(12, "MemTotal: 2019156 kB\nMemF"..., 1024) = 1024 close(12) = 0 munmap(0x7fdd67243000, 4096) = 0 getrlimit(RLIMIT_NOFILE, {rlim_cur=1024, rlim_max=4*1024}) = 0 gettid() = 25462 rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [BUS ALRM IO RT_6], 8) = 0 mmap(NULL, 8392704, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fdd5e971000 mprotect(0x7fdd5e971000, 4096, PROT_NONE) = 0 clone(child_stack=0x7fdd5f170eb0, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0x7fdd5f1719d0, tls=0x7fdd5f171700, child_tidptr=0x7fdd5f1719d0) = 25490 rt_sigprocmask(SIG_SETMASK, [BUS ALRM IO RT_6], NULL, 8) = 0 futex(0x7fdd67c8efc4, FUTEX_WAIT_PRIVATE, 1, NULL) = 0 mmap(NULL, 4196405248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory) brk(0) = 0x7fdd68f3b000 brk(0x7fde63158000) = 0x7fdd68f3b000 mmap(NULL, 4196536320, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory) mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fdd50000000 munmap(0x7fdd54000000, 67108864) = 0 mprotect(0x7fdd50000000, 135168, PROT_READ|PROT_WRITE) = 0 mmap(NULL, 4196405248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = -1 ENOMEM (Cannot allocate memory) write(2, "Failed to allocate 4194304000 B:"..., 56Failed to allocate 4194304000 B: Cannot allocate memory ) = 56 rt_sigprocmask(SIG_UNBLOCK, [ABRT], NULL, 8) = 0 tgkill(25462, 25462, SIGABRT) = 0 --- {si_signo=SIGABRT, si_code=SI_TKILL, si_pid=25462, si_uid=0, si_value={int=1667424088, ptr=0xffff88006362df58}} (Aborted) --- +++ killed by SIGABRT (core dumped) +++ Aborted (core dumped) > >>> until you begin dirtying more host pages than the host has resources >>> for. >>> >>> But normally for KVM you want sum(vms) < host_ram, unless you are >> here host_ram is the free ram of host? > > I meant that for predictable, good performance it is normal to size > hosts so they have more physical RAM than the sum of guest RAM. > > For example, 2 GB VM and 4 GB VM => make sure you have more than 6 GB > RAM. If you go under that threshold you will hit swap when the guests > utilize their memory. > > Stefan -- Regards, Zhi Yong Wu