Ubuntu で一時的にスワップをオフにする

投稿者: | 2018年2月17日

VersaProのパフォーマンスを最大限に引き出そうということで、スワップのUSBメモリへの退避をしてみました。

私が使っているVersaProの性能は大まかには以下のとおりです。

VY12M/C-3 Spec
CPU Celeron M 443 @ 1.2GHz
MEM 1.5GB
HDD 80GB @ 5400rpm

CPUパワーが無いので(Passmarkスコア253)、今まではCPUがボトルネックになっていました。
メモリも最大積載量の1.5GB積んでいますし、諦めていた感もありました。

発端

最近Webブラウザ利用時にスワップが多発・・・。
メインPCだと FirefoxやChromium、Vivaldi、Opera、Midori などを並行して使っています。
その感覚で使うとすぐにスワップしてしまいます。

そして、スワップすると当然レスポンス最悪…。
サーバ開発をしているとスワップした時点でNGですもんね。

新規予算は無しで

資金は新しいPC・サーバ類に割り当てたほうが費用対効果も高いので、なるべくお金をかけない方向で考えました。
VersaPro(VY12M/C-3)は幸いSATA接続なのでSSDに換装することも可能ですが、見送っています。
(SSDに換装したほうが素直、且つ効果を享受できるとは思います)

今回は、Windows XP時代に eBoostr用に購入したUSBメモリを使用しました。
もちろん、USB 2.0対応です。

  • eBoostr

base on eBoostrって何?

ハードウェアの交換は不要
eBoostr はUSBメモリやSDカードなどのフラッシュメモリや、空きメモリをHDDキャッシュとして利用して、PCのパフォーマンスを向上させるソフトウェアです。

よく使うアプリケーションを高速化
eBoostr はお使いのコンピュータの使用状況を解析し、頻繁に使用されるアプリケーションのキャッシュを自動作成します。
どのアプリケーションを頻繁に利用するかあらかじめわかっている場合には、ユーザーが自分で優先アプリケーションリストに登録することも可能です。

  • USBメモリ

base on RUF2-S1G-WH

SLCを採用し、且つ2チップ同時転送で高速化したUSB2.0メモリ

Linux には、レディブースト ってないの?

Windows だと Vista以降に実装された ReadyBoost という機能が使えます。
メモリが少ない場合に、メモリ − HDD間の緩衝材としてUSBメモリを使うというものです。

当然、メモリがボトルネックになっていることがパフォーマンス改善の最低限の条件です。

ReadyBoost の詳細は以下をご参照ください。

base on ReadyBoost について理解して ReadyBoost によってシステムのパフォーマンスが向上するかどうかを知る

Windows 7 では、Windows ReadyBoost がサポートされています。この機能では、外部 USB フラッシュ ドライブをハード ディスク キャッシュとして使用することで、ディスク読み取りのパフォーマンスを向上します。

予約する必要がある容量は、最低 256 MB です。キャッシュが大きいほどパフォーマンスは向上しますが、ReadyBoost キャッシュは、FAT32 ファイル システムでは 4 GB 以下、NTFS ファイル システムでは 32 GB 以下にする必要があります。

Windows 7 では、Windows SuperFetch アルゴリズムを使用して、キャッシュに保存する必要があるファイルを判断します。SuperFetch では、ユーザーがアクセスするファイル (システム ファイル、アプリケーション ファイル、文書など) を監視し、そのファイルを ReadyBoost キャッシュに事前に読み込みます。

次の条件下で ReadyBoost を使用すると、パフォーマンスが大幅に向上します。

  • コンピューターのハード ディスク ドライブの速度が遅い。プライマリ ハードディスクの Windows エクスペリエンス インデックス (WEI) のサブスコアが 4.0 より低いコンピューターでは、パフォーマンスが最も大きく向上します。
  • フラッシュ記憶域の読み込みが、高速かつランダムで、非順次に行われる。順次読み込みの速度はあまり重要ではありません。
  • フラッシュ記憶域が、高速なバスで接続されている。一般的に、USB メモリ カード リーダーの速度は十分ではありません。ですが、内蔵されているメモリ カード リーダーにフラッシュ メモリを接続すると、パフォーマンスが十分に向上する場合があります。

コンピューターのハード ディスクが高速である場合 (7200 RPM のディスクや 10000 RPM のディスクなど)、既にディスク I/O が多いので、パフォーマンスは最低限しか向上しません。

代替案

結果的にHDDのI/Oが減らせれば良いので、スワップ領域をUSBメモリ上に配置することにしました。
もちろん、事前キャッシュができるeBoostrやReadyBoostなどとは根本的に異なりますが、I/Oが減れば御の字です。

手動設定

今回はモバイル用PCということで常にUSBメモリが使えるとは限らないので、毎回手動で設定することにしました。
(再起動するとリセットされる)。
Gnomeパーティションエディタ「GParted」を使い、手動で設定します。

設定方法

  • USBメモリをPCに挿す
  • USBメモリをファイルシステム”linux-swap”でフォーマット 初回のみ
  • GParted で 既存のスワップ領域を選択(右クリック)し、”スワップを無効化”を選択
  • GParted で USBメモリを選択(右クリック)し、”スワップを有効化”を選択

以上で設定完了です。
※スワップする前に作業を実施したほうがスムーズに設定できます

効果

思ったより快適

使い方にもよると思いますが、以前よりもだいぶ快適になりました。

改善された点

  • ブラウザで多くのタブを開いてもスムーズに閲覧できる
    動作がスムーズになったため、ブラウザのタブを多く開いて(以前より多くのスワップを消費していても)問題なく閲覧ができるようになった
  • スワップ(I/O)してもPCがフリーズしたかのような挙動をしなくなった

改善されない点

  • ブラウザの動作自体はスムーズだが、(レンタリングによる)CPU負荷やN/W帯域などは如何ともしがたい
  • スワップがUSBメモリの容量を超えると、急にパフォーマンスに影響するので注意が必要
    ※私はこれで2GB(1GB×2本)体制にしました(最初は1GBで運用)

    • 以前はスワップが100MBを超えることはなかったのですが、スムーズに使えるので1GBを越えてしまいました...
  • 改善されないというか、物理的にUSBメモリの分だけ出っ張ります・・・

おまけ

「メモリ上にディスクを構成して、そこにスワップ(ページング)ファイルを設置する」という手もありますが、物理メモリが1.5GBなので今回はスルーしました。

base on http://e-words.jp/w/RAMディスク.html

RAMディスクとは、コンピュータのメインメモリ(RAM)の一部の領域を外部記憶装置のように利用すること。ハードディスクなどにアクセスするのと同じ方法でアクセスでき、読み書きの速度はRAMと変わらず高速だが、電源を落とすと内容が失われてしまう。

base on Linuxキーワード RAMディスク

RAMディスクとは,メイン・メモリーの一部を確保し,デバイス・ドライバ経由でアクセスすることによってあたかもディスク装置であるかのように利用できるメモリー領域を指します。
Linuxにおいては3種類のRAMディスク,(1)initrd,(2)容量が可変の/dev/shm,(3)固定容量の/dev/ramdiskなどが主に利用されています。