リアルタイムの優先度を変更してプログラムを実行する - TK's HP

TK's HP ホーム » スポンサー広告 » linux » リアルタイムの優先度を変更してプログラムを実行する

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

リアルタイムの優先度を変更してプログラムを実行する

Linux リアルタイムカーネルを使いたかった
リアルタイムカーネルの評価を行って、リアルタイムカーネルを使うには少し面倒なので、使わない方が良いと書きました。

が、せっかくリアルタイムカーネルをインストールしたので、もう少し調べてみました。


前回sched_setschedulerを使用することでリアルタイムカーネルの優先度を変更できると書きましたが、プログラムを書き換えるのは面倒です。

そこでコマンドが無いか調べると、chrtコマンドを使用することで優先度を変えて実行できるようです。




chrtのヘルプに日本語の説明を少し追加
スケジューリングポリシーの説明はsched_setschedulerを見ると良い。

$ chrt --help

chrt - manipulate real-time attributes of a process.

Set policy: プロセスのスケジューリングポリシーを設定する場合
chrt [options] { | [ ...]}

Get policy: プロセスのスケジューリングポリシーを取得する場合
chrt [options] { | [ ...]}


Scheduling policies: // スケジューリングポリシー
-b | --batch set policy to SCHED_BATCH // バッチ処理
-f | --fifo set policy to SCHED_FIFO // FIFO処理
-i | --idle set policy to SCHED_IDLE // 低優先度
-o | --other set policy to SCHED_OTHER // Linux標準のラウンドロビン型
-r | --rr set policy to SCHED_RR (default) // リアルタイムラウンドロビン型

Options:
-h | --help display this help
-p | --pid operate on existing given pid
-m | --max show min and max valid priorities
-v | --verbose display status information
-V | --version output version information



つまりスケジューリングポリシーをリアルタイムにし、
優先度を最大の99(0-99の範囲)に設定してプログラムを起動するには、

$ chrt -r 99 a.out


のようにやれば良いということです。


実際には、通常ユーザーには優先度を変更してプログラムを起動することは許可されていないので、とりあえず優先度を変えるにはrootになるのが良いでしょう。




許可されている最大の優先度

chrtで設定できる最大の優先度を調べるには、

$ ulimit -a | grep real-time
real-time priority (-r) 0

のように調べれば良いです。
この最後の数字が最大の優先度を示しています。
この場合だと0です。

ユーザーに優先度の変更を許可するには、/etc/security/limits.confを編集します。
ここの最後に、ファイルに書かれている設定に従って最大値を設定します。
例としては、

# domain type item value
myname - rtprio 99
@mygroup - rtprio 99


のように書きます。

mynameがユーザーネームです。
また、@mygroupのように@をつけてグループネームを書くことで、グループに一括で許可をだすことができます。
自分の環境に合わせて適宜設定してください。

また、ここで気をつけてほしいのが、rtprioはmax realtime priorityと指定できる最大の優先度でしかありません。
実際の優先度は実行chrtで指定するなどを行わないといけないようです。


再ログイン後に設定が反映されるようです。

再ログイン後にもう一度確認

$ ulimit -a | grep real-time
real-time priority (-r) 99



参考文献
制限を緩めてリアルタイム処理を有効にしよう!
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/sched_setscheduler.2.html
http://linux.die.net/man/1/chrt
関連記事
記事に間違いなどがあればすぐに訂正いたしますので、コメントしてください。
コメント
非公開コメント

トラックバック

http://tclip.blog.fc2.com/tb.php/93-39a6f686

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。