[OpenIndiana-discuss] KVM Failed to allocate memory: Resource temporarily unavailable

Fucai Liang (BLCT) fcliang at baolict.com
Thu Dec 10 04:04:51 UTC 2015



Hello, guys:

I has a server running oi_151.1.8, the server have 32G memory .  


root at oi01:~# prtconf | grep Memory
Memory size: 32760 Megabytes
root at oi01:~# echo "::memstat" | mdb -k
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     451736              1764    5%
ZFS File Data               78429               306    1%
Anon                        19849                77    0%
Exec and libs                 586                 2    0%
Page cache                   2170                 8    0%
Free (cachelist)            10432                40    0%
Free (freelist)           7821076             30551   93%

Total                     8384278             32751
Physical                  8384277             32751
root at oi01:~#


I lauch a KVM  VM  by


#!/bin/sh

qemu-kvm \
        -vnc 0.0.0.0:2 \
        -cpu host \
        -smp 2 \
        -m 8192 \
        -no-hpet \
        -localtime \
-drive file=/dev/zvol/rdsk/rpool/svrinit,if=virtio,index=0 \
        -net nic,vlan=0,name=e1000g0,model=e1000,macaddr=2:8:20:bd:ae:01 \
        -net vnic,vlan=0,name=e1000g0,ifname=vnic01,macaddr=2:8:20:bd:ae:01 \
        -vga std \
        -daemonize


root at oi01:~# echo "::memstat" | mdb -k
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     461061              1801    5%
ZFS File Data               78446               306    1%
Anon                      2131265              8325   25%
Exec and libs                 918                 3    0%
Page cache                   2255                 8    0%
Free (cachelist)            10015                39    0%
Free (freelist)           5700318             22266   68%

Total                     8384278             32751
Physical                  8384277             32751
root at oi01:~#


then I launch second  KVM VM,  

#!/bin/sh

qemu-kvm \
        -enable-kvm \
        -vnc 0.0.0.0:3 \
        -cpu host \
        -smp 2 \
        -m 8192 \
        -no-hpet \
        -localtime \
-drive file=/dev/zvol/rdsk/rpool/svr03,if=virtio,index=0 \
        -net nic,vlan=0,name=e1000g0,model=e1000,macaddr=2:8:20:bd:ae:03 \
        -net vnic,vlan=0,name=e1000g0,ifname=vnic03,macaddr=2:8:20:bd:ae:03 \
        -vga std \
        -daemonize



I got err message  :
Failed to allocate memory: Resource temporarily unavailable  

-bash: fork: Not enough space

.

the same ietmes happen on OmniOS , the following is a OmniOS-discuss  mail .

That caused by availrmem not enough for memory locked . 

Is that mean I can only use about 14G memory for KVM VM in a 32G memory installed server? 
OS can only locked about 14G memory . 

——————FOLLOWING--------------

Hello, guys:

I has a server running OmniOS v11 r151016.  the server have 32G memory .  
I star tow kvm virtual machines by running the following commands:

qemu-system-x86_64 -enable-kvm -vnc 0.0.0.0:12 -cpu host -smp 4 -m 8192 -no-hpe


qemu-system-x86_64 -enable-kvm -vnc 0.0.0.0:11 -cpu host -smp 2 -m 4096 -no-hpe

one use 8G memory and the other one use 4G memory.

now the memory usage of the system as following:

root at BLCC01:/root# prtconf | grep Memory
Memory size: 32760 Megabytes
root at BLCC01:/root#  echo "::memstat" | mdb -k
Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                     549618              2146    7%
ZFS File Data              668992              2613    8%
Anon                      3198732             12495   38%
Exec and libs                1411                 5    0%
Page cache                   4402                17    0%
Free (cachelist)            10578                41    0%
Free (freelist)           3950545             15431   47%

Total                     8384278             32751
Physical                  8384277             32751
root at BLCC01:/root# swap -sh
total: 12G allocated + 35M reserved = 12G used, 6.8G available
root at BLCC01:/root# swap -l
swapfile             dev    swaplo   blocks     free
/dev/zvol/dsk/rpool/swap 263,2         8  8388600  8388600
root at BLCC01:/root#


root at BLCC01:/root# prctl $$

