ゲーム用のLinuxのチューニング

画像 ゲームの応答性に関する新しいLinuxユーザーの苦情に何度か気付きました。 彼らは、Windowsでの長いゲームの後、Linuxではシステムの奇妙な遅延がすぐに目立つと言います。 例として、ショットボタンをクリックしてからショット自体をクリックするまでの遅延があります。たとえば、これはquakeliveのレールガンで明示的に現れます。 もちろん、イベントに対するプレイヤーの平均応答時間(200〜220ミリ秒)は、システムのチューニングから得られるゲインよりも大幅に長くなりますが、数十ミリ秒を好む場合は、なぜそれをしないのですか? 一般的に、Windowsユーザー自身は、気を失い、より楽しいゲームのためにシステムを調整する方法を探しています。 変数の純粋なゲームチューニングは重要な役割を果たしますが、専門のフォーラムにはこれに関する十分な情報があり、再度議論する価値はありません。





コア



Linuxカーネルは、他のシステムのコアと同様に、基盤の基礎であり、すべてのルートのルートです。 アプリケーションのパフォーマンスは、カーネルのパフォーマンスに直接依存します。 カーネルの応答性を最も高めるために、2つの簡単な操作を行いました。 まず、 CONFIG_HZパラメーターを変更しました 。 割り込みタイマーの頻度を反映しています。 この値が高いほど、中断が頻繁に発生し、ユーザーアプリケーションの応答性が高まります。 通常、分布の値は250または300Hzです。 これは、サーバーに推奨される周波数(100Hz)と最高周波数の平均です。 バニラコア、したがってほとんどのディストリビューションカーネルでは、このパラメーターが取ることができる最大値は1000Hzです。 もちろん、カーネルにパッチを適用して、その値のより残酷なラインを取得できます。 たとえば、 zenパッチセットには、このパラメーターを10000Hzに設定できるパッチが含まれています! 正直なところ、いくつかのサーバータスクが回転しているため、このような値は試していません。安定性も必要です。 CONFIG_HZ_1000 = yでカーネルを構築しください。応答性があり、安定しており、長年にわたってテストされています。 まあ、またはそれ以上に、システムの安定性と動作についてコメントすることはできません。

カーネルに関する2番目のことは、スケジューラです。 デフォルトでは、CFSはバニラカーネルとディストリビューションカーネルで使用されます。これは標準のLinuxスケジューラであり、安定していて、優れており、完璧に機能します。 しかし、それは他の種類のものではありません。KonKolivasによって書かれた別のスケジューラーであるBFS (Brain Fuck Scheduler)を指定できるパッチがあります。 彼の仕事の複雑さについてはお話ししません。このスケジューラーを使用すると、システムの応答性と「デスクトップ」を向上させることができるという事実にのみ興味があります。 すぐに言うと、安定性はそれほど熱くありません。 gitカーネルやrcカーネルでは使用せず、安定したリリースを待つ方が良いでしょう。 スライスでは、ゲーム中にいくつかのキーの短いフリーズまたは画像の短期的なフリーズが観察されることがあります。 カーネルのBFS パッチをダウンロードし、 CONFIG_SCHED_BFS = yに設定すると、応答性が向上します。

ところで、BFSスケジューラーはzenパッチセットにも含まれており、zenカーネルは多くのディストリビューションに含まれています。

もう1つの便利なカーネルオプションは、 プリエンプションモデルです。 「強制プリエンプションなし(サーバー)」、「任意のカーネルプリエンプション(デスクトップ)」、および「プリエンプティブカーネル(低遅延デスクトップ)」の3つの値を取ることができます。 後者の値には、応答性の高いデスクトップとしてカーネルを使用するためのいくつかの最適化が含まれます。 必要です。 CONFIG_PREEMPT = yに設定すると、ゲームを含むデスクトップアプリケーションの応答性が向上します。

これに加えて、主にリアルタイムでタスクを実行することを目的とした素晴らしいrt-patchsetがあります。 rtのコアはほとんどのディストリビューションにもありますが、これは大きなプラスです-何もパッチを当てる必要はありません。 バイナリコアに慣れている場合は、rtに進んでください。これは、システムの応答性を向上させるための簡単で優れた方法です。



マウス



