お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2007-11-28 15:39:45

yaskn
新しいメンバ
From: 東京都文京区
登録日: 2007-11-15

USBメモリをswap領域として使いたい

当方、Ubuntu 7.10 Gutsyを、Intel Pentium III 1.2GHz, 512MB SDRAM, 80GB IDE HDD (5400rpm)という環境で動かしています。Swap領域として、ハードディスクから約4GBを割り当てています。

OSインストール後、いろいろなソフトウェア、追加モジュール類をインストールしたため、FirefoxとGNOME端末を同時に立ち上げた時点ですでに、swap領域を仮想メモリとして使い始め、プログラムの体感的な処理速度(動作)が遅くなってしまうように感じます。

そこで、マシンの処理速度を向上すべく、以下の記事を参考に、[システム]>[システム管理]>[サービスの管理]で、当座不要と思われるサービスの起動(常駐)を解除しました。

「Linuxのメモリー・フットプリントを削減する」
http://www.ibm.com/developerworks/jp/li … emory.html

その後、free コマンドを使ってメモリの使用状況を調べると、次のようになっています。

コード:

yaskn@ubuntu:~$ free
             total       used       free     shared    buffers     cached
Mem:        514296     507952       6344          0       1840     332332
-/+ buffers/cache:     173780     340516
Swap:      3510192      34812    3475380

上記を見る限り、まだswap領域を消費している模様です。
おそらく、システム構成上メモリの消費量をこれ以上削減するのは難しく、マシンのスペック上物理メモリを増設することもできません。

そこで、一つのアイディアとして、Windows Vistaにおける「ReadyBoost」機能と同じように、ハードディスクよりもデータの転送速度が速い(かもしれない)USB 2.0 Hi-Speedポート(理論上の転送速度480Mbps)にUSB 2.0フラッシュメモリ(1GB)を挿して、swap専用領域として確保するのはどうかと思い至りました。

もし、このような方法をすでにお試しの方、swapテクノロジーにお詳しい方がいらっしゃいましたら、このような方法が有効(可能)かどうか、有効(可能)であればパーティションをどのように設定すべきか、ご教示いただければと思います。
よろしくお願いいたします。

最後の編集者: yaskn (2007-11-28 15:46:17)

オフライン

 

#2 2007-11-28 15:58:21

anoir
モデレータ
From: Berkeley, CA
登録日: 2007-01-13

Re: USBメモリをswap領域として使いたい

試したことはありませんがどうぞ。

http://ubuntuforums.org/showthread.php?t=395435

オフライン

 

#3 2007-11-28 16:32:39

hito
管理者
登録日: 2007-03-18

Re: USBメモリをswap領域として使いたい

cat /proc/meminfo の結果を見せて頂けると、もう少し使用メモリを
削る方法をアドバイスできるかもしれません。

なお、LinuxのSWAPはReadyBoostとアクセスパターンが異なるため
(というかReadyBoostのようにUSBメモリの特性を生かしているわけでは
ないですし、そもそもあれはSWAPとは違うものなので)、SWAPをUSBメモリに
作っても体感速度が改善するとは限りません。

メモリを足せない現状では厳しいかもしれませんが、HDDを最新世代のもの
にする方が体感速度の改善につながる可能性が高いように思います。

USB Memory類にSWAPを作る方法で何よりイヤなのが、動作中にUSBメモリが
抜かれるとクラッシュすることです……。

オフライン

 

#4 2007-11-28 17:24:36

yaskn
新しいメンバ
From: 東京都文京区
登録日: 2007-11-15

Re: USBメモリをswap領域として使いたい

anoirさん、hitoさん、アドバイスありがとうございます :rolleyes:

anoirさんが紹介してくださった ubuntuforums.org の記事を参考に、USBフラッシュメモリをSWAP領域に設定してみました。

以下に、http://ubuntuforums.org/showthread.php?t=395435 の記述を一部改変・翻訳して示します。

1) USBフラッシュメモリをUSBポートに挿す。
2) UbuntuがUSBフラッシュメモリをUSBデバイスとして自動認識(automount)するときは(通常、パスは /media/[USBメモリのボリューム名]となる)、端末でumountコマンドを実行してデバイスをアンマウントする。

コード:

sudo umount /media/[USBメモリのボリューム名]

3) [システム]>[設定]>[ハードウェア情報] でUSBフラッシュメモリを探し、デバイスへのパスを確認する(ここでは /dev/sdb1 とする)。
4) USBフラッシュメモリをSWAP領域に指定する。

コード:

sudo mkswap /dev/sdb1
sudo swapon -p 32767 /dev/sdb1

以上の操作を実行した上で、確認のために cat /proc/swaps コマンドを実行すると、次のような状況になっています。

コード:

root@ubuntu:~# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda4                               partition       3510192 32528   -1
/dev/sdb1                               partition       500712  0       32767

