「Linuxのswapについて私が知っている二、三の事柄」の版間の差分

提供: UnixClassWiki
移動先: 案内検索
(swapの高速化)
(稼働中にswapを無効にする)
18行目: 18行目:
  
 
=== 稼働中にswapを無効にする ===
 
=== 稼働中にswapを無効にする ===
実メモリが十分にあり、特別な処理を既に終了させswapが必要なくなった場合、
+
実メモリが十分にあり、スワップを利用していたプロセスが既に終了しており、swapが必要なくなった場合、
 
swapoffをするとswapに使われている記憶装置から実メモリの方にページが移動し、
 
swapoffをするとswapに使われている記憶装置から実メモリの方にページが移動し、
swapが開放される。
+
swapが開放することができます。
またswaponを行えばswapが設定される。
+
再度swaponを行えばswapが設定されます。
柔軟にswapを利用する、あるいは止めることができる。
+
このように柔軟にswapを利用する、あるいは止めることが出来ます。
  
  
28行目: 28行目:
  
  
コマンドfreeを使い、スワップに使われている容量と、メモリ空き領域を確認し、スワップされているサイズがメモリ上に充分のるようであれば、swapoffを行うことでスワップが解消される。解消後はswaponで元のスワップ環境を復帰させておくことを忘れずに。
+
コマンドfreeを使い、スワップに使われている容量と、メモリ空き領域を確認し、スワップされているサイズがメモリ上に充分のるようであれば、swapoffを行うことでスワップが解消されます。
 +
ただし、スワップ領域上に吐き出されているものは使用頻度が少ないために吐き出されているのであって、このような形でスワップを解消したからといって全体のパフォーマンスが向上するというわけではありません。
  
 
=== swappiness ===
 
=== swappiness ===

2015年7月26日 (日) 10:19時点における版

Linuxのswapについて私が知っている二、三の事柄

swapの高速化

fstabでswapのプライオリティが設定できます。この数が多ければ多いほど優先される仕組みになっています。 一方で同じ優先順位であれば均等に使われます。 複数のハードディスク上にswapパーティションを取り、それを同じ優先順位で設定すると、 スワップの際に並列に使われるのでraid0のような効果をもたらすように出来ています。

下の例は4つのswapパーティションを使いswaponした状態を示しています。


スワップを用意した状態 /proc/swaps
スワップが使用中の状態 /proc/swaps


高速なSSDを複数用意し、その上にswapを設定し、 並列にアクセスできるような設定にすると、 かつてないような巨大かつ高速な仮想記憶が手に入ることになるでしょう。

稼働中にswapを無効にする

実メモリが十分にあり、スワップを利用していたプロセスが既に終了しており、swapが必要なくなった場合、 swapoffをするとswapに使われている記憶装置から実メモリの方にページが移動し、 swapが開放することができます。 再度swaponを行えばswapが設定されます。 このように柔軟にswapを利用する、あるいは止めることが出来ます。


コマンドfreeでメモリの利用状況を確認


コマンドfreeを使い、スワップに使われている容量と、メモリ空き領域を確認し、スワップされているサイズがメモリ上に充分のるようであれば、swapoffを行うことでスワップが解消されます。 ただし、スワップ領域上に吐き出されているものは使用頻度が少ないために吐き出されているのであって、このような形でスワップを解消したからといって全体のパフォーマンスが向上するというわけではありません。

swappiness

swappinessはkernel 2.6から入った機能で、スワップの発生する度合いのコントロールを行う。0から100までの数値で、0が最もスワップの発生が押さえられ、100は最もスワップが発生し易くなる。デフォルト値は60である。 [1]

# echo 99 > /proc/sys/vm/swappiness

脚注

  1. カーネルコードの vmscan.c を参照のこと。