Redhat이 프로세스 메모리 사용량을 찾는 중

Redhat이 프로세스 메모리 사용량을 찾는 중

내가 볼때 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나 다른 디스크를 읽거나 쓸 필요성을 줄이거나 없애서 데이터 액세스 속도를 크게 높일 수 있습니다.

관련 정보