タグ付けされた質問 「scheduling」

特定の時間または特定のイベントで実行されるタスクをスケジュールする手法。




1
CFSのCPU使用率が高いですか?
私は尋ねた前の質問を、私はそれはそれは、カーネル内のCFSによって引き起こされていることを示していると思われるためにしたことを分析はRHEL 6にRHEL 5からアプリケーションを移動するときに試してみて、CPUの使用率の増加の原因を隔離します。これが事実かどうかを確認するためのテストアプリケーションを作成しました(元のテストアプリケーションはサイズ制限に合わせて削除されましたが、まだgit repoで利用可能です)。 RHEL 5で次のコマンドを使用してコンパイルしました。 cc test_select_work.c -O2 -DSLEEP_TYPE=0 -Wall -Wextra -lm -lpthread -o test_select_work その後、Dell Precision m6500で、反復あたりの実行時間が約1ミリ秒になるまでパラメーターを試しました。 RHEL 5で次の結果が得られました。 ./test_select_work 1000 10000 300 4 time_per_iteration: min: 911.5 us avg: 913.7 us max: 917.1 us stddev: 2.4 us ./test_select_work 1000 10000 300 8 time_per_iteration: min: 1802.6 us avg: 1803.9 …

1
Linuxでのリアルタイムプロセススケジューリング
私はいくつかのスケジューリングの概念を学んでいます。現在のところ、私の理解は以下の通りです。 リアルタイムプロセスと非リアルタイムプロセスがあります。 非リアルタイムプロセスを持つことができるniceの範囲内でその優先順位の値を-20に+20。高い正の値は、プロセスの優先度が低いことを示します。 ここ-でこの答えで説明されるようにリアルタイムプロセスにniceness値がリストされるでしょう。これは主に、リアルタイムプロセスが非リアルタイムプロセスよりも高い優先度を持ち、ナイスネス値が適用されないためです。 これchrtで、プロセスのリアルタイムの属性を確認できます。 リアルタイムプロセスの場合、chrt出力は次のようになります。 chrt -p 5 pid 5's current scheduling policy: SCHED_FIFO pid 5's current scheduling priority: 99 プロセス5でわかるように、優先度は99で最高です。また、スケジューリングポリシーはSCHED_FIFO さて、非リアルタイムプロセスのために、 chrt出力は次のようになります。 chrt -p 22383 pid 22383's current scheduling policy: SCHED_OTHER pid 22383's current scheduling priority: 0 プロセス22383でわかるようにでに、優先順位は0で、スケジューリングポリシーはSCHED_OTHERです。 ご質問 プロセスをリアルタイムプロセスとして作成することは可能ですか? 私が他のスケジューリングアルゴリズムを設定することは可能ですか? SCHED_OTHER非リアルタイムプロセスですか? ここから、実行中のプロセスの属性を次のように変更できることもわかります。 chrt -p prio pid また、chrt …

2
なぜnicenessが-20から19の範囲にあるのですか?
このniceコマンドを使用すると、プログラムのスケジューリングの優先順位(「ナイスネス」)を調整できます。私が使用したすべてのUnixライクシステムでは、ナイスネスは整数の範囲で指定されます。-20が最も好ましいスケジューリング優先順位、0がデフォルト、19が最も好ましくありません。 デフォルトのナイスネスとして0を使用するのは十分直感的ですが、なぜ範囲のエンドポイントとして-20と19が選択されたのですか?なぜ-128と127は、符号付き8ビットバイトにぴったり収まるのでしょうか?あるいは、小数の人間にとってより直感的な-100から100、または同様に、しかし人間工学的には-99から99である-100から100でないのはなぜですか?-20から19の範囲は任意に選択されましたか、それともnice最初にインターフェースをとったスケジューラーの内部と何らかの関係がありますか?(少なくともLinuxでは、スケジューラーが0から139の範囲の優先順位を使用するため、そのような関係は今日ないことを理解しています。しかし、-20から19の範囲の歴史的な理由に興味があります。)

1
良い仕事はどうですか?
sched_setschedulerのコメント: すべてのスケジューリングはプリエンプティブです。より高い静的優先度を持つプロセスが実行可能になると、現在実行中のプロセスがプリエンプトされ、静的優先度レベルの待機リストに戻ります。 ながらのsetpriorityは言います これにより、ナイス値が非常に低く(+19)、システムに他の優先度の高い負荷がある場合は常にプロセスにほとんどCPUを提供せず、高いナイス値(-20)を必要とするアプリケーションにほとんどのCPUを提供します では、ナイス値をどのように変更すると、プログラムの実行に影響するのでしょうか?RTスケジューリング(ナイス値の高いプログラムがナイス値の低いプログラムを中断する)に似ていますか? インターネット上のすべての情報は、使用方法nice、およびプロセスの優先度を変更する方法です。優先度の異なるプロセスがどのように機能するかを説明するリンクはありません。ソースコードすら見つかりませんでした。

