第9章 一般的なシステムリソース管理

目次

9.1. インストールの計画
9.2. 不要なサービスの無効化
9.3. ファイルシステムとディスクアクセス

概要

システムのチューニング (最適化) では、カーネルの最適化やお使いのアプリケーションの 設定だけでなく、無駄のない高速なシステムを構築することをも意味します。 たとえばパーティション設定やファイルシステムの設定次第では、サーバの動作速度が より高速化されたりする場合があります。また、有効に設定したサービスの数や定常的な 作業方法なども性能に影響することがあります。

9.1. インストールの計画

インストール作業時に注意深く設定を行なうことで、特定の目的で使用する際に必要な 要件のうち、基本的な部分を正確に構築することができます。これはシステムの チューニングにかかる手間を省くことにも繋がります。この章で提案する様々な設定変更 は、それぞれインストール時の インストール設定 で行ないます。 詳しくは 項 「インストール設定」 (第1章 YaST を利用したインストール, ↑リファレンス) をお読みください。

9.1.1. パーティション設定

サーバで使用するアプリケーションの範囲と、ハードウエア構成に依存しますが、 パーティション方法はマシンの性能に影響します (ただし悪い方向のみですが) 。 特定の用途に対しては異なるパーティション方法を行なうべきである、ということは このマニュアルでは詳しく説明していませんが、それぞれ下記の要件を満たすことで よりよい方向に性能を改善することができます。もちろん外付けのストレージシステム の場合には、下記の要件を満たす必要はありません。

  • ディスク上には、常にある程度の空き容量を残してください。ディスクを満杯にして しまうと、性能を落とすことに繋がってしまいます。

  • たとえば下記のような方法で、読み書きのアクセスを異なるディスクに分散させて ください:

    • オペレーティングシステム自身とデータ、ログファイルなどについて、それぞれ 別々のディスクを使用するように設計する

    • メールサーバのスプール (spool) ディレクトリを、個別のディスクに配置する

    • ユーザのホームディレクトリを、複数のディレクトリに分散させる

9.1.2. インストールの範囲

実際にはインストールの範囲そのものが直接的にマシンの性能に影響することは ありませんが、注意深くパッケージ範囲を選択することには十分な意味があります。 サーバを動作させるにあたって、最小限のパッケージのみをインストールしてください。 パッケージの選択を最小限に絞ることは、管理の手間を減らす意味があるほか、 潜在的なセキュリティ問題を回避することにも繋がります。また、それぞれの サーバに対して別々の構築を行なうことで、既定では不要なサービスを開始しない ことにもなります。

openSUSE ではインストールの概要画面でインストール範囲を設定すること ができます。既定では特定の用途向けに設定されたパターンを選択するだけですが、 YaST のソフトウエア管理モジュールを利用して、パッケージ単位での選択を 行なうこともできます。

サーバとして使用するにあたっては、それぞれ下記のパターンが不要と思われます:

GNOME デスクトップ環境

サーバとして動作する場合は、いわゆる GUI を必要とすることはほとんどありません。 GUI が必要であったとしても、 icewm や fvwm などより経済的な選択を行なった ほうが適切です。

X ウインドウシステム

サーバの管理とコマンドラインでのアプリケーション実行を行なうだけであれば、 このパターンをインストールしないことをお勧めします。ただし、 GUI アプリケーションをネットワーク上で離れた (リモートの) マシンから実行する 場合であっても、 GUI のインストールは必要となることに注意してください。 たとえばお使いのアプリケーションが GUI からの管理しか行なえないような ものであったり、 YaST の GUI 版を使用したりしたい場合は、このパターンを インストールしておいてください。

印刷サーバ

このパターンは、そのマシンから印刷を行なう場合にのみ必要となるものです。

9.1.3. 既定のランレベル

X Window System を実行すると多くの資源を占有してしまうものですが、サーバを 稼働させるにあたって必ずしも必要なものではありません。そのため、お使いのシステムが サーバ用途である場合、ランレベルを 3 (X Window System を動作させない、 ネットワーク付きマルチユーザモード) に設定することをお勧めします。もちろん この場合でもリモートから GUI アプリケーションを起動することはできますし、 startx コマンドで GUI デスクトップをローカルのコンピュータ 上で起動することもできます。

9.2. 不要なサービスの無効化

既定のインストールでは、いくつかのサービス (どのサービスが起動されるかは、 インストール範囲に依存します) が起動されます。それぞれのサービスはある程度の資源を 占有するものであるため、不要なサービスについては停止させておくことをお勧めします。 YaST+システム+システムサービス (ランレベル)+熟練者モード を選択し、 サービスを管理するモードに移動してください。 YaST のグラフィカル (GUI) 版を 利用している場合は、列ヘッダをマウスの左ボタンで押すことで、並べ替えを行なうこと ができます。この一覧ではサービスが現時点で動作中であるかどうかと、サーバの既定の ランレベルでどのサービスが起動されるのかが表示されます。各サービスの説明を読みたい 場合は、それぞれのサービスをマウスの左ボタンで選択してください。 また、 開始/停止/更新 のドロップダウンボタンを押すと、 それぞれサービスをすぐに開始したり停止したりすることができます。恒久的に無効化 したい場合は、 セット/リセット のドロップダウンを お使いください。

