我正在使用 Ubuntu 10.04,其中每天都会运行许多后台作业。free
并且top
都报告 4GB 内存中的 3.9GB 正在使用中(其中约 90MB 是缓存/缓冲区)。
当我执行top
并ps aux
计算我的应用程序的内存使用量时,我得到大约 50%。
我在机器上只运行了 mysql、apache+passenger 和 redis。它还托管了一个 NFS 共享。
还有其他方法可以检查剩余的 49% 使用内存吗?并且无需重启服务器即可释放它?
这是输出free
:
total used free shared buffers cached
Mem: 4010060 3820592 189468 0 84208 194168
-/+ buffers/cache: 3542216 467844
Swap: 741372 741292 80
ps aux
:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 23864 472 ? Ss Feb02 0:13 /sbin/init
root 2 0.0 0.0 0 0 ? S Feb02 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S Feb02 2:32 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S Feb02 0:14 [migration/0]
root 5 0.0 0.0 0 0 ? S Feb02 0:00 [watchdog/0]
root 6 0.0 0.0 0 0 ? S Feb02 0:25 [migration/1]
root 7 0.0 0.0 0 0 ? S Feb02 1:30 [ksoftirqd/1]
root 8 0.0 0.0 0 0 ? S Feb02 0:00 [watchdog/1]
root 9 0.0 0.0 0 0 ? S Feb02 5:17 [events/0]
root 10 0.0 0.0 0 0 ? S Feb02 2:06 [events/1]
root 11 0.0 0.0 0 0 ? S Feb02 0:00 [cpuset]
root 12 0.0 0.0 0 0 ? S Feb02 0:00 [khelper]
root 13 0.0 0.0 0 0 ? S Feb02 0:00 [netns]
root 14 0.0 0.0 0 0 ? S Feb02 0:00 [async/mgr]
root 15 0.0 0.0 0 0 ? S Feb02 0:00 [pm]
root 17 0.0 0.0 0 0 ? S Feb02 0:45 [sync_supers]
root 18 0.0 0.0 0 0 ? S Feb02 0:47 [bdi-default]
root 19 0.0 0.0 0 0 ? S Feb02 0:00 [kintegrityd/0]
root 20 0.0 0.0 0 0 ? S Feb02 0:00 [kintegrityd/1]
root 21 0.0 0.0 0 0 ? S Feb02 0:47 [kblockd/0]
root 22 0.0 0.0 0 0 ? S Feb02 0:27 [kblockd/1]
root 23 0.0 0.0 0 0 ? S Feb02 0:00 [kacpid]
root 24 0.0 0.0 0 0 ? S Feb02 0:00 [kacpi_notify]
root 25 0.0 0.0 0 0 ? S Feb02 0:00 [kacpi_hotplug]
root 26 0.0 0.0 0 0 ? S Feb02 0:00 [ata_aux]
root 27 0.0 0.0 0 0 ? S Feb02 0:00 [ata_sff/0]
root 28 0.0 0.0 0 0 ? S Feb02 0:00 [ata_sff/1]
root 29 0.0 0.0 0 0 ? S Feb02 0:00 [khubd]
root 30 0.0 0.0 0 0 ? S Feb02 0:00 [kseriod]
root 31 0.0 0.0 0 0 ? S Feb02 0:00 [kmmcd]
root 32 0.0 0.0 0 0 ? S Feb02 0:07 [khungtaskd]
root 33 0.0 0.0 0 0 ? S Feb02 53:01 [kswapd0]
root 34 0.0 0.0 0 0 ? SN Feb02 0:00 [ksmd]
root 35 0.0 0.0 0 0 ? S Feb02 0:00 [aio/0]
root 36 0.0 0.0 0 0 ? S Feb02 0:00 [aio/1]
root 37 0.0 0.0 0 0 ? S Feb02 0:00 [ecryptfs-kthrea]
root 38 0.0 0.0 0 0 ? S Feb02 0:00 [crypto/0]
root 39 0.0 0.0 0 0 ? S Feb02 0:00 [crypto/1]
root 44 0.0 0.0 0 0 ? S Feb02 0:00 [pciehpd]
root 45 0.0 0.0 0 0 ? S Feb02 0:00 [scsi_eh_0]
root 46 0.0 0.0 0 0 ? S Feb02 0:00 [scsi_eh_1]
root 47 0.0 0.0 0 0 ? S Feb02 0:00 [kstriped]
root 49 0.0 0.0 0 0 ? S Feb02 0:00 [kmpathd/0]
root 50 0.0 0.0 0 0 ? S Feb02 0:00 [kmpathd/1]
root 51 0.0 0.0 0 0 ? S Feb02 0:00 [kmpath_handlerd]
root 52 0.0 0.0 0 0 ? S Feb02 0:00 [ksnapd]
root 53 0.0 0.0 0 0 ? S Feb02 0:00 [kondemand/0]
root 54 0.0 0.0 0 0 ? S Feb02 0:00 [kondemand/1]
root 55 0.0 0.0 0 0 ? S Feb02 0:00 [kconservative/0]
root 56 0.0 0.0 0 0 ? S Feb02 0:00 [kconservative/1]
root 246 0.0 0.0 0 0 ? S Feb02 2:58 [mpt_poll_0]
root 256 0.0 0.0 0 0 ? S Feb02 0:00 [mpt/0]
root 259 0.0 0.0 0 0 ? S Feb02 0:00 [scsi_eh_2]
root 278 0.0 0.0 0 0 ? S Feb02 0:08 [kdmflush]
root 282 0.0 0.0 0 0 ? S Feb02 0:00 [kdmflush]
root 297 0.0 0.0 0 0 ? S Feb02 0:36 [jbd2/dm-0-8]
root 298 0.0 0.0 0 0 ? S Feb02 0:00 [ext4-dio-unwrit]
root 299 0.0 0.0 0 0 ? S Feb02 0:00 [ext4-dio-unwrit]
root 338 0.0 0.0 17096 0 ? S Feb02 0:00 upstart-udev-bridge --daemon
root 340 0.0 0.0 147836 80 ? Ss Mar02 7:54 /usr/sbin/apache2 -k start
root 349 0.0 0.0 16880 0 ? S<s Feb02 0:00 udevd --daemon
root 554 0.0 0.0 0 0 ? S Feb02 0:00 [kpsmoused]
root 577 0.0 0.0 0 0 ? S Feb02 127:26 [vmmemctl]
root 657 0.0 0.0 0 0 ? S Feb02 126:36 [jbd2/sdb1-8]
root 658 0.0 0.0 0 0 ? S Feb02 0:00 [ext4-dio-unwrit]
root 659 0.0 0.0 0 0 ? S Feb02 0:00 [ext4-dio-unwrit]
root 788 0.0 0.0 6128 4 tty4 Ss+ Feb02 0:00 /sbin/getty -8 38400 tty4
root 791 0.0 0.0 6128 4 tty5 Ss+ Feb02 0:00 /sbin/getty -8 38400 tty5
root 793 0.0 0.0 49312 104 ? Ss Feb02 0:04 /usr/sbin/sshd
root 796 0.0 0.0 6128 4 tty2 Ss+ Feb02 0:00 /sbin/getty -8 38400 tty2
root 797 0.0 0.0 6128 4 tty3 Ss+ Feb02 0:00 /sbin/getty -8 38400 tty3
root 801 0.0 0.0 6128 4 tty6 Ss+ Feb02 0:00 /sbin/getty -8 38400 tty6
daemon 804 0.0 0.0 18932 0 ? Ss Feb02 0:02 atd
root 805 0.0 0.0 21128 156 ? Ss Feb02 0:47 cron
root 851 0.0 0.0 11360 304 ? Ss Feb02 15:18 /usr/sbin/irqbalance
root 1374 0.0 0.0 0 0 ? S Mar16 0:01 [jbd2/dm-2-8]
root 1375 0.0 0.0 0 0 ? S Mar16 0:00 [ext4-dio-unwrit]
root 1376 0.0 0.0 0 0 ? S Mar16 0:00 [ext4-dio-unwrit]
root 4088 0.0 0.0 0 0 ? S 11:58 0:00 [flush-251:0]
root 4329 0.0 0.0 70660 720 ? Ss 11:59 0:00 sshd: myuser [priv]
myuser 4347 0.0 0.0 70660 744 ? S 12:00 0:00 sshd: myuser@pts/1
myuser 4348 0.0 0.1 26028 6432 pts/1 Ss 12:00 0:00 -bash
munin 5150 0.0 0.0 39916 2040 ? Ss Apr08 8:04 /usr/sbin/munin-node
redis 8110 3.0 38.7 2244244 1553116 ? Ss May19 27:58 /usr/bin/redis-server /etc/redis/re
www-data 8433 0.0 0.0 148344 1928 ? S May17 0:01 /usr/sbin/apache2 -k start
www-data 8435 0.0 0.0 148336 2132 ? S May17 0:01 /usr/sbin/apache2 -k start
myuser 10115 0.0 0.0 26624 592 ? Ss 12:50 0:00 SCREEN -dR
myuser 10116 0.0 0.0 22808 2548 pts/0 Ss 12:50 0:00 /bin/bash
root 11410 0.0 0.0 27248 396 ? Ss Mar16 0:03 rpc.idmapd
root 11439 0.0 0.0 0 0 ? S Mar16 0:00 [lockd]
root 11440 0.0 0.0 0 0 ? S Mar16 0:03 [nfsd4]
root 11441 0.0 0.0 0 0 ? S Mar16 0:00 [nfsd4_callbacks]
root 11442 0.0 0.0 0 0 ? S Mar16 0:19 [nfsd]
root 11443 0.0 0.0 0 0 ? S Mar16 0:21 [nfsd]
root 11444 0.0 0.0 0 0 ? S Mar16 0:20 [nfsd]
root 11445 0.0 0.0 0 0 ? S Mar16 0:22 [nfsd]
root 11446 0.0 0.0 0 0 ? S Mar16 0:21 [nfsd]
root 11447 0.0 0.0 0 0 ? S Mar16 0:20 [nfsd]
root 11448 0.0 0.0 0 0 ? S Mar16 0:21 [nfsd]
root 11449 0.0 0.0 0 0 ? S Mar16 0:20 [nfsd]
root 11453 0.0 0.0 19032 316 ? Ss Mar16 0:09 /usr/sbin/rpc.mountd --manage-gids
myapp 11886 0.0 0.0 11984 196 pts/0 S+ 13:03 0:00 /bin/bash shared/worker.sh
myapp 11887 0.1 2.0 180724 81252 pts/0 S+ 13:04 0:03 resque-1.10.0: Forked 14745 at 1305
myapp 13085 0.1 2.0 195248 83180 ? S 13:17 0:03 Rails: /var/www/myapp-prd/current
myapp 14745 80.9 2.0 185908 80900 pts/0 R+ 13:29 19:09 resque-1.10.0: Processing myapp_import
www-data 15516 0.0 0.0 148224 1608 ? S May17 0:01 /usr/sbin/apache2 -k start
myuser 17579 0.0 0.0 17760 1220 pts/1 R+ 13:53 0:00 ps aux
mysql 18736 2.5 1.1 345568 46396 ? Ssl Mar16 2349:04 /usr/sbin/mysqld
daemon 21340 0.0 0.0 8304 4 ? Ss Mar16 0:00 portmap
statd 21564 0.0 0.0 14600 4 ? Ss Mar16 0:00 rpc.statd -L
root 21823 0.0 0.0 0 0 ? S Mar16 0:00 [rpciod/0]
root 21824 0.0 0.0 0 0 ? S Mar16 0:00 [rpciod/1]
www-data 22353 0.0 0.0 148484 1352 ? S May16 0:02 /usr/sbin/apache2 -k start
root 23471 0.0 0.0 0 0 ? S< Mar16 0:00 [kslowd000]
root 23472 0.0 0.0 0 0 ? S< Mar16 0:00 [kslowd001]
root 23473 0.0 0.0 0 0 ? S Mar16 0:00 [nfsiod]
www-data 27001 0.0 0.0 148496 1588 ? S May17 0:01 /usr/sbin/apache2 -k start
root 27365 0.0 0.0 23432 20 ? Ssl May15 0:00 PassengerWatchdog
root 27368 0.0 0.0 164064 1064 ? Sl May15 6:51 PassengerHelperAgent
root 27370 0.0 0.2 61904 8408 ? S May15 0:02 Passenger spawn server
nobody 27373 0.0 0.0 72172 28 ? Sl May15 0:01 PassengerLoggingAgent
www-data 27383 0.0 0.0 148356 1740 ? S May15 0:02 /usr/sbin/apache2 -k start
www-data 27384 0.0 0.0 148492 1444 ? S May15 0:02 /usr/sbin/apache2 -k start
www-data 27385 0.0 0.0 148224 1568 ? S May15 0:02 /usr/sbin/apache2 -k start
www-data 27386 0.0 0.0 148496 1860 ? S May15 0:02 /usr/sbin/apache2 -k start
root 29402 0.0 0.0 16876 4 ? S< Mar16 0:00 udevd --daemon
root 29800 0.0 0.0 0 0 ? S Mar16 0:00 [kdmflush]
root 29804 0.0 0.0 16876 4 ? S< Mar16 0:00 udevd --daemon
www-data 30231 0.0 0.0 148352 1904 ? S May16 0:02 /usr/sbin/apache2 -k start
root 31072 0.0 0.0 0 0 ? S May12 0:37 [flush-8:16]
syslog 31116 0.0 0.0 126028 388 ? Sl May12 0:04 rsyslogd -c4
root 32217 0.0 0.0 6128 4 tty1 Ss+ Mar17 0:00 /sbin/getty -8 38400 tty1
cat /proc/meminfo
:
MemTotal: 4010060 kB
MemFree: 155604 kB
Buffers: 48232 kB
Cached: 149308 kB
SwapCached: 42036 kB
Active: 1572044 kB
Inactive: 639616 kB
Active(anon): 1496792 kB
Inactive(anon): 517464 kB
Active(file): 75252 kB
Inactive(file): 122152 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 741372 kB
SwapFree: 64 kB
Dirty: 1532 kB
Writeback: 0 kB
AnonPages: 1972572 kB
Mapped: 7920 kB
Shmem: 96 kB
Slab: 24384 kB
SReclaimable: 12224 kB
SUnreclaim: 12160 kB
KernelStack: 1368 kB
PageTables: 11632 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2746400 kB
Committed_AS: 3150752 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 281448 kB
VmallocChunk: 34359449320 kB
HardwareCorrupted: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 12288 kB
DirectMap2M: 4132864 kB
我注意到的一件事是 的值很高Active(anon): 1496792 kB
,根据文档所述,其含义为:
最近使用的内存,除非绝对必要,否则通常不会被回收。
那里差不多有 1.5GB,这正常吗?我确实有非常长(永久)运行的进程(Resque),每次有作业进入时都会分叉。
答案1
检查 /proc/meminfo 输出,它将提供有关内存使用情况的更多详细信息。请参阅本文以解释这些术语,向下滚动到 meminfo 部分。
http://www.mjmwired.net/kernel/Documentation/filesystems/proc.txt