swapの確認と作り方

swapとは

スワップ(swap)とはメインメモリ(RAM)の補助のためにHDD上(補助記憶装置)に作られる領域のことです。

RAM容量を超えたRAMへの書き込みがあった際にRAM上の使われていない領域をいったんスワップに書き出してRAM容量を確保します。

スワップがないとRAM容量の空きが無くなり、マシンがフリーズしたり停止したりしてしまいます。

参考 OOM Killer | 日経クロステック(xTECH)日経クロステック(xTECH)

大容量のSWAPを作ればRAM容量は小さくてもよい?

RAMはSSDやHDDと比べてGB当たりの価格が高いのでたくさん入れるのはコストがかかります。

スワップが有ればRAM容量を超えても良いのであればスワップがRAMの代わりになりそうな気がしますが、スワップはRAMの代わりにはなりません。

HDDはもちろん高速といわれるSSDでもRAMと比べれば低速であるため、コンピュータの動作はその分遅くなります。

あくまでswapは補助的な利用になります。

PCゲームやマルチメディア編集など大容量のデータを扱うようなアプリケーションは多くのRAMを使用するので動作要件として大容量のRAMが必要になります。こうしたアプリケーション利用時や同時に多くのアプリケーションを利用している時に動作が重い場合はRAMの増量でパフォーマンスが改善できる場合が多いです。

swapの最適なサイズ

一般的にswapの容量はメインメモリの容量と同じサイズ~2倍程度といわれています。しかし近年はメインメモリの容量が64GBなど大容量になっているため、同サイズもswapは必要ないです。

Redhatは推奨swapサイズとしては8GBを超えるRAMの場合は最低4GBを確保すればよいと言っています。

参考 第15章 swap領域 Red Hat Enterprise Linux 7 | Red Hat Customer PortalRed Hat Customer Portal

swapの確認 freeコマンド

swapを確認するにはfreeコマンドを使います。

# free
total used free shared buff/cache available
Mem: 948280 249580 37676 48336 661024 585836
Swap: 102396 46424 55972

swapの作成

swapはディスク上に作成できます。swapの作る場所としては

  • システムディスクのswap専用パーティション
  • swapファイルの設置(swap専用パーティションは不要)
  • 別ディスクにswap領域を作成

swapは専用の場所を用意してあげたほうが良いです。また、HDDとSSDが混在するような環境の場合はより高速なディスク上にswapを作成したほうがパーティションが高くなります。複数のディスクがある場合はswapを分散して設置したほうがパフォーマンスが向上します。swap分散はHDDなどの低速なディスクの場合は有効ですが、NVMeなどの高速なディスクにswapを設置する場合は体感できるパフォーマンスの向上は期待できないかもしれません。

swapファイルの作成

# dd if=/dev/zero of=/swapfile bs=1M count=1024

→1024MBのファイルをswapfileという名前で作成

 

# chmod 600 swapfile

→パーミッションの変更 root所有者以外に読み書きは許可しない

 

# mkswap /swapfile

→swapファイルのセットアップ

 

# swapon /swapfile

→swapの有効化

 

# vi /etc/fstab

/swapfile swap swap defaults 0 0

→再起動後もswapが有効になるようにfstabに記述

 

# free

→swapの確認

AWSのEC2インスタンスの多くはデフォルトではスワップがない状態なので自前で作成する必要があります。swap領域なしで利用しているとRAMがフルになったときに突然サービスが停止する場合があります。

コメントを残す

メールアドレスが公開されることはありません。