1

Linux 用の仮想入力ドライバーと、/dev ノードを介してそれらと通信するサーバーを作成しました。現在、それらの 1 つが仮想マウスであり、マウスがスムーズに感じるためには、シグナル サーバーが受信したものができるだけ早くドライバーに到達することが非常に重要です。

そのため、サーバー プロセスの ionice を 1 に設定しました (重要な Linux デーモンよりも優先されることはありません)。

    if (ioprio_set(IOPRIO_WHO_PROCESS,getpid(), 1 | IOPRIO_CLASS_RT << IOPRIO_CLASS_SHIFT) == -1) {
        logger->error("ioprio_set() error",errno);
    }

しかし、それだけの価値があるかどうかはわかりません。違いがあっても、目立たない。実際のディスクへのアクセスは許可されていませんが、I/O 優先度に関しては /dev/ 内のキャラクター スペシャル ファイルが考慮されますか?

4

1 に答える 1

1

私の知る限り、ionice影響を与える OS のレイヤーは I/O スケジューラです。少なくともカーネル 2.6.17 までcfqは、実際にサポートされている唯一のスケジューラでしたionice。少なくともカーネルが提供するデフォルトのスケジューラに関しては、何も変わっていないと思います。

I/O スケジューラはブロック デバイスでのみ使用され、操作をキューに入れたり、順序を変更したり、遅延させたり、マージしたりすることができます (例については、こちらを参照してください)。/sysこれは、ブロックデバイスのみの仮想ファイルシステムを介してスケジューラーを変更できるという事実とも一致しています( /sys/devices/pci0000:00/0000:00:08.0/host0/target0:0:0/0:0:0:0/block/sda/queue/scheduler. マウス ドライバはキャラクタ デバイスであるため、I/O スケジューラやionice.

于 2012-03-13T20:35:52.563 に答える