dl -hl :查看磁盘空间用度 。/dev/sda1 sd硬盘的第一个硬盘(a)的第一个分区(1)
========================================
du -sh dir:返回该目录大小
========================================
查看虚拟内存使用情况:
# vmstat
Procs
r: 等待运行的进程数 b: 处在非中断睡眠状态的进程数 w: 被交换出去的可运行的进程数。
Memory
swpd: 虚拟内存使用情况,单位:KB free: 空闲的内存,单位KB
buff: 被用来做为缓存的内存数,单位:KB
Swap
si: 从磁盘交换到内存的交换页数量,单位:KB/秒 so: 从内存交换到磁盘的交换页数量,单位:KB/秒
IO
bi: 发送到块设备的块数,单位:块/秒 bo: 从块设备接收到的块数,单位:块/秒
System
in: 每秒的中断数,包括时钟中断 cs: 每秒的环境(上下文)切换次数
CPU 按 CPU 的总使用百分比来显示
us: CPU 使用时间 sy: CPU 系统使用时间 id: 闲置时间
==========================================
原文:http://bbs.chinaunix.net/thread-1857784-1-1.html
Linux内存使用情况分析
摘要:在Linux系统下,系统所占用的内存不像windows那样明了,对于大多数用户而言是否应该增加内存就没有依据。本文将较为深入的分析Linux内存的占用情况,为系统的使用者提供较为准确的内存使用数据。
1.linux系统使用了多少内存
在系统使用的情况下,我们可以使用free,top,vmstat,或是cat /proc/meminfo来得到系统内存的使用数据,但是显示给我们的结果也往往令我们失望:
peter@newboy:~$ free
total used free shared buffers cached
Mem: 3096648 2124360 972288 0 46756 421844
-/+ buffers/cache: 1655760 1440888
Swap: 0 0 0
上面输出结果中哪一个数据能够准确的反应当前情况下系统使用内存的值,恐怕大家都有点糊涂。
peter@newboy:~$top
top - 16:08:07 up 2:03, 4 users, load average: 0.28, 0.37, 0.28
Tasks: 166 total, 2 running, 164 sleeping, 0 stopped, 0 zombie
Cpu(s): 7.6%us, 21.5%sy, 6.9%ni, 60.7%id, 1.0%wa, 1.0%hi, 1.3%si, 0.0%st
Mem: 3096648k total, 2126136k used, 970512k free, 46988k buffers
Swap: 0k total, 0k used, 0k free, 422992k cached
这组数据中哪一个可以反应当前系统的占用情况呢,同样让人糊涂。以上两组数据都可以看出内存总量是3096648k,但是使用量很显然不是 2126136k,因为运行的程序占用的内存不可能有这么大。那么是free中显示的1655760K吗?这个只是包含了真正使用的内存,但是也不能完整的反映使用的内存的大小。
让我们再看看vmstat 中的数据吧
peter@newboy:~$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
3 0 0 966296 47452 425028 0 0 48 13 775 475 10 6 84 1
同样令人糊涂。还有cat /proc/meminfo的数据(只截取了其中一部分):
root@newboy:~# cat /proc/meminfo
MemTotal: 3096648 kB
MemFree: 964132 kB
Buffers: 47752 kB
Cached: 425412 kB
SwapCached: 0 kB
Active: 1575616 kB
Inactive: 316444 kB
Active(anon): 1428260 kB
Inactive(anon): 16 kB
Active(file): 147356 kB
Inactive(file): 316428 kB
这些都有点令人糊涂,究竟当前系统使用了多少内存呢?
2.究竟使用了多少内存
这些命令的本身都是很好的查看内存的工具,给出了很好的参考价值,但是就是没有给出一个较为直观的内存占用的信息。这些工具显示的数据没有错误,造成不能准确的显示Linux下系统程序占用内存的真正原因是Linux本身的特性决定的。
众所周知,Linux系统本身的特点是会将大量的工作在内存中进行,这样就能减少系统的I/O时间。故有很多数据和使用过的结构在内存中都会保留,以备程序重新运行所用。linux在统计使用的内存的过程中包括了buffer的内存和cached的内存。前者是那些即将写到磁盘的数据的临时存放区,后者是那些将继续被cpu读取的数据的存放区。所以使用内存的情况包括:程序使用的内存的大小,还包括linux buffer的部分和cache的部分。从free的命令结果中也可以看出来:
root@newboy:/proc/1593# free -m
total used free shared buffers cached
Mem: 3023 901 2122 0 50 417
-/+ buffers/cache: 434 2589
Swap: 0 0 0
从上面的数据可以看出来901=50+417+434 这个数据说明被使用的内存中包含了buffer的内容也包含了cached的内容。当然实际的使用内存的数量还不全是434M内存,
上面的内存数据还可以得到一下的等式:3023=901+2122, 3023=50+417+434+2122, 3023=434+2589。这些等式说明了linux使用内存的情况