버퍼가 사용된 메모리와 동일한 이유는 무엇입니까?

버퍼가 사용된 메모리와 동일한 이유는 무엇입니까?

저는 OpenVZ로 가상화된 Ubuntu 11.10을 사용하고 있습니다. 이 출력은 free -m버퍼가 항상 사용된 것과 동일함을 나타냅니다.

             total       used       free     shared    buffers     cached
Mem:          2048       1079        968          0          0          0
-/+ buffers/cache:       1079        968
Swap:            0          0          0

이것이 968MB의 여유 메모리가 있음에도 불구하고 Java 가상 머신을 실행할 수 없는 이유입니까?

답변1

이는 OpenVZ 때문입니다. 에 적용된 제한 사항을 볼 수 /proc/user_beancounters있으며 다음은 몇 가지 설명입니다.http://wiki.openvz.org/Privvmpages

컨테이너 관련 메모리 문제는 없었지만 여기서 조언은 다음과 같습니다.

http://www.moeding.net/archives/20-Optimizing-virtual-memory-in-OpenVZ-I.html

ulimit시작하기 좋은 곳은 스택 크기를 설정하는 것 입니다. OpenVZ가 상단의 VIRT 열에서 찾은 것과 동일한 측정항목을 사용한다는 의미는 잘못된 것입니다. "privvmpages"에는 가상 페이지 태그가 지정되어 있습니다.쓰기 가능하고 비공개, 따라서 프로세스의 전체 주소 공간보다 훨씬 작습니다. 거기에는 몇 가지 다른 오류 메시지가 있습니다("안타깝게도 메모리 부족은 대부분의 프로그램이 올바르게 처리하지 못하는 오류 조건입니다." - Linux에서는 메모리 부족이 기본값입니다.아니요오류 상태이므로 프로그램이 이를 올바르게 처리할 기회가 없습니다). 그러나 스택 크기를 낮추는 것은 여전히 ​​시도해 볼 가치가 있습니다.

Slm의 제안은 뚱뚱한 고양이를 찾는 사람들에게 좋은 해결책인 것 같지만, 당신의 슬라이스가 내 것과 같으면 다른 /proc/bc방법이 없습니다. 그러나 프로세스에 대한 쓰기 가능 및 개인 통계를 얻 pmap -d거나 상단의 숫자를 볼 수 있습니다.

1GB이면 JVM을 실행할 수 있을 것 같지만 복잡한 문제가 있습니다. 사용된 메모리와 사용 가능한 메모리의 양이 단순한 숫자가 아니기 때문입니다(이유에 대한 토론 참조).여기), 총계는 특정 시점에 기계가 실제로 전달할 수 있는 양을 초과할 수 있습니다.

답변2

나는 bash 기능을 사용하여 이 작업을 수행합니다.

vzr_mb () 
{ 
    ( printf "vm feature held(MB) maxheld(MB) barrier(MB) limit(MB) failcnt\n";
    grep privvm /proc/bc/1*/resources | awk '{sub($3,$3*4096/2^20) sub($4,$4*4096/2^20) sub($5,$5*4096/2^20) sub($6,$6*4096/2^20)}1' ) | column -t
}

실행하면 다음과 같습니다.

% vzr_mb
vm                       feature      held(MB)  maxheld(MB)  barrier(MB)  limit(MB)  failcnt
/proc/bc/101/resources:  privvmpages  184.422   300.129      300          310        2
/proc/bc/102/resources:  privvmpages  473.703   861.078      900          950        13
/proc/bc/103/resources:  privvmpages  184.457   579.941      300          350        238
/proc/bc/104/resources:  privvmpages  307.961   700.473      400          450        70
/proc/bc/105/resources:  privvmpages  477.828   773.586      700          750        1730347
/proc/bc/106/resources:  privvmpages  637.801   981.281      1000         1050       511
/proc/bc/108/resources:  privvmpages  167.777   580.102      285          295        1
/proc/bc/109/resources:  privvmpages  202.055   308.969      395          425        0
/proc/bc/110/resources:  privvmpages  212.492   625.324      295          325        326
/proc/bc/111/resources:  privvmpages  189.539   535.492      295          325        5
/proc/bc/112/resources:  privvmpages  239.617   407.766      468.75       488.281    0
/proc/bc/180/resources:  privvmpages  195.605   601.602      200          225        3049321
/proc/bc/181/resources:  privvmpages  967.027   1304.82      1500         2000       3
/proc/bc/183/resources:  privvmpages  0         1087.72      1115         1150       0

관련 정보