epollイベントドリブン・モデルとポールの比較
X軸はハンドル数
Y軸は応答時間
ハンドル数が増えてもepollはほとんど影響を受けないことがわかります。
epollイベント駆動モデルの原則
エポールとポールの比較
epollはアクティブな接続を保存し、アクティブな接続のごく一部だけを一度に処理します。
ポールはOSにすべてのコネクションを渡して、アクティブなコネクションを見つけ出します。
epollがアクティブな接続のみを実装する方法
epoll は eventpoll データ構造を実装します。
rdlist はアクティブな接続をリンクリストに格納し、カードがメッセージを送信するとノードが追加され、イベントが読み込まれるとリンクリストはノードを削除し、アクティブな接続を取得するにはリンクリストをトラバースする必要があります。
rdr データ構造は、イベントを格納するために赤黒木を使用します。例えば、 読み込みイベントがあると、新しいノードが追加され、イベントの複雑さは logN になります。