1. 程式人生 > >檢視修改swap空間大小

檢視修改swap空間大小

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一致.