free -m과 ps -euf의 차이점

free -m과 ps -euf의 차이점

우분투 10.04 및 512Mb RAM을 갖춘 vps 시스템이 있습니다. mongodb 데몬을 실행한 후 사용 가능한 메모리가 얼마나 되는지 추측하려고 합니다.

내가 달리면 free -m나는 얻는다.

             total       used       free     shared    buffers     cached
Mem:           496        489          6          0          4        452
-/+ buffers/cache:         33        462
Swap:          511          4        507

내가 달리면 ps euf나는 얻는다.

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       948  0.0  0.0   5928   472 tty6     Ss+  Aug25   0:00 /sbin/getty 384
root       947  0.0  0.0   5928   472 tty5     Ss+  Aug25   0:00 /sbin/getty 384
root       946  0.0  0.0   5928   472 tty4     Ss+  Aug25   0:00 /sbin/getty 384
root       945  0.0  0.0   5928   472 tty3     Ss+  Aug25   0:00 /sbin/getty 384
root       944  0.0  0.0   5928   472 tty2     Ss+  Aug25   0:00 /sbin/getty 384
root       943  0.0  0.1  51856   536 hvc0     Ss   Aug25   0:00 /bin/login -- 
root       978  0.0  0.4  20580  2424 hvc0     S    Aug25   0:01  \_ -bash TERM=
root      7593  0.0  0.1  10332   524 hvc0     T    Aug25   0:00      \_ nano he
root     12576  0.7  3.1 122520 16220 hvc0     Sl   07:42   0:12      \_ ./mongo
root     12599  0.0  0.2  16300  1060 hvc0     R+   08:09   0:00      \_ ps euf

그러면 프로세스가 메모리의 5% 미만을 사용하고 있는 것 같지만 사용 가능한 메모리는 6MB밖에 없습니다. 왜일까요?

답변1

버퍼 및 캐시 크기는 동적으로 조정됩니다. 프로세스에 더 많은 공간이 필요하면 버퍼와 캐시에서 공간을 가져옵니다.

핵심은 두 번째 줄("-/+ buffers/cache")을 살펴보는 것입니다.

Mem:           496        489          6          0          4        452
-/+ buffers/cache:         33        462

두 번째 줄의 free(462)는 6(free), 4(buffer), 452(cache)의 합입니다. 이는 실제 여유 공간의 양입니다. 이 값이 너무 낮으면 시스템은 메모리의 프로세스를 스왑 공간으로 스왑하기 시작합니다.

실제로 33MB의 메모리를 사용하고 있으며쓸 수 있는462MB - 여전히 일부 I/O 버퍼가 필요하므로 약간 적을 수 있습니다.

답변2

정확한 설명과는 별개로작성자: alce게다가 당신의 설명에는 또 다른 두 가지 오해가 숨겨져 있습니다 ps euf.

  1. 이 명령은 ps euf모든 프로세스를 나열하지는 않습니다. ps axeuf대신 이 명령을 사용해야 합니다.

  2. 보시다시피, 각 프로세스에 사용된 메모리의 백분율이 반올림되어 제공됩니다 0.1%. 따라서 이를 추가하면 잘못된 결과가 발생합니다. (대략) 모든 프로세스가 사용합니다.일부RAM – 더 적더라도 0.1%. 예를 들어, 이를 사용하는 20개의 프로세스가 있는 경우 가 아닌 까지 0.05%합산됩니다 .1%0%

관련 정보