1
指定した時間にコンピューターの電源が切れている場合、「at」は後でコマンドを実行しますか?
でジョブをスケジュールしたいのですがat、指定された時間にコンピューターが中断された場合に何が起こるかわかりません:コンピューターが再び起動するとすぐにコマンドが実行されますanacronか(など)またはまったく実行されません(のようなcron)? 過去の特定の日時に絶対に実行するようにジョブを指定すると、ジョブはできるだけ早く実行されます。 それはマンページがそれについて言っていることですが、それは私の場合とは完全には一致していません:過去に実行するジョブを指定したくない、将来実行しat、コンピューターがどのように処理するかを尋ねる寝ています この質問は、コマンドを実行するためにコンピューターを起動するかどうかを尋ねるので、コンピューターがスリープしているときのRun atコマンドの複製ではありません。これは、これらの「古い」ジョブの実行を防ぐ方法に関するものだからです(ただし、非常に良い答えです!)。atat
20 scheduling  at 



2
systemdで30分ごとにスクリプトを実行する
システムを起動してから30分ごとにスクリプトを実行したいと思います。cronを使用できることは知っていますが、この機能を頻繁に使用する予定はないので、systemdで試してみたいと思います。 これまでのところ、何かを一度だけ実行できる単調なタイマーのみを見つけました(少なくともそう思う)。どうだろうfoo.timerとfoo@user.service見た場合のように、私は30分ごとに起動/システム起動から何かを実行したいですか? foo@user.service [Unit] Description=run foo Wants=foo.timer [Service] User=%I Type=simple ExecStart=/bin/bash /home/user/script.sh foo.timer [Unit] Description=run foo [Timer] where I am stuck... ???

2
BFQスケジューラを有効にして使用する方法
Ubuntu 17.04にukuu(Ubuntu Kernel Update Utility https://doc.ubuntu-fr.org/ubuntu_kernel_upgrade_utility)を使用してLinuxカーネルバージョン4.12をインストールしました。 問題は、使用可能なI / Oスケジューラーを確認したときに、BFQもKyber I / Oスケジューラーも見つからないように見えることです。 cat /sys/class/block/sda/queue/scheduler > noop deadline [cfq] それでは、このLinuxバージョンで新しいスケジューラの1つを使用する方法は?

3
古いLinuxカーネルがプリエンプティブでない理由は何ですか?
最初のLinux開発者は、なぜプリエンプティブでないカーネルの実装を選択したのですか?同期を保存するためですか? 私の知る限り、Linuxは90年代前半に開発されました。PCには単一のプロセッサが搭載されていました。そのようなPCにおいて、プリエンプティブでないカーネルはどのような利点がありますか?しかし、マルチコアプロセッサによって利点が減るのはなぜですか?

2
将来のある時点で発生する単一のイベントをスケジュールする簡単な方法は何ですか?
多くの場合、コンピューターに1つのタスクを実行させたいが、今はそうではない場合があります。たとえば、仕事を辞める時間であることを30分で通知することができます。または、他のほとんどの人がオフィスを去ると確信している2時間後に複雑なテストを実行したいかもしれません。 cronジョブを作成して特定の時刻に実行できることはわかっていますが、「このスクリプトを10分で実行する」のような簡単なことだけでなく、多くの作業が必要なように思えます。今から実際にX分/時間/日になるのか、終了したらcronジョブを削除します。 もちろん、このスクリプトを作成してバックグラウンドで実行することもできます。 sleep X do_task しかし、それは非常に不格好なようです:各タスクに新しいスクリプトが必要か、または必要なことを実行するのに十分な汎用スクリプトを作成して維持する必要があります。数時間または数日です。 この問題に対して既に確立された解決策はありませんか?

2
Linuxで「情報:タスクXXXが120秒以上ブロックされました」とはどういう意味ですか?
カーネルログにこのメッセージがありました:INFO: task XXX blocked for more than 120 seconds。私はそれが技術的に何を意味するのか知りたいです:どのような条件下でカーネルはタスクに関するこのメッセージを表示しますか? 記録では、ブロックされたタスクはでしたがmultipathd、このエラーの一般的な意味にも興味があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.