내가 볼때 cat /proc/meminfo
:
MemTotal: 1048576 kB
MemFree: 11136 kB
Buffers: 0 kB
Cached: 0 kB
SwapCached: 0 kB
Active: 0 kB
Inactive: 0 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 1048576 kB
LowFree: 11136 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 88 kB
Writeback: 0 kB
AnonPages: 0 kB
Mapped: 0 kB
Slab: 0 kB
PageTables: 0 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 0 kB
Committed_AS: 0 kB
VmallocTotal: 0 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
Hugepagesize: 2048 kB
이 작업을 수행 top
하고 메모리별로 정렬하면 다음이 표시됩니다.
%MEM TIME+ COMMAND
%22.9 0:44.11 java
% 0.1 0:04.57 init
% 2.9 0:02.52 /usr/local/cpan
% 0.3 0:00.50 sshd
% 1.5 0:00.14 mysqld
% 0.5 0:00.13 leechprotect
% 0.1 0:00.12 bash
% 0.4 0:00.11 httpd
% 0.3 0:00.07 queueprocd - wa
% 0.4 0:00.06 tailwatchd
% 0.8 0:00.02 cpsrvd-ssl
% 0.1 0:00.02 top
% 0.1 0:00.01 syslogd
% 0.4 0:00.01 named
% 0.1 0:00.00 udevd
% 0.0 0:00.00 klogd
% 0.0 0:00.00 courierlogger
% 0.1 0:00.00 authdaemond
% 0.0 0:00.00 authdaemond
% 0.0 0:00.00 authdaemond
% 0.1 0:00.00 sshd
% 0.1 0:00.00 xinetd
% 0.1 0:00.00 mysqld_safe
% 0.0 0:00.00 courierlogger
% 0.1 0:00.00 couriertcpd
% 0.1 0:00.00 exim
% 0.1 0:00.00 pure-ftpd
% 0.1 0:00.00 pure-authd
% 0.1 0:00.00 crond
% 0.0 0:00.00 atd
% 0.2 0:00.00 cPhulkd - proce
% 2.8 0:00.00 spamd child
% 0.8 0:00.00 cpdavd - accept
% 0.4 0:00.00 httpd
% 0.4 0:00.00 httpd
% 0.4 0:00.00 httpd
% 0.4 0:00.00 httpd
% 0.4 0:00.00 httpd
% 0.2 0:00.00 cpanellogd - sl
% 0.1 0:00.00 saslauthd
% 0.0 0:00.00 saslauthd
% 0.1 0:00.00 ssh-agent
실제로는 1000MB 중 900MB를 사용하는데 상단에 ~38% 사용되었다고 표시되는 이유는 무엇입니까? 각 프로세스가 사용하는 메모리 양을 어떻게 알 수 있나요?
답변1
Linux를 처음 사용하기 시작하면 메모리 사용량이 혼란스러울 수 있습니다. 일반적으로 Linux에서는 RAM을 프로세스용으로만 예약하는 것이 아니라 모든 RAM을 사용해야 한다는 관점이 있습니다.
따라서 RAM은 두 프로세스 모두에 사용되며 파일이 하드 드라이브에서 로드될 때 파일 캐시 역할을 합니다. free
다음 명령을 사용하면 이를 더 잘 볼 수 있습니다 .
# free output in MBs
$ free -m
total used free shared buffers cached
Mem: 7800 6724 1075 0 397 1952
-/+ buffers/cache: 4374 3425
Swap: 5823 27 5796
이는 ~7.8GB의 RAM이 있고 그 중 ~6.7GB가 사용 중이며 ~1GB의 여유 공간이 남아 있음을 보여줍니다.
Mem: 7800 6724 1075 0 397 1952
다음 줄은 실제로 무슨 일이 일어나고 있는지에 대한 아이디어를 제공합니다.
-/+ buffers/cache: 4374 3425
이 줄은 첫 번째 줄이 "사용됨"으로 보고된 ~6.7GB를 보여줍니다. 버퍼와 캐시를 혼합에서 제외하면 실제로는 ~4.4GB만 사용하고 있는 것입니다. 그래서 실제로는 ~3.4GB의 여유 메모리가 있습니다.
버퍼와 캐시는 성능 향상을 위해 커널이 HDD에서 RAM으로 로드하는 파일입니다.
에서 발췌linfo.org
데이터의 두 번째 줄은 -/+ buffers/cache로 시작하며 현재 시스템 버퍼 캐시에 전용으로 사용되는 실제 메모리의 양을 표시합니다. 이는 시스템 호출을 사용하여 수행되는 시스템 파일에서 액세스되는 모든 데이터가 이 캐시를 통과
read()
하기 때문에 응용 프로그램에 특히 의미가 있습니다.write()
이 캐시는 HDD나 다른 디스크를 읽거나 쓸 필요성을 줄이거나 없애서 데이터 액세스 속도를 크게 높일 수 있습니다.