project.max-locked-memory
      usage           12.0GB
      system          16.0EB    max   deny                                 -
project.max-port-ids
      privileged      8.19K       -   deny                                 -
      system          65.5K     max   deny                                 -
project.max-shm-memory
      privileged      8.00GB      -   deny                                 -
      system          16.0EB    max   deny                                 -






#prstat -J

PROJID    NPROC  SWAP   RSS MEMORY      TIME  CPU PROJECT
   1        5   12G   12G    38%   1:07:23 5.6% user.root
   0       43   72M   76M   0.2%   0:00:59 0.0% system
   3        5 4392K   14M   0.0%   0:00:00 0.0% default



then I start the third vm (4G memory), it got the following error :


qemu-system-x86_64 -enable-kvm -vnc 0.0.0.0:2 -cpu host -smp 2 -m 4096 -no-hpet

qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying...
qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying...
qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying...
qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying...
qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying...
qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying…


I got 15G free memory in the system, why qemu-system-x86_64 can not locked enough memory ?

Thanks for your help !

sorry for my poor english !




-----------------------------------
fcliang



Thank for  your help!

when the server boot up, it has 7989066 pages  availrmem.  after I launch one VM (8Gmemory),  availrmem decrease to 4756624 .



7989066-4756624 = 3232442

3232442/256 = 12626.7265625 / 1024 = 12.3G



root at BLCC01:/root# mdb -ke 'availrmem/D ; pages_pp_maximum/D'
availrmem:
availrmem:      7989066
pages_pp_maximum:
pages_pp_maximum:               325044

root at BLCC01:/root# qemu-system-x86_64 -enable-kvm -vnc 0.0.0.0:12 -cpu host -smp 4 -m 8192 -no-hpe



root at BLCC01:/root# mdb -ke 'availrmem/D ; pages_pp_maximum/D'
availrmem:
availrmem:      4756624
pages_pp_maximum:
pages_pp_maximum:               325044
root at BLCC01:/root#


That mean the VM  use 12.3G availrmem , how it happens ?

Thank !




------------------------------
fcliang




On Dec 2, 2015, at 1:37, Joshua M. Clulow <josh at sysmgr.org> wrote:

> On 1 December 2015 at 09:11, Dan McDonald <danmcd at omniti.com> wrote:
>>> On Dec 1, 2015, at 12:03 PM, Fucai.Liang <fcliang at baolict.com> wrote:
>>> then I start the third vm (4G memory), it got the following error :
>>> qemu-system-x86_64 -enable-kvm -vnc 0.0.0.0:2 -cpu host -smp 2 -m 4096 -no-hpet
>>> 
>>> qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying...
>>> qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying...
>>> qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying...
>>> qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying...
>>> qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying...
>>> qemu_mlock: have only locked 1940582400 of 4294967296 bytes; still trying…
>>> 
>>> I got 15G free memory in the system, why qemu-system-x86_64 can not locked enough memory ?
>> What does "vmstat 1 5" say prior to your launch of the third VM?
> 
> I suspect it will show you have free memory available, but that what
> is really happening is getting here:
> 
>  https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/vm/seg_vn.c#L7989-L8002
> 
> This is likely failing in page_pp_lock() because "availrmem" has
> fallen below "pages_pp_maximum":
> 
>  https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/vm/vm_page.c#L3817-L3818
> 
> We set this value here, though it can be overridden in "/etc/system":
> 
>  https://github.com/illumos/illumos-gate/blob/master/usr/src/uts/common/vm/vm_page.c#L423-L436
> 
> You can look at the current values with mdb:
> 
>  mdb -ke 'availrmem/D ; pages_pp_maximum/D'
> 
> Increasing this value doesn't seem to be without risk: I believe that
> it can lead to memory exhaustion deadlocks, amongst other things.  I
> don't know if it's expected to be tuneable without a reboot.
> 
> 
> Cheers.
> 
> -- 
> Joshua M. Clulow
> UNIX Admin/Developer
> http://blog.sysmgr.org

_______________________________________________
OmniOS-discuss mailing list
OmniOS-discuss at lists.omniti.com
http://lists.omniti.com/mailman/listinfo/omnios-discuss




------------------------------
Fucai Liang 






More information about the openindiana-discuss mailing list