Redhat encontra o uso de memória do processo [duplicado]

1

Quando eu vejo 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

quando eu faço top e ordeno por memória, vejo:

%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

Por que o top show ~ 38% usado quando na realidade ele usava 900mb de 1000mb? Como eu sei quanta memória cada processo usa?

    
por Sukanah 22.05.2013 / 03:49

1 resposta

1

O uso da memória pode ser um pouco confuso quando se inicia pela primeira vez com o Linux. Em geral, o Linux assume a perspectiva de que toda a RAM deve ser usada em vez de conservá-la apenas para processos.

Portanto, a RAM é usada para os dois processos e como um cache para os arquivos à medida que são carregados do disco rígido. Você pode ver isso melhor com o comando 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

Isso mostra que tenho ~ 7.8GB de RAM, dos quais ~ 6.7GB estão em uso, deixando ~ 1GB grátis, nesta linha:

Mem:          7800       6724       1075          0        397       1952

A próxima linha é aquela que ilumina o que realmente está acontecendo:

-/+ buffers/cache:       4374       3425

Esta linha mostra que o ~ 6.7GB está sendo reportado como "usado" pela primeira linha, se você tirar os buffers e cache do mix, estamos realmente usando apenas ~ 4.4GB. Então, na verdade eu realmente tenho ~ 3.4GB de RAM livre.

Os buffers e o cache são arquivos que foram carregados pelo Kernel do HDD para a RAM para melhorar o desempenho.

trecho de linfo.org

The second line of data, which begins with -/+ buffers/cache, shows the amount of physical memory currently devoted to system buffer cache. This is particularly meaningful with regard to application programs, as all data accessed from files on the system that are performed through the use of read() and write() system calls pass through this cache. This cache can greatly speed up access to data by reducing or eliminating the need to read from or write to the HDD or other disk.

    
por 22.05.2013 / 04:15