Chinaunix首页 | 论坛 | 博客
  • 博客访问: 253712
  • 博文数量: 48
  • 博客积分: 930
  • 博客等级: 准尉
  • 技术积分: 654
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-28 12:31
文章分类

全部博文(48)

文章存档

2013年(10)

2012年(20)

2011年(18)

我的朋友

分类: LINUX

2011-12-20 18:07:12

1  查看swap 空间大小(总计):
     # free -m          默认单位为k, -m 单位为M
                 total       used       free     shared    buffers     cached
  Mem:           377        180        197          0         19        110
  -/+ buffers/cache:         50        327
  Swap:          572          0        572

 

2  查看swap 空间(file(s)/partition(s)):

      包括 文件 和 分区 的详细信息

  # swapon -s
  等价于
  # cat /proc/swaps

 


3 添加交换空间
  两种选择:添加一个交换分区或添加一个交换文件。推荐你添加一个交换分区;不过,若你没有多少空闲空间可用,则添加交换文件。

    3.1 添加一个交换分区
  步骤如下:
      a  使用fdisk来创建交换分区(假设 /dev/sdb2 是创建的交换分区)
      b 使用 mkswap 命令来设置交换分区:
   # mkswap /dev/sdb2
      c 启用交换分区:
   # swapon /dev/sdb2
      d 写入/etc/fstab,以便在引导时启用:
      /dev/sdb2 swap swap defaults 0 0

    3.2 添加一个交换文件
  a  创建大小为512M的交换文件:
   # dd if=/dev/zero of=/swapfile1 bs=1024k count=512
  b 使用 mkswap 命令来设置交换文件:
   # mkswap /swapfile1
  c 启用交换分区:
   # swapon /swapfile1
  d 写入/etc/fstab,以便在引导时启用:
    /swapfile1 swap swap defaults 0 0

  新添了交换分区并启用它之后,请查看 cat /proc/swaps 或 free 命令的输出来确保交换分区已被启用了。

4 删除交换空间:
  a 禁用交换分区:
   # swapoff /dev/sdb2
  b 从 /etc/fstab 中删除项目;
  c 使用fdisk或yast工具删除分区。

  删除交换文件步骤同上。

 


--------------------------------------------------------------------------------

 

 

  # free -m
                 total       used       free     shared    buffers     cached
  Mem:           377        180        197          0         19        110
  -/+ buffers/cache:         50        327
  Swap:          572          0        572

 

Mem 行显示了从系统角度看来内存使用的情况, total是系统可用的内存大小, 数量上等于系统物理内存减去内核保留的内存.
buffers和cached是系统用做缓冲的内存. buffers与某个块设备关联, 包含了文件系统元数据, 并且跟踪了块的变化. cache只包含了文件本身.

-/+ buffers/cache  行则从用户角度显示内存信息, 可用内存从数量上等于mem行used列值减去buffers和cached内存的大小.

 因为buffers和cached是操作系统为加快系统运行而设置的, 当用户需要时, 可以只接为用户使用.

 

top 显示系统运行时的各进程动态、实时的状态(cpu、内存)

top 中有3个列 VIRT RES SHR, 标示了进程使用的内存情况.
VIRT 标识这个进程可以使用的内存总大小, 包括这个进程真实使用的内存, 映射过的文件, 和别的进程共享的内存等.
RES 标识这个这个进程真实占用内存的大小.
SHR 标识可以和别的进程共享的内存和库大小.

vmstat 显示内存的使用情况

这些命令都是从/proc/meminfo中读取内存信息.

关于/proc/meminfo中各行的含意, 在内核源代码的Documentation/filesystems/proc.txt文件中有叙述

系统的真实内存大小可以用 dmesg | grep [mM][eE][mM]看到

/proc/pid/status显示一个进程的详细状态
# cat /proc/5346/status
Name: bash
State: S (sleeping)
SleepAVG: 98%
Tgid: 5346
Pid: 5346
PPid: 5343
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 104 104 104 104
FDSize: 256
Groups: 6 24 29 44 104 113 1000 1001
VmPeak: 6528 kB
VmSize: 6528 kB
VmLck: 0 kB
VmHWM: 1976 kB
VmRSS: 1976 kB
VmData: 752 kB
VmStk: 84 kB
VmExe: 644 kB
VmLib: 1788 kB
VmPTE: 16 kB
Threads: 1
SigQ: 0/4294967295
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000

VmSize即为该进程内存总大小, 和top输出中的VIRT一致.

(虚拟内存好像不会自己释放,自己的机器是这样,除非重启)
用swapoff -a 关闭虚拟内存(释放)
再用swapon -a 打开虚拟内存(视自己的情况定,也可以不开启)
注:swapon / swapoff 必须要root权限才能使用

swapon swapoff 具体用法可以参考man 手册

附注:
(这是在网上收到的,供大家参考)
SWAP的大小和内存没有什么绝对关系,往往在物理内存充足的情况下,SWAP主要用于那些休眠进程的代码和暂时不被访问的数据段。而空出来的内存很大一部分用于硬盘访问的缓冲,所以即便有很大的内存,也还是会出现SWAP的情况,虽然你可以关闭SWAP,以保证偶尔的唤醒进程切换时的性能,但这通常是不会有什么影响的。

如果物理内存不够所有同时运行的进程访问的地址空间,通过提供一定数量的SWAP可以保证系统的运行(不至于内存不足),但这个时候如果实际内存缺乏的数量过大(持续用于切换的SWAP内存数量很多),毫无疑问,系统的性能将无法得到保证,甚至达到无法忍受而不能实际使用的情形。

 

阅读(1489) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~