下記には、 openSUSE を既定の状態でインストールした場合に有効化される サービスのうち、不要と思われるものを列挙します:

alsasound

Advanced Linux Sound System を読み込みます。音声の再生機能を必要としない 場合は無効化することができます。

auditd

監査システム向けのデーモンです 。監査を必要としない場合は 無効化することができます。

bluez-coldplug

Bluetooth デバイスのコールドプラグ (コンピュータの電源が落とされている時に 抜き差しすること) を処理するためのものです。 Bluetooth をお持ちでない場合は 無効化することができます。

cups

印刷デーモンです。プリンタをお持ちでない場合は無効化することができます。

java.binfmt_misc

*.class や *.jar の形式で提供される Java プログラムを実行するためのものです。 Java アプリケーションを実行しない場合は、無効化することができます。

nfs

NFS ファイルシステムをマウントする際に必要なサービスです。不要であれば 無効化することができます。

smbfs

Windows サーバが提供する SMB/CIFS ファイルシステムをマウントするのに 必要なサービスです。不要であれば無効化することができます。

splash / splash_early

起動時のスプラッシュスクリーンを表示するためのものです。サーバとして動作させる 場合、通常は不要なものです。

9.3. ファイルシステムとディスクアクセス

ハードディスクはコンピュータシステム内で最も遅いデバイスであるため、よく ボトルネックの原因となります。性能を改善するため、お使いの作業内容に応じて適切な ファイルシステムをご使用ください。また、特殊なマウントオプションを使用したり、 プロセスの I/O 優先順序を設定したりすることで、さらなる高速化を行なうこともできます。

9.3.1. ファイルシステム

openSUSE は複数のファイルシステムを提供しています。それぞれ btrfs, ext3 ext2, reiserfs, xfs などと呼ばれています。それぞれのファイルシステムにはそれぞれの 利点と欠点が存在しています。

9.3.1.1. NFS

NFS (バージョン 3) のチューニングについては、 NFS の Howto ドキュメント (http://nfs.sourceforge.net/nfs-howto/) 内に詳しい説明が あります。なお、 NFS 共有のマウントを行なう際は、マウントオプション wsizersize を使用して、それぞれ 読み書きのブロックサイズを 32768 に設定してみることをお勧めします。

9.3.2. アクセス日時 (atime) 更新の無効化

ファイルを Linux のファイルシステムから読み込む場合、対象のファイルのアクセス 日時 (atime) が更新されます。その結果、読み込みのみのアクセスを行なった場合 でも、書き込みの処理が発生することになります。さらに言うと、ジャーナル機能 付きのファイルシステムの場合は、ジャーナル側も更新する必要があるため、 2 回の 書き込み処理が発生します。この機能を無効化し、アクセス日時を更新しないように することで、性能を改善することができます。これは特にファイルサーバや Web サーバ、ネットワークストレージなどの形態で使用している場合、性能改善に繋がります。

アクセス日時の更新を無効化するには、ファイルシステムのマウント時に noatime オプションを設定します。これを行なうには /etc/fstab を直接編集するか、もしくは YaST パーティション設定で、編集または追加を行なう際にFstab オプション で設定を行ないます。

9.3.3. ionice を利用したディスクアクセスの優先順位設定

ionice コマンドは、特定のプロセスに対してディスクのアクセス 優先順位を設定するためのものです。このコマンドを利用することで、たとえばバックアップ ジョブなど、ディスク負荷が高く時間に余裕のある処理に対して、低い優先順位を設定したり することができます。また、 ionice コマンドは特定のプロセスに 対して優先順位を高く設定し、ディスクへのアクセスを即時に行なわなければならない処理に 対応することもできます。それぞれ下記の 3 種類のスケジュール区分を設定することができます:

アイドル

スケジュール区分がアイドルに設定されたプロセスは、他のプロセスがディスク入出力を 必要としていない場合にのみ、ディスクへのアクセスを行なうことができます。

ベストエフォート

既定では、全てのプロセスがこの I/O 優先順位に設定されます。この区分では、さらに レベルが 0 から 7 までに細分化されていて、 0 が最も高い優先順位になっています。 既定では CPU の nice 値に合わせてプロセスの I/O 優先順位が設定されます。

リアルタイム

この区分に属するプロセスは、常にディスクへのアクセスを優先的に獲得することが できます。この区分でも、さらに 0 から 7 までのレベルに細分化されていて、 0 が 最も高い優先順位になります。なお、この区分を利用すると、他のプロセスが全く ディスクにアクセスできなくなってしまう場合がありうることに注意してください。

ionice について、詳しいコマンド書式や説明を読むには、 ionice(1) のマニュアルページをお読みください。


openSUSE システム分析とチューニングガイド 13.1