Linux - Swap
7697 ワード
swapの概要
swapって何?
まず、swapはハードディスク上の空間です.
次に、メモリに余分なスペースがない場合、一部のデータをswapスペースに交換することができます.つまり、メモリの一部のデータをハードディスク(HDD)に格納し、メモリ領域を解放します.これにより、解放されたメモリ領域は、他のデータを格納するために利用されるようになります.
このように,本来4 Gのメモリしかないが,swapに2 Gがあれば,使用可能なメモリは6 Gと考えられる.
しかし、ハードディスク(HDD)の速度がメモリよりも遅くなりすぎます.したがってswapはメモリの補完にすぎず,メモリ不足時のメモリの拡張であるが,メモリの代わりに使用することはできない.
swapとメモリの交換ポリシー
メモリが不足している場合、オペレーティングシステムは最も長く使用されていないメモリデータを選択し、swap空間に交換します.
なお、交換操作はオペレーティングシステムによって行われる.
いつswapを使うか
システムはどのような状況や条件でSwapパーティションの空間を使用しますか?実はLinuxはパラメータswappinessによって制御されています.もちろん複雑なアルゴリズムにも関連している.
このパラメータ値は0〜100であり、制御システムswapの使用度である.
0は、メモリデータをできるだけswapに移動しないようにカーネルに伝えます.すなわち、やむを得ない場合にのみそうします.100は、可能な限り、メモリにあまりアクセスしないデータをswapに移動するようにカーネルに伝えます.既定値は60です.注意:これはただの重み値であり、パーセンテージ値ではなく、システムカーネルの複雑なアルゴリズムに関連しています.
現在のシステムのswappinessの値を表示
cat/proc/sys/vm/swappiness
現在のシステムのswappinessの値を変更する
sudo sysctl vm.swappiness=10
上記sysctlで修正するswappiness値は、システムが再起動すると失効し、再起動してから有効になるには、プロファイル/etc/sysctlを変更する必要があります.confは、次の行を10に変更します.ファイルに行が見つからない場合は、ファイルの末尾に行を付ければいいです.
vm.swappiness=10
swap設定
swapサイズ
swapの構成がデスクトップシステムに役立つ以上、どのくらいのサイズのswapを構成するのが適切ですか?次はubuntuが提案したものです.物理メモリが1 G未満でスリープを必要としない場合、メモリと同じサイズのswap空間を設定すればよい.スリープが必要な場合は、物理メモリの2倍のサイズを設定することをお勧めしますが、最大値は2倍のメモリサイズ を超えないでください.物理メモリが1 Gより大きく、スリープを必要としない場合、推奨サイズはround(sqrt(RAM))であり、RAMは物理メモリサイズである.スリープが必要な場合、推奨サイズはRAM+round(sqrt(RAM))ですが、最大値はメモリサイズの2倍を超えないでください. 物理メモリサイズの2倍のswapスペースが足りない場合は、swap ではなくメモリを増やすことをお勧めします.
swapのオン/オフ
Linuxの下には2種類のswap空間があり、swapパーティションとswapファイルにはそれぞれの特徴があります.
swapパーティションの上にはファイルシステムがないため、カーネルが連続したディスク空間に直接アクセスすることに相当し、効率は相対的に高いが、swapパーティションは一般的にシステムをインストールする際に割り当てられているため、後期にスペースを削減したり拡張したりするのは不便である.
swapファイルは指定されたパーティションのファイルシステムの中に入っているので、ファイルシステムの性能の影響を受ける可能性がありますが、2.6以降のカーネルはswapファイルに対応する物理ディスクアドレスに直接アクセスできると言われています.ファイルシステムをスキップしてディスクに直接アクセスすることに相当しますが、swapファイルがディスク上の物理的な位置が連続していない場合、性能に悪影響を及ぼすことになります.しかし、swapファイルをいつでも追加および削除できる柔軟性の利点があります.
システムで構成されているswapの表示
複数のswapパーティションまたはファイルが構成されている場合、ここには複数の行があります.各行はシステムで使用されているswapパーティションまたはファイルを表し、以下は各フィールドの意味です. を表します. ではない. まで使用されていないことを示す. を設定できます.
システム内のswap in/outの表示
swap空間の占有量が多ければ多いほど一定の性能が低下するわけではありません.本当に性能に影響するのはswap inとoutの周波数です.周波数が高いほど、システムの性能に与える影響が大きくなります.vmstatコマンドでswap in/outの周波数を見ることができます.
swapパーティションの追加
swapパーティションを追加する前に、まず空きパーティションが必要です.新しいディスクであれば、fdiskを使用してswap用の新しいパーティションを作成できます.
注意:ディスクパーティションの操作には注意してください.うまくいかないと、データが失われ、システムが停止します.ディスクパーティション操作は本編で説明する内容ではないので、fdiskの使い方はここでは議論しません.
swapファイルの追加
swapファイルを追加するのは簡単で、パーティション操作ほどリスクもありません.
swapを閉じる
どのプロセスがSwapを使用しているかを調べる方法
次のコマンドで、すべてのプロセスのswap使用状況を表示できます.
cat/proc/$(pid)/smaps
プロセスswap占有メモリサイズスクリプトを表示します.
すべてのプロセスでswapを使用するスクリプトを表示します.
リファレンス linuxカーネルを調整し、swap を使用せずにメモリを使用します. linuxは、swap を使用したプロセスを表示します. Linux交換空間(swap space) Linux統計現在のすべてのプロセスがswapパーティションを使用する場合
swapって何?
まず、swapはハードディスク上の空間です.
次に、メモリに余分なスペースがない場合、一部のデータをswapスペースに交換することができます.つまり、メモリの一部のデータをハードディスク(HDD)に格納し、メモリ領域を解放します.これにより、解放されたメモリ領域は、他のデータを格納するために利用されるようになります.
このように,本来4 Gのメモリしかないが,swapに2 Gがあれば,使用可能なメモリは6 Gと考えられる.
しかし、ハードディスク(HDD)の速度がメモリよりも遅くなりすぎます.したがってswapはメモリの補完にすぎず,メモリ不足時のメモリの拡張であるが,メモリの代わりに使用することはできない.
swapとメモリの交換ポリシー
メモリが不足している場合、オペレーティングシステムは最も長く使用されていないメモリデータを選択し、swap空間に交換します.
なお、交換操作はオペレーティングシステムによって行われる.
いつswapを使うか
システムはどのような状況や条件でSwapパーティションの空間を使用しますか?実はLinuxはパラメータswappinessによって制御されています.もちろん複雑なアルゴリズムにも関連している.
このパラメータ値は0〜100であり、制御システムswapの使用度である.
0は、メモリデータをできるだけswapに移動しないようにカーネルに伝えます.すなわち、やむを得ない場合にのみそうします.100は、可能な限り、メモリにあまりアクセスしないデータをswapに移動するようにカーネルに伝えます.既定値は60です.注意:これはただの重み値であり、パーセンテージ値ではなく、システムカーネルの複雑なアルゴリズムに関連しています.
現在のシステムのswappinessの値を表示
cat/proc/sys/vm/swappiness
現在のシステムのswappinessの値を変更する
sudo sysctl vm.swappiness=10
上記sysctlで修正するswappiness値は、システムが再起動すると失効し、再起動してから有効になるには、プロファイル/etc/sysctlを変更する必要があります.confは、次の行を10に変更します.ファイルに行が見つからない場合は、ファイルの末尾に行を付ければいいです.
vm.swappiness=10
swap設定
swapサイズ
swapの構成がデスクトップシステムに役立つ以上、どのくらいのサイズのswapを構成するのが適切ですか?次はubuntuが提案したものです.
swapのオン/オフ
Linuxの下には2種類のswap空間があり、swapパーティションとswapファイルにはそれぞれの特徴があります.
swapパーティションの上にはファイルシステムがないため、カーネルが連続したディスク空間に直接アクセスすることに相当し、効率は相対的に高いが、swapパーティションは一般的にシステムをインストールする際に割り当てられているため、後期にスペースを削減したり拡張したりするのは不便である.
swapファイルは指定されたパーティションのファイルシステムの中に入っているので、ファイルシステムの性能の影響を受ける可能性がありますが、2.6以降のカーネルはswapファイルに対応する物理ディスクアドレスに直接アクセスできると言われています.ファイルシステムをスキップしてディスクに直接アクセスすることに相当しますが、swapファイルがディスク上の物理的な位置が連続していない場合、性能に悪影響を及ぼすことになります.しかし、swapファイルをいつでも追加および削除できる柔軟性の利点があります.
システムで構成されているswapの表示
dev@dev:~$ swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 524284 0 -1
# : , swap
複数のswapパーティションまたはファイルが構成されている場合、ここには複数の行があります.各行はシステムで使用されているswapパーティションまたはファイルを表し、以下は各フィールドの意味です.
Filename
:swapタイプがパーティションの場合、ここではパーティションのパス、swapタイプがファイルの場合、ここではファイルのパスType
:swapのタイプで、partitionはswapパーティションを表し、fileはswapファイルSize
:swapの大きさ、単位はkであり、ここで524284が示す差は512 M Used
:すでに使用されているサイズであり、ここで0はPriority
:優先度、優先度の高いswapが優先され、同じ優先度のswapが均一に使用され(round-robinアルゴリズム)、優先度は「swapon-p」コマンドでシステム内のswap in/outの表示
swap空間の占有量が多ければ多いほど一定の性能が低下するわけではありません.本当に性能に影響するのはswap inとoutの周波数です.周波数が高いほど、システムの性能に与える影響が大きくなります.vmstatコマンドでswap in/outの周波数を見ることができます.
# 2 ,si so swap in out
dev@ubuntu:~$ vmstat 2
procs------------memory--------------swap----io-----system-----------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 70232 75620 7940 209476 0 0 0 0 111 180 0 1 99 0 0
0 0 70232 75620 7940 209476 0 0 0 0 116 186 1 1 99 0 0
0 0 70228 75620 7940 209476 2 0 2 0 120 193 1 1 98 1 0
0 0 70228 75620 7940 209476 0 0 0 0 117 186 0 0 100 0 0
0 0 70228 75620 7940 209476 0 0 0 0 113 184 0 1 99 0 0
swapパーティションの追加
swapパーティションを追加する前に、まず空きパーティションが必要です.新しいディスクであれば、fdiskを使用してswap用の新しいパーティションを作成できます.
注意:ディスクパーティションの操作には注意してください.うまくいかないと、データが失われ、システムが停止します.ディスクパーティション操作は本編で説明する内容ではないので、fdiskの使い方はここでは議論しません.
# ,/dev/sdb fdisk
# /dev/sdb1
dev@dev:~$ sudo fdisk -l /dev/sdb
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 4194303 4192256 2G 83 Linux
# swap
dev@dev:~$ sudo mkswap /dev/sdb1
Setting up swapspace version 1, size = 2 GiB (2146430976 bytes)
no label, UUID=d69621de-618a-4bea-9a96-b8e8b0d0ea40
# swap,
dev@dev:~$ swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 524284 0 -1
#
dev@dev:~$ sudo swapon /dev/sdb1
# swap ,
dev@dev:~$ swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 524284 0 -1
/dev/sdb1 partition 2096124 0 -2
# swap , /etc/fstab
dev@dev:~$ sudo sh -c 'echo "/dev/sdb1 none swap sw 0 0" >> /etc/fstab'
# , , swap ,
dev@dev:~$ grep swap /etc/fstab
/dev/mapper/dev--vg-swap_1 none swap sw 0 0
/dev/sdb1 none swap sw 0 0
swapファイルの追加
swapファイルを追加するのは簡単で、パーティション操作ほどリスクもありません.
# 512M , swap ,
#fallocate , , ext2,
# dd :
#sudo dd if=/dev/zero of=/mnt/512MiB.swap bs=1024 count=524288
#fallocate dd :
#fallocate , , ,
# dd 512m 。
# fallocate , ,
dev@dev:~$ sudo fallocate -l 512m /mnt/512MiB.swap
# ,
dev@dev:~$ sudo chmod 600 /mnt/512MiB.swap
# swap
dev@dev:~$ sudo mkswap /mnt/512MiB.swap
#
dev@dev:~$ sudo swapon /mnt/512MiB.swap
# swap , file
# , swap /dev/dm-1 24K
dev@dev:~$ swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 524284 24 -1
/dev/sdb1 partition 2096124 0 -2
/mnt/512MiB.swap file 524284 0 -3
# free , swap ,
# 3G(3144692K)
dev@dev:~$ free
total used free shared buff/cache available
Mem: 500192 39112 9564 1996 451516 430820
Swap: 3144692 24 3144668
# swap , /etc/fstab
dev@dev:~$ sudo sh -c 'echo "/mnt/512MiB.swap none swap sw 0 0" >> /etc/fstab'
swapを閉じる
# swap
dev@dev:~$ sudo swapoff -a
#swapon -s ,free swap 0, swapoff
dev@dev:~$ swapon -s
dev@dev:~$ free
total used free shared buff/cache available
Mem: 500192 35924 348888 2004 115380 433924
Swap: 0 0 0
# /etc/fstab, , swap
# , /etc/fstab swap ( , )
どのプロセスがSwapを使用しているかを調べる方法
次のコマンドで、すべてのプロセスのswap使用状況を表示できます.
cat/proc/$(pid)/smaps
プロセスswap占有メモリサイズスクリプトを表示します.
grep "Swap" /proc/$pid/smaps | awk -F':' '{print $2}' | awk -F' ' 'BEGIN{sum=0}{if($1>0)sum+=$1} END{print sum}'
すべてのプロセスでswapを使用するスクリプトを表示します.
pids=$(cd /proc; ls | grep "^[0-9]")
for pid in $pids;
do
if [[ $pid -lt 100 ]];then
continue
fi
echo -n "pid=$pid====="
grep "Swap" /proc/$pid/smaps | awk -F':' '{print $2}' | awk -F' ' 'BEGIN{sum=0}{if($1>0)sum+=$1} END{print sum}'
done
リファレンス