パフォーマンスチューニング

当記事は相当つたない知識と思い込みで書いているため、あまり当てにしないでください。

優先度の変更

サーバで複数プロセスが発生すると待ちプロセスが発生する状態となります。
当然、その間もsrcdsは動いているわけで、ラグが発生している可能性が高いです。

Linux版srcdsのプロセスは、おそらくSCHED_OTHERでスケジューリングされています。
SHED_OTHERでは各プロセスで優先度というものを持っており、これが高い(数値の小さい)ものほど優先的に処理されていきます。詳しくは↓のリンク先を見てください。
http://www.nsktokyo.co.jp/01_solution/06_kyoiku/embc3/bunsyo/page_16_02.html
http://wiki.bit-hive.com/linuxkernelmemo/pg/%A5%D7%A5%ED%A5%BB%A5%B9%A4%CE%CD%A5%C0%E8%C5%D9
ここをみる限り、ラウンドロビンと優先度の複合っぽい。

要は、srcdsのプロセスの優先度を高くしてやればラグりにくくなりますよ。ということです。
その為には、nice値というものを変更します。実行中プロセスの優先度の変更方法は↓

$sudo renice 数字 プロセスID

です。数字部分は-20から19まで設定でき、低いほうが優先度が高くなります。
他のプロセスと見比べながら設定してください。
よくわからないけど大事そうなプロセスよりは下げないほうがよさそうなので、下げても-4ぐらいがいいと思います。

これで少しラグりにくくなります。少しと書いたのには理由があります。
各プロセスに処理に使える時間には限りがあり、それを使い切ってしまうと、一度別のプロセスの処理に移るためです。その後もう一度優先度の高いプロセスが処理されます。
処理時間は優先度が高いほど多く割り当てられます。こんな感じで。

                   A
             \     | [timeslice length]
              \    |
               \   |
                \  |
                 \ |
                  \|___100msecs
                   |^ . _
                   |      ^ . _
                   |            ^ . _
 -*———————————-*—–> [nice level]
 -20               |                +19
                   |
                   |
(linux-2.6-2.6.26/Documentation/scheduler/sched-nice-design.txt)

1 thought on “パフォーマンスチューニング

コメントを残す

メールアドレスが公開されることはありません。