AnanicyでLinuxアプリの優先度を自動制御する方法

古い「Auto Nice Daemon」は今や時代遅れになりつつあり、ソフトウェアの優先度を手動で変更するのは面倒な作業です。各プログラムが使うリソース量を制御する、もっとモダンな方法はないのでしょうか? そこで登場するのが「Ananicy(ANother Auto NICe daemon)」です。これは現代的なオートナイスソリューションで、ソフトウェアごとにプロファイルを作成でき、大切なアプリケーションを優先的に扱えるようになります。今回はその具体的な使い方を見ていきましょう。
インストール
Ananicyの動作にはsystemdが必要なため、すべてのディストリビューションで利用できるわけではありません。Ubuntu、Mint、Debianおよび互換ディストリビューションにインストールするには、以下のコマンドを使用します。
git clone https://github.com/Nefelim4ag/Ananicy.git ./Ananicy/package.sh debian sudo dpkg -i ./Ananicy/ananicy-*.deb

Arch、Manjaro、または類似のディストリビューションをお使いの場合は、次のコマンドでインストールできます。
git clone https://github.com/Nefelim4ag/Ananicy.git /tmp/ananicy cd /tmp/ananicy sudo make install
また、Ananicyはschedtoolに依存しているため、まだインストールされていない場合は必ず追加しておきましょう。Debian系とArch系のディストリビューションでは、それぞれ以下のようにインストールします。
# Debian/Ubuntu sudo apt install schedtool # Arch Linux sudo pacman -S schedtool
セットアップが完了したら、デーモンを有効化して常に起動状態にし、アプリケーションを監視できるようにします。
sudo systemctl enable ananicy

実際にサービスを開始するには、次のコマンドを実行します。
sudo systemctl start ananicy
低スペックのマシンで複数のソフトウェアがリソースを奪い合っているような環境なら、導入直後から操作のレスポンスが改善したと感じられるかもしれません。
プリセットルールを確認する
Ananicyには、人気アプリケーション向けのルールが数多くあらかじめ同梱されています。内容を確認するには、お好みのターミナルを開いて、Ananicyのルールディレクトリへ移動します。
cd /etc/ananicy.d/00-default/

各アプリケーションのルールは個別のファイルに保存されています。たとえば、定番のファイル共有クライアントqBittorrentのプリセットルールを確認するには、以下を実行します。
sudo nano qBittorrent.rules
これらのルールは、独自のルールを作成する際のベースとしても活用できます。
独自のルールを追加する
アプリケーションのルールを作成するには、まずそのプロセス名を把握しておく必要があります。幸い、Linuxではプロセス名は通常アプリケーション名と同じです。topコマンドを使えばプロセス名を簡単に確認できます。
マシンのリソースを占有しているプロセスを見つけて、その名前をメモしておきましょう。ここでは例としてtimeshiftアプリを使用します。
Ananicyのルールディレクトリ内に新しいテキストファイルを作成します。後で参照しやすくなるよう、ファイル名にはアプリケーション名を使うのがおすすめです。Ananicyがルールファイルとして認識できるよう、拡張子は必ず「.rules」にしてください。
sudo nano timeshift.rules

ソフトウェアのルールを作成する最もシンプルな方法は、名前を記述してタイプを分類することだけです。Ananicyには、ゲーム、マルチメディアアプリ、ドキュメントエディターなど、事前定義されたタイプが用意されています。一覧を確認するには、次のコマンドを実行します。
ananicy dump types