長年、経験のあるプレイヤーは「マウスを加速する」。 実際、マウス自体をオーバークロックすることはできませんが、システムにマウスの状態をより頻繁にポーリングさせる方法があります。 Windowsには、このための特別なユーティリティがあります。Linuxでは、これはドライバーレベルで行われます。 どのドライバーがマウスに使用されているかを調べるには、 ' dmesg | grep入力 '。 ほとんどのプレーヤーはusbhidドライバーが使用されているusbマウスを配線しており、このモジュールにはマウスポーリングの期間を決定する特別なmousepollオプションがあります。 デフォルトでは、値は8(ミリ秒)です。 ポーリング周波数は125Hzです。 mousepoll = 2を使用して、マウスを500Hzで駆動します。 周期を短くしますが、mousepoll = 1の場合、マウスの周波数は予想される1000Hzではなく、500Hzのままです。 なぜ-私は知らない、私はプログラマーではなく、ドライバーのコードを理解できない。 usbhidモジュールをmousepoll = 2オプションで自動的にロードするには、モジュールの起動パラメーターで明示的に指定する必要があります。 ここで、ディストリビューションのドキュメントを読む必要があります。 異なるディストリビューションは異なる初期化システムを使用する場合があり、あるディストリビューションのモジュールをロードするルールは別のディストリビューションでは単に機能しない場合があります。

しかし、何も複雑ではありません。 たとえば、ファイル/etc/modules.autoload.d/kernel-2.6には、 ' usbhid mousepoll = 2 'という行のみが含まれています。 ファイル/etc/modprobe.d/hid.conf(ディレクトリが存在する場合は手動で作成)または/etc/modprobe.conf(古いバージョン)を使用できます。 小さなユーティリティを使用して、マウスのポーリング頻度を確認できます 。 開始するには、それを収集し(gcc evhz.c)、ルートから受信したa.outを実行する必要があります。 特に、恐れることなく実行するソースコードを提供します。



ネットワーク



ネットワークの品質は間違いなく重要です。 ただし、プレーヤーは、友人が働いているプロバイダーのサービスを使用しない場合に限り、ネットワークカード以外では品質にほとんど影響を与えません。 そして、マウスにも当てはまるワイヤを好む方が良いと言う必要はないと思います。 ただし、送信パケットのキューを管理することもできます。 サーバーと通信するために、ほとんどのゲームは特定の範囲のUDPポートを使用します。 次の数行を使用すると、他の悲惨なパッケージよりもゲームパッケージの優先度を上げることができます。



#

tc qdisc del dev ppp0 root 2> /dev/null > /dev/null

tc qdisc del dev ppp0 ingress 2> /dev/null > /dev/null



# HTB , 15 -

tc qdisc add dev ppp0 root handle 1: htb default 15 r2q 10



#

# (rate) (ceil)

tc class add dev ppp0 parent 1: classid 1:1 htb rate 15mbit ceil 15mbit



# rate ceil 1:10, (0)

tc class add dev ppp0 parent 1:1 classid 1:10 htb rate 10mbit ceil 15mbit prio 0



# rate ceil 1:15, (5)

tc class add dev ppp0 parent 1:1 classid 1:15 htb rate 5mbit ceil 15mbit prio 5



#, , , 1:10

tc filter add dev ppp0 parent 1:0 protocol ip prio 0 u32 match ip protocol 17 0xff flowid 1:10








すべてのudpの優先度が最も高く、特定のゲーム用のポートを指定しませんでした。dnsなどの他のプロトコルに便利です。 uTPを使用せず、udpで急流を駆動しないことを願っています。 また、使用する場合は、すぐにオフにし、決してオンにしないでください。 ゲーマーは尋ねています。

関税の正しいレート上限値。 Rate-キューの保証帯域幅の幅、ceil-最大幅。つまり、他のキューにパケットがない場合、このキューにはrateよりも広いチャネルが提供されますが、ceilを超えることはありません。 キュー1:10および1:15のレート値を慎重に選択することをお勧めします。それらの合計は、親クラス1:1のレートに等しくなければなりません。 pppdを使用してインターネットに接続する場合、つまり、ISPがPPPoEまたはPPTPを介してインターネットを配布する場合、ppp0インターフェイスは変更しないでおくことができます。 カプセル化されていないイーサネットの幸せな所有者である場合は、ネットワークカードのインターフェイスをルール(ほとんどの場合eth0)に置き換えます。

Linuxでのネットワーク構成のこれらの側面やその他の側面については、シックなLinux Advanced Routing&Traffic Control HOWTOで詳しく説明されています。



このガイドが、最も熱心なプレイヤーでさえ本当にLinuxを愛しているのに役立つことを願っています。 ゲームで頑張ってください!



All Articles