「Firefox/プロファイルを RAM に置く」の版間の差分
(→systemd: 情報を更新) |
(同期) |
||
(2人の利用者による、間の2版が非表示) | |||
2行目: | 2行目: | ||
[[de:Firefox-Profile in Ramdisk auslagern]] |
[[de:Firefox-Profile in Ramdisk auslagern]] |
||
[[en:Firefox/Profile on RAM]] |
[[en:Firefox/Profile on RAM]] |
||
− | [[ru:Firefox on RAM]] |
+ | [[ru:Firefox (Русский)/Profile on RAM]] |
− | メモリが余っている場合、[[Firefox]] のキャッシュやプロファイルを RAM に |
+ | メモリが余っている場合、[[Firefox]] のキャッシュやプロファイルを RAM に置くことで大きなメリットが得られます。一部を選択するだけでも効果はありますが、全てを RAM に配置することで標準設定に比べて Firefox のレスポンスをさらに良くすることができます。以下のようなメリットがあります: |
− | *ドライブの読み書きが減る。 |
||
− | *レスポンス性が高まる。 |
||
− | *Firefox のクイック検索や履歴閲覧などの操作がほとんど瞬間的になる。 |
||
+ | * ドライブへの読み書きが減る。 |
||
− | [[tmpfs]] を使うことで Firefox で RAM を利用することができます。 |
||
+ | * レスポンス性が高まる。 |
||
+ | * クイック検索や履歴閲覧など、Firefox での多く操作がほとんど瞬間的になる。 |
||
+ | |||
+ | [[Tmpfs]] をこの用途に使用することができます。 |
||
RAM 上のデータはシャットダウンすると消えてしまうため、(プロファイルを配置する場合など) データが消えないようにするには、システムがシャットダウンする前にドライブにデータを同期するスクリプトが必要になります。一方、キャッシュだけを再配置する場合は簡単に行うことができ、再起動するたびに Firefox のキャッシュが消去されるかわりに速度が少しだけ速くなります。 |
RAM 上のデータはシャットダウンすると消えてしまうため、(プロファイルを配置する場合など) データが消えないようにするには、システムがシャットダウンする前にドライブにデータを同期するスクリプトが必要になります。一方、キャッシュだけを再配置する場合は簡単に行うことができ、再起動するたびに Firefox のキャッシュが消去されるかわりに速度が少しだけ速くなります。 |
||
− | {{ |
+ | {{Note|キャッシュは Firefox のデフォルトプロファイルフォルダ ({{ic|/home/$USER/.mozilla/firefox/}}) とは'''別に'''保存されています: デフォルトではキャッシュは {{ic|/home/$USER/.cache/mozilla/firefox/<profile>}} にあります。これは Chromium などの他のブラウザも同じです。そのため、[[#ツールを使ってプロファイルを RAM に配置]] や [[#手動でプロファイルを RAM に配置]] セクションでは、キャッシュの再配置や同期については'''扱わず'''、プロファイルの設定だけを対象としています。詳しくは [[Profile-sync-daemon]] の最初のノートを見て下さい。[[Anything-sync-daemon]] を使うことでキャッシュフォルダでも同じように再配置ができます。}} |
− | ==キャッシュだけを RAM に再配置== |
+ | == キャッシュだけを RAM に再配置 == |
+ | [[Firefox/設定#ディスクキャッシュの無効化]] を見てください。 |
||
− | ページがロードされると、またページを表示するときにダウンロードする必要がないようにページのキャッシュが作成されます。メールやニュース、メッセージ、添付ファイルなども同じようにキャッシュされます。Firefox の設定を変更することでキャッシュストレージとして RAM だけを使用するようにすることが可能です。設定ファイルやブックマーク、拡張などは通常通りにドライブに書き込まれます。設定するには: |
||
− | * アドレスバーで {{Ic|about:config}} を開いて下さい。 |
||
− | * {{Ic|browser.cache.disk.enable}} を "false" に設定 (行をダブルクリック)。 |
||
− | * {{Ic|browser.cache.memory.enable}} が "true" に設定されていることを確認 ([http://kb.mozillazine.org/Browser.cache.memory.enable デフォルト値])。 |
||
− | * {{Ic|browser.cache.memory.capacity}} エントリを追加 (右クリック->新規作成->整数値) して、使用したいメモリの量を KB で設定。もしくは -1 に設定して [http://kb.mozillazine.org/Browser.cache.memory.capacity#-1 自動的に] キャッシュのサイズを選択してもらう (エントリを追加しなかった場合も -1 に値は設定されます)。 |
||
− | この設定の欠点は、ブラウザがクラッシュしたり再起動すると現在閲覧しているウェブページの中身が消失してしまうということ、そしてユーザーごとに設定が必要になるということです。 |
||
− | |||
− | 前者の欠点については [[anything-sync-daemon]] などの定期的に同期を行うスクリプトを使うことで、定期的にキャッシュをドライブにコピーすることで対処できます。 |
||
== ツールを使ってプロファイルを RAM に配置 == |
== ツールを使ってプロファイルを RAM に配置 == |
||
+ | |||
− | ブラウザプロファイルを [[tmpfs]] に再配置すると一般的にブラウザの反応がとても良くなります。他にもドライブの I/O 操作が減らせるというメリットがあり、[[SSD#頻繁に使うファイルを RAM に移動する|SSD]] の場合は特に意味があります。 |
||
+ | ブラウザプロファイルを [[tmpfs]] に再配置すると一般的にブラウザの反応がとても良くなります。他にもドライブへの I/O 操作が減らせるというメリットがあり、[[パフォーマンスの向上#ディスクの書き込みを表示する|SSD の場合は特に意味があります]]。 |
||
できるかぎり信頼性があって使いやすい、活発に開発されているスクリプトを使って下さい。AUR から複数のスクリプトをインストールできます: |
できるかぎり信頼性があって使いやすい、活発に開発されているスクリプトを使って下さい。AUR から複数のスクリプトをインストールできます: |
||
− | *{{Pkg|profile-sync-daemon}} - 詳しくは [[Profile-sync-daemon]] の記事を参照してください。 |
+ | * {{Pkg|profile-sync-daemon}} - 詳しくは [[Profile-sync-daemon]] の記事を参照してください。 |
− | *{{AUR|firefox-sync}} - 1つのプロファイルを持つユーザーに最適です |
+ | * {{AUR|firefox-sync}} - 1つのプロファイルを持つユーザーに最適です。下記のものと似たスクリプトと systemd サービスが使用されています。 |
== 手動でプロファイルを RAM に配置 == |
== 手動でプロファイルを RAM に配置 == |
||
+ | |||
=== はじめに === |
=== はじめに === |
||
+ | |||
− | Firefox のプロファイルを破壊してしまう前に、後で復元できるようにバックアップを作成しておいてください。{{Ic|tar}} を使ってバックアップを作成できます ({{Ic|xyz.default}} は適当なファイルに置き換えてください): |
||
+ | Firefox のプロファイルを破壊しまう可能性があるので、後で復元できるようにバックアップを作成しておいてください。まず、{{ic|about:profiles}} を開いて、どのプロファイルが使用されているかを確認して、アクティブなプロファイルの名前を調べてください。{{ic|tar}} を使ってバックアップを作成してください (以下の '''{{ic|xyz.default}}''' の部分は適切な名前に置き換えてください): |
||
− | $ tar zcvfp ~/firefox_profile_backup.tar.gz ~/.mozilla/firefox/''xyz.default'' |
||
+ | |||
+ | $ tar zcvfp ~/firefox_profile_backup.tar.gz ~/.mozilla/firefox/'''xyz.default''' |
||
=== スクリプト === |
=== スクリプト === |
||
− | <small>''ソース: [http://www.verot.net/firefox_tmpfs.htm verot.net の Speed up Firefox with tmpfs]''</small> |
||
+ | <small>''[https://www.verot.net/firefox_tmpfs.htm verot.net の Speed up Firefox with tmpfs] から引用''</small> |
||
− | スクリプトは最初に Firefox のプロファイルを新しい場所に移動して、{{ic|/dev/shm}} にサブディレクトリを作成して、ソフトリンクを作成し、それからプロファイルの中身をそこに配置します。上と同じように、斜体の部分は適当に置き換えて下さい。絶対に変える必要があるのは {{Ic|xyz.default}} です。 |
||
+ | |||
+ | このスクリプトは、最初に Firefox のプロファイルを固定の新しい場所に移動して、{{ic|/dev/shm}} にサブディレクトリを作成して、そのディレクトリへのソフトリンクを作成し、それからプロファイルの中身をそこに配置します。先と同じように、この記事では、太文字 '''{{ic|xyz.default}}''' の部分は Firefox のプロファイルフォルダの名前に置き換えてください。絶対に置き換える必要があるのは '''{{ic|xyz.default}}''' だけです。 |
||
+ | |||
+ | [[rsync]] がインストールされていることを確認して、以下を[[作成]]してください: |
||
+ | {{hc|~/.local/bin/firefox-sync.sh|2= |
||
− | [[rsync]] をインストールして以下のようなスクリプトを {{ic|~/bin/firefox-sync}} に保存してください: |
||
− | {{hc|firefox-sync|2= |
||
#!/bin/sh |
#!/bin/sh |
||
− | static='' |
+ | static=''static-$1'' |
− | link='' |
+ | link=''$1'' |
− | volatile=''/dev/shm/firefox-$USER'' |
+ | volatile=''/dev/shm/firefox-$1-$USER'' |
IFS= |
IFS= |
||
set -efu |
set -efu |
||
+ | |||
− | <nowiki> |
||
cd ~/.mozilla/firefox |
cd ~/.mozilla/firefox |
||
71行目: | 71行目: | ||
touch $link/.unpacked |
touch $link/.unpacked |
||
fi |
fi |
||
− | </nowiki> |
||
}} |
}} |
||
− | + | スクリプトに[[実行可能属性]]を付与し、その後で、以下を実行してください (以下は Firefox を閉じて、スクリプトをテストします): |
|
+ | |||
$ killall firefox firefox-bin |
$ killall firefox firefox-bin |
||
− | $ |
+ | $ ls ~/.mozilla/firefox/ |
− | $ ~/bin/firefox-sync |
+ | $ ~/.local/bin/firefox-sync.sh '''xyz.default''' |
Firefox を再度立ち上げて結果を確認してください。二度目の実行時、スクリプトはプロファイルをディスクにコピーして RAM のプロファイルを保全します。 |
Firefox を再度立ち上げて結果を確認してください。二度目の実行時、スクリプトはプロファイルをディスクにコピーして RAM のプロファイルを保全します。 |
||
+ | |||
− | ===自動化=== |
||
+ | === 自動化 === |
||
+ | |||
プロファイルの同期を忘れると酷いことになるので、同期は自動化するのが合理的でしょう。 |
プロファイルの同期を忘れると酷いことになるので、同期は自動化するのが合理的でしょう。 |
||
==== systemd ==== |
==== systemd ==== |
||
− | + | 以下のスクリプトを[[作成]]してください: |
|
{{hc|~/.config/systemd/user/firefox-profile@.service|2= |
{{hc|~/.config/systemd/user/firefox-profile@.service|2= |
||
102行目: | 104行目: | ||
}} |
}} |
||
− | 次に、[[daemon-reload]] して {{ic|firefox-profile@'''xyz.default'''.service}} [[ |
+ | 次に、[[daemon-reload]] して {{ic|firefox-profile@'''xyz.default'''.service}} [[ユーザーユニット]]を[[起動/有効化]]してください。 |
+ | |||
+ | ==== cron ジョブ ==== |
||
+ | |||
+ | {{ic|crontab}} を使ってユーザの [[cron]] テーブルを操作してください: |
||
− | ====cron ジョブ==== |
||
− | {{Ic|crontab}} を使ってユーザーの [[cron]] テーブルを操作してください: |
||
$ crontab -e |
$ crontab -e |
||
− | 30分ごとにスクリプトを実行する行を追加: |
+ | 30分ごとにスクリプトを実行するには以下の行を追加してください: |
+ | |||
− | */30 * * * * ''~/bin/firefox-sync'' |
||
+ | */30 * * * * ~/.local/bin/firefox-sync.sh '''xyz.default''' |
||
− | もしくは2時間ごとにスクリプトを実行する行を追加: |
||
+ | |||
− | 0 */2 * * * ''~/bin/firefox-sync'' |
||
+ | または、2時間ごとにスクリプトを実行するには: |
||
+ | |||
+ | 0 */2 * * * ~/.local/bin/firefox-sync.sh '''xyz.default''' |
||
==== ログイン/ログアウト時に同期 ==== |
==== ログイン/ログアウト時に同期 ==== |
||
− | [[bash]] を使っている場合、ログイン/ログアウトファイルに |
+ | [[bash]] を使っている場合、以下のスクリプトをログイン/ログアウトファイルに追加してください: |
$ echo 'bash -c "~/.local/bin/firefox-sync.sh '''xyz.default''' > /dev/null &"' | tee -a ~/.bash_logout ~/.bash_login |
$ echo 'bash -c "~/.local/bin/firefox-sync.sh '''xyz.default''' > /dev/null &"' | tee -a ~/.bash_logout ~/.bash_login |
||
121行目: | 128行目: | ||
{{Note|{{ic|~/.bash_login}} ではなく {{ic|~/.bash_profile}} を使うほうが良いでしょう。両方のファイルが存在して読み込むことができる場合、bash は後者だけを読み込みます。}} |
{{Note|{{ic|~/.bash_login}} ではなく {{ic|~/.bash_profile}} を使うほうが良いでしょう。両方のファイルが存在して読み込むことができる場合、bash は後者だけを読み込みます。}} |
||
− | [[zsh]] の場合は、代わりに {{ic|~/.zlogin}} と {{ic|~/.zlogout}} を使用します |
+ | [[zsh]] の場合は、代わりに {{ic|~/.zlogin}} と {{ic|~/.zlogout}} を使用します: |
$ echo 'bash -c "~/.local/bin/firefox-sync.sh '''xyz.default''' > /dev/null &"' | tee -a ~/.zlog{in,out} |
$ echo 'bash -c "~/.local/bin/firefox-sync.sh '''xyz.default''' > /dev/null &"' | tee -a ~/.zlog{in,out} |
||
− | ==参照== |
+ | == 参照 == |
+ | |||
− | * [[Tmpfs]] |
||
+ | * [[tmpfs]] |
||
+ | |||
+ | {{TranslationStatus|Firefox/Profile on RAM|2023-09-17|784460}} |
2023年9月17日 (日) 07:38時点における最新版
メモリが余っている場合、Firefox のキャッシュやプロファイルを RAM に置くことで大きなメリットが得られます。一部を選択するだけでも効果はありますが、全てを RAM に配置することで標準設定に比べて Firefox のレスポンスをさらに良くすることができます。以下のようなメリットがあります:
- ドライブへの読み書きが減る。
- レスポンス性が高まる。
- クイック検索や履歴閲覧など、Firefox での多く操作がほとんど瞬間的になる。
Tmpfs をこの用途に使用することができます。
RAM 上のデータはシャットダウンすると消えてしまうため、(プロファイルを配置する場合など) データが消えないようにするには、システムがシャットダウンする前にドライブにデータを同期するスクリプトが必要になります。一方、キャッシュだけを再配置する場合は簡単に行うことができ、再起動するたびに Firefox のキャッシュが消去されるかわりに速度が少しだけ速くなります。
目次
キャッシュだけを RAM に再配置
Firefox/設定#ディスクキャッシュの無効化 を見てください。
ツールを使ってプロファイルを RAM に配置
ブラウザプロファイルを tmpfs に再配置すると一般的にブラウザの反応がとても良くなります。他にもドライブへの I/O 操作が減らせるというメリットがあり、SSD の場合は特に意味があります。
できるかぎり信頼性があって使いやすい、活発に開発されているスクリプトを使って下さい。AUR から複数のスクリプトをインストールできます:
- profile-sync-daemon - 詳しくは Profile-sync-daemon の記事を参照してください。
- firefox-syncAUR - 1つのプロファイルを持つユーザーに最適です。下記のものと似たスクリプトと systemd サービスが使用されています。
手動でプロファイルを RAM に配置
はじめに
Firefox のプロファイルを破壊しまう可能性があるので、後で復元できるようにバックアップを作成しておいてください。まず、about:profiles
を開いて、どのプロファイルが使用されているかを確認して、アクティブなプロファイルの名前を調べてください。tar
を使ってバックアップを作成してください (以下の xyz.default
の部分は適切な名前に置き換えてください):
$ tar zcvfp ~/firefox_profile_backup.tar.gz ~/.mozilla/firefox/xyz.default
スクリプト
verot.net の Speed up Firefox with tmpfs から引用
このスクリプトは、最初に Firefox のプロファイルを固定の新しい場所に移動して、/dev/shm
にサブディレクトリを作成して、そのディレクトリへのソフトリンクを作成し、それからプロファイルの中身をそこに配置します。先と同じように、この記事では、太文字 xyz.default
の部分は Firefox のプロファイルフォルダの名前に置き換えてください。絶対に置き換える必要があるのは xyz.default
だけです。
rsync がインストールされていることを確認して、以下を作成してください:
~/.local/bin/firefox-sync.sh
#!/bin/sh static=static-$1 link=$1 volatile=/dev/shm/firefox-$1-$USER IFS= set -efu cd ~/.mozilla/firefox if [ ! -r $volatile ]; then mkdir -m0700 $volatile fi if [ "$(readlink $link)" != "$volatile" ]; then mv $link $static ln -s $volatile $link fi if [ -e $link/.unpacked ]; then rsync -av --delete --exclude .unpacked ./$link/ ./$static/ else rsync -av ./$static/ ./$link/ touch $link/.unpacked fi
スクリプトに実行可能属性を付与し、その後で、以下を実行してください (以下は Firefox を閉じて、スクリプトをテストします):
$ killall firefox firefox-bin $ ls ~/.mozilla/firefox/ $ ~/.local/bin/firefox-sync.sh xyz.default
Firefox を再度立ち上げて結果を確認してください。二度目の実行時、スクリプトはプロファイルをディスクにコピーして RAM のプロファイルを保全します。
自動化
プロファイルの同期を忘れると酷いことになるので、同期は自動化するのが合理的でしょう。
systemd
以下のスクリプトを作成してください:
~/.config/systemd/user/firefox-profile@.service
[Unit] Description=Firefox profile memory cache [Install] WantedBy=default.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=%h/.local/bin/firefox-sync.sh %i ExecStop=%h/.local/bin/firefox-sync.sh %i
次に、daemon-reload して firefox-profile@xyz.default.service
ユーザーユニットを起動/有効化してください。
cron ジョブ
crontab
を使ってユーザの cron テーブルを操作してください:
$ crontab -e
30分ごとにスクリプトを実行するには以下の行を追加してください:
*/30 * * * * ~/.local/bin/firefox-sync.sh xyz.default
または、2時間ごとにスクリプトを実行するには:
0 */2 * * * ~/.local/bin/firefox-sync.sh xyz.default
ログイン/ログアウト時に同期
bash を使っている場合、以下のスクリプトをログイン/ログアウトファイルに追加してください:
$ echo 'bash -c "~/.local/bin/firefox-sync.sh xyz.default > /dev/null &"' | tee -a ~/.bash_logout ~/.bash_login
zsh の場合は、代わりに ~/.zlogin
と ~/.zlogout
を使用します:
$ echo 'bash -c "~/.local/bin/firefox-sync.sh xyz.default > /dev/null &"' | tee -a ~/.zlog{in,out}