各タイプには異なるnice値、ionice値、cgroupなどの値が設定されていますが、推奨されるのはアプリケーションのnice値の調整にとどめておくことです。ただし、ストレージへの読み書きが多いアプリケーションについては、ioclassパラメーターで入出力の優先度も定義しておくとよいでしょう。
以上を踏まえて、独自のカスタムルールを作成してみましょう。
{ "name": "timeshift", "type": "BG_CPUIO", "nice": 17, "ioclass": "idle" }
上記のルールは、次のような意味を持っています。
- アプリケーション名を指定する
- タイプを定義する
- プリセットとは異なるnice優先度を割り当てる
- 入出力の優先度をidleに設定する
理論上は、アプリケーション名だけを指定すればよく、それ以外の項目はすべて任意です。しかし実際には、名前だけを指定した場合、Ananicyはそのアプリの存在を認識するだけで制御は行いません。実際に制御するには、少なくともタイプの定義が必要です。
タイプごとに異なるnice値や入出力の値が事前定義されているため、ソフトウェアをどの程度制限したいかに合わせたものが見つかるはずです。ただし、今回のtimeshiftのように、さらに細かく調整したいケースもあります。その場合は、Ananicyのタイププリセットに含まれる値と異なるnice値やioclass値を明示的に指定しましょう。
選択したBG_CPUIOプリセットは、このアプリケーションの性質に合っています。バックアップソリューションであるtimeshiftは通常バックグラウンドで動作しますが、継続的な読み書きの間に大量のCPUサイクルを消費する可能性があるためです。ただし、BG_CPUIOプリセットでは最も低いnice値とionice値が割り当てられるため、バックアップ処理に非常に長い時間がかかってしまう恐れがあります。そこで今回は、nice値を17に引き上げ、ioclassも調整して、処理がある程度速く進むようにしました。
もう一つ別の例も見てみましょう。Batman: Arkham CityのDLC「Joker's Carnival」は筆者のお気に入りのゲームコンテンツの一つです。しかし、そのアクションは滑らかな動きが命のため、Linux Mintで他のソフトウェアがバックグラウンドで動いているとカクつきを感じていました。そこで今回は逆に、他のすべてのプロセスよりも優先度を高くしたいと考えました。

Steam経由でProtonを使ってゲームを起動した後、Linux Mintのシステムモニターを確認すると、プロセス名は「BatmanAC.exe」になっています。Ananicyで優先度をブーストするため、先ほどと同じ要領で「BatmanAC_ody.rules」という新しいルールファイルを作成しました。ただしこの場合、中身は以下の通りです。
{ "name": "BatmanAC.exe", "type": "Game"}
実はこれだけで十分です。「Game」タイプには「-5」というnice値が設定されており、アプリが他のすべてのプロセスより優先されるためです。したがって、nice値を明示的に指定したり、複雑なルールを作成したりする必要はありません。
念のため一度再起動すれば、Ananicyが有効になり、ソフトウェアの優先度を自動調整する準備が整います。下のスクリーンショットでBatmanAC.exeプロセスに表示されている値は、ユーザーが何も操作しなくても自動的に割り当てられたものです。

すべてのソフトウェアに対してこの設定を行う必要はありませんが、負荷の高いバックグラウンドプロセスを抑え込み、対話型のアプリを優先させることで、パソコンの使用感は劇的に変わります。カクつきを最小限に抑え、全体的により滑らかで快適な操作性を実現できるでしょう。
皆さんはすでにAnanicyや、アプリへのリソース配分をコントロールできる類似のソリューションを使っていますか? それとも手動でreniceしていますか? ぜひコメント欄でお聞かせください。
-
声だけで Windows 10 パソコンを操作する方法
音声認識がまだ発展途上だった頃は、ロボットのようにゆっくり話しても、言葉の半分程度しか認識されないのが当たり前でした。しかし現在では、あらゆるスマートフォンに音声アシスタントが搭載され、メモを素早く取ったり、アプリを開いたりといった操作を音声で簡単に行えるようになっています。実は、Windows 10パソコンでも音声による操作が可能です。これは単なる便利な機能にとどまらず、生産性向上に大きく役立つものであり、特定の障害をお持ちの方にとっては、パソコンを自在に操作するための有効な手段にもなります。「音声操作」と「音声入力(ディクテーション)」の違いあなたが求めているのは、Windows 10を声
-
Raspberry PiとOctoPrintで3Dプリンターを快適に制御する方法
3Dプリンティングは、初心者にとってハードルが高い趣味に思えるかもしれません。しかし、仕組みさえ理解してしまえば、非常に楽しくやりがいのある趣味へと変わります。入門者の中には、Windows 10で手軽に使えるプラグアンドプレイ式の3Dプリンターを購入したいと考える方も多いでしょう。例えば、Monoprice Select Mini Pro(約250ドル)や、3Dプリントに加えてレーザー彫刻・CNCフライス盤機能も備えたSnapmaker 3in1(約800ドル)などが挙げられます。どちらもエントリーモデルとして優れた選択肢ですが、造形サイズが小さいため、大きなパーツを印刷したくなったとき、す