15.04、タイムシェアリング、またはリアルタイムで採用されているスケジューリングメカニズムを知りたいのですが、そのFIFO、ラウンドロビン、SJFを確信していますか?
PS:Linuxの新機能
15.04、タイムシェアリング、またはリアルタイムで採用されているスケジューリングメカニズムを知りたいのですが、そのFIFO、ラウンドロビン、SJFを確信していますか?
PS:Linuxの新機能
回答:
プロセススケジューラ
プロセススケジューラは、プロセスを実行するためのCPUリソースの割り当てを処理し、全体的なCPU使用率を最大化すると同時に、インタラクティブなパフォーマンスを最大化することを目的としています。
カーネル2.6.23(Hardy 8.04 LTS以降)以降、「階段の期限の回転」に基づく完全に公平なスケジューラ(CFS)。kernel.orgからの概要:
CFSは「Completely Fair Scheduler」の略で、Ingo Molnarによって実装され、Linux 2.6.23に統合された新しい「デスクトップ」プロセススケジューラです。これは、以前のバニラスケジューラのSCHED_OTHER対話性コードに代わるものです。
CFSの設計の80%を1つの文にまとめることができます。CFSは基本的に、実際のハードウェア上で「理想的で正確なマルチタスクCPU」をモデル化します。
「理想的なマルチタスクCPU」は、物理パワーが100%であり、各タスクを正確に同じ速度で、それぞれ1 / nr_running速度で並行して実行できる(存在しない:-))CPUです。たとえば、2つのタスクが実行されている場合、それぞれが50%の物理電力で実行されます。つまり、実際には並列に実行されます。
実際のハードウェアでは、一度に実行できるタスクは1つだけなので、「仮想ランタイム」の概念を導入する必要があります。タスクの仮想ランタイムは、次のタイムスライスが上記の理想的なマルチタスクCPUで実行を開始するタイミングを指定します。実際には、タスクの仮想ランタイムは、実行中のタスクの総数に正規化された実際のランタイムです。
I / Oスケジューラー
入出力スケジューリングは、オペレーティングシステムがブロックI / O操作をストレージボリュームに送信する順序を決定するために使用する方法です。
スケジューリングに関するPhoronixの記事:Linux 3.16:Deadline I / O Schedulerは一般的にSSDでリードしています。
I / Oスケジューラーを変更するには、grubのオプション「elevator =」を「GRUB_CMDLINE_LINUX_DEFAULT =」に追加します。
ただし、次のように行う方が簡単です(sdaと締め切りを想定)。
利用可能なスケジューラのリストを表示するには:
cat /sys/block/sda/queue/scheduler
そして、スケジューラーを変更するには(オンザフライで実行できます):
echo deadline > /sys/block/sda/queue/scheduler
kernel / git / torvalds / linux.gitから
何が使用されているかを確認できます(sdaを大草原と仮定):
cat /sys/block/sda/queue/scheduler