ここで、sda4はOSインストール時にハードディスク上に設定したswap領域です。
USBフラッシュメモリ(sdb1)に優先権(Priority)を与えたにもかかわらず、ハードディスクが先にswap領域として使われています。
質問1: この順番を変更するには、どのようなコマンドが必要ですか?

質問2: OSを再起動すると、USBフラッシュディスクが再び自動認識され、swapとして使うためにはその都度上記1)〜4)の操作を行う必要があります。この操作を省略して、毎回起動時にUSBフラッシュメモリを自動でswapとして認識させるには、どうすればいいですか?

ところで、hitoさん曰く、

cat /proc/meminfo の結果を見せて頂けると、もう少し使用メモリを
削る方法をアドバイスできるかもしれません。

メモリの使用状況は次の通りです。

コード:

root@ubuntu:~#  cat /proc/meminfo
MemTotal:       514296 kB
MemFree:          6364 kB
Buffers:           968 kB
Cached:         334084 kB
SwapCached:          0 kB
Active:         210916 kB
Inactive:       264852 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:       514296 kB
LowFree:          6364 kB
SwapTotal:     4010904 kB
SwapFree:      3976076 kB
Dirty:             152 kB
Writeback:           0 kB
AnonPages:      140740 kB
Mapped:          66284 kB
Slab:            12592 kB
SReclaimable:     5376 kB
SUnreclaim:       7216 kB
PageTables:       1996 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   4268052 kB
Committed_AS:   549100 kB
VmallocTotal:   507896 kB
VmallocUsed:      6304 kB
VmallocChunk:   501520 kB

いかがでしょうか?

オフライン

 

#5 2007-11-28 21:08:10

aqn
メンバ
登録日: 2007-11-26

Re: USBメモリをswap領域として使いたい

>質問2
起動時にswapを自動認識したい場合は /etc/fstab を編集して以下を追記してください。(危険なので慎重に)

コード:

/dev/sdb1 none swap sw pri=100 0 0

デバイスをUUIDで指定したい場合は

コード:

sudo vol_id -u /dev/sdb1

で、/dev/sdb1のUUIDを確認することができます。

最後の編集者: aqn (2007-11-28 21:38:38)

オフライン

 

#6 2007-11-29 10:05:21

hito
管理者
登録日: 2007-03-18

Re: USBメモリをswap領域として使いたい

たぶんswap outした状態でswaponしたからだと思います。
起動時点からUSBメモリがswap領域として認識されていれば
問題なく扱えるはずです。

/etc/fstabで、各swapパーティションにpri=(数字)を記述することで
priorityを指定できますので、念のため行ってください。
なので、aqnさんの投稿を見てUSBメモリのswapをfstabに書いた上で、
HDD側のpriorityを下げてください。

また、現状のmeminfoを見た限りではメモリの割り当て方針でどうにか
することはできなさそうです(余裕がなさすぎて、調整しても無駄)。

オフライン

 

#7 2007-12-05 12:23:04

yaskn
新しいメンバ
From: 東京都文京区
登録日: 2007-11-15

Re: USBメモリをswap領域として使いたい

ご教示ありがとうございます。

/etc/fstab に、swap用のUSBメモリ(/dev/sdb1)を追加しました。
fstabの該当部分を抜粋して示します。

コード:

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>   <dump>  <pass>
# 中略
# /dev/sda4
UUID=e58f9c37-8f76-4085-85c7-9bcd2ffd9fb2  none   swap  sw   pri=x 0 0
# USB flash memory inside for SWAP
# /dev/sdb1
UUID=C4C2-2295  none  swap  sw  pri=y  0  0

ここで、優先度(priority)x,yを設定する際に、(x=1,y=100)としても、(x=100,y=1)としても、
再起動後のswapディスクの状態(cat /proc/swaps)は次のようになります。

コード:

root@ubuntu:~# cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/sda4                               partition       3510192 34824    -1
/dev/sdb1                               partition       500712  0            -2

そこでおたずねしたいのですが、

質問3: 本来ならば、fstab のpri値が大きいほど優先順位が高くなるのですか。あるいは反対ですか。

質問4: cat /proc/swaps の「Priority」は、/dev/sda4(HDD) が /dev/sdb1(USB)に優先してswap領域として使用されているという解釈で正しいですか。

質問5: もし質問4の解釈が正しいとすれば、fstabのpri値を変えても常に/dev/sda4(HDD)が優先となるのはどうしてですか。/sda/sdb1(USB)を優先させるには、どのような設定が必要ですか。

再度のご教示、よろしくお願いいたします。

最後の編集者: yaskn (2007-12-05 12:24:01)

オフライン

 

#8 2007-12-08 00:07:17

aqn
メンバ
登録日: 2007-11-26

Re: USBメモリをswap領域として使いたい

ごめんなさい書き損じていました。

コード:

/dev/sdb1 none swap sw,pri=100 0 0

このように設定してみてください。

オフライン

 

Board footer

Powered by FluxBB