使用Linux内存文件系统后系统内存统计方法

GeorgeTH 2013-03-17

【问题描述】
在Linux系统中,内存可以分出一部分空间作为磁盘来使用,称为Ramdisk。这部分内存空间具有高速读写特性,可以存储那些对磁盘IO要求较高的数据,显著的提升系统的服务性能。

Ramdisk分为两种,一种是固定空间大小的空间,跟硬盘分区完全一样,可以格式化并挂载使用;一种是以内存文件系统tmpfs的形式出现,可以根据需要扩充和缩小。这两种使用方式在kernel 2.4之后都得到了支持。

在使用tmpfs时,因为不是一次分配,且对内存分配的形式比较模糊,使得怎样计算系统整体内存使用情况成为一个问题。

【观察和解决】
在使用Ubuntu系统时,对使用Ramdisk的形式做了简单测试,发现在使用和不使用Ramdisk的时候有奇怪的问题发生。具体如下:

内存分区无数据时的情况如下,

  root@peter:~# free -m
                total      used      free    shared    buffers    cached
  Mem:          3851      2222      1629          0        63        847
  -/+ buffers/cache:      1310      2540
  Swap:        1925          0      1925
  root@peter:~# df -h
  Filesystem      Size  Used Avail Use% Mounted on
  /dev/sda3      125G  4.9G  114G  5% /
  udev            1.9G  4.0K  1.9G  1% /dev
  tmpfs          771M  888K  770M  1% /run
  none            5.0M    0  5.0M  0% /run/lock
  none            1.9G  7.4M  1.9G  1% /run/shm
  向内存分区写入1G数据时的情况如下,
  root@peter:/run/shm# dd if=/dev/zero ibs=1M count=1024 of=./test.img
  1024+0 records in
  2097152+0 records out
  1073741824 bytes (1.1 GB) copied, 2.22898 s, 482 MB/s
  root@peter:/run/shm# df -h
  Filesystem      Size  Used Avail Use% Mounted on
  /dev/sda3      125G  4.9G  114G  5% /
  udev            1.9G  4.0K  1.9G  1% /dev
  tmpfs          771M  888K  770M  1% /run
  none            5.0M    0  5.0M  0% /run/lock
  none            1.9G  1.1G  895M  54% /run/shm
  root@peter:/run/shm# free -m
                total      used      free    shared    buffers    cached
  Mem:          3851      3245        605          0        64      1871
  -/+ buffers/cache:      1309      2541
  Swap:        1925          0      1925

相关推荐