検索
ホームページ運用・保守Linuxの運用と保守Linuxのポーリングと選択の違いは何ですか?

Linux におけるポーリングと選択の違いは次のとおりです。単一の選択プロセスで開くことができる接続の最大数は「FD_SETSIZE」マクロによって定義され、そのサイズは 32 の整数ですが、ポーリングはリンクされた接続を使用します。リストストレージなので、最大接続数に制限はありません。

Linuxのポーリングと選択の違いは何ですか?

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux におけるポーリングと選択の違いは何ですか

各プロセスで使用される選択には、最大接続数に制限があり (FD_SETSIZE のみ)、ポーリングにはそのような制限はありません。 (リンク リスト ストレージを使用);

epoll と select は両方とも、マルチチャネル I/O 多重化ソリューションを提供できます。これらはすべて現在の Linux カーネルでサポートできますが、このうち epoll は Linux に固有ですが、select は POSIX で規定され、一般的なオペレーティング システムで実装される必要があります。

#select は基本的に、fd フラグを格納するデータ構造を設定または確認することによって、次の処理ステップを実行します。この欠点は次のとおりです:

1. 単一プロセスで監視できる fd の数は制限されており、リスニング ポートのサイズは制限されています。

一般に、この数値はシステム メモリと密接に関係しており、具体的な数値は cat /proc/sys/fs/file-max で確認できます。 32 ビット マシンのデフォルトは 1024 です。 64 ビット マシンのデフォルトは 2048.

2 です。ソケットをスキャンするときは、リニア スキャンです。つまり、効率が低いポーリング メソッドが使用されます。多くのソケットがあります。各 select() は、FD_SETSIZE ソケットをトラバースすることによってスケジューリングを完了する必要があります。どのソケットがアクティブであっても、一度トラバースされます。これにより、多くの CPU 時間が無駄になります。ソケットのコールバック関数を登録し、関連する操作がアクティブなときに自動的に完了できる場合は、ポーリングを回避できます (これが epoll と kqueue の機能です)。

3. 多数の FD を格納するために使用されるデータ構造を維持する必要があるため、ユーザー空間とカーネル空間の間で構造を転送するときに高いコピー オーバーヘッドが発生します。 #poll:

Poll は基本的に select と同じです。ユーザーによって渡された配列をカーネル空間にコピーし、各 fd に対応するデバイスのステータスをクエリします。デバイスの準備ができている場合は、 , デバイスの待機キューに項目を追加して続行します。トラバーサル、すべての fd を走査した後に準備完了のデバイスが見つからない場合、デバイスの準備が完了するかイニシアチブがタイムアウトになるまで、現在のプロセスは一時停止されます。ウェイクアップされた後、トラバースします。またFD。このプロセスでは、多くの不必要な走査が行われました。

リンク リストに基づいて保存されるため、接続の最大数に制限はありませんが、欠点もあります:

1. 多数の fd 配列が次のようにコピーされます。このようなコピーが意味があるかどうかに関係なく、ユーザー モードおよびカーネル アドレス空間間で全体がコピーされます。

2. ポーリングのもう 1 つの機能は「水平トリガー」です。fd が報告されても処理されなかった場合、次回ポーリングされたときに fd が再度報告されます。 。

epoll:

epoll には、EPOLLLT と EPOLLET という 2 つのトリガー モードがあります。LT はデフォルト モードで、ET は「高速」モードです。 LT モードでは、fd に読み取るデータがある限り、epoll_wait は毎回そのイベントを返し、ユーザー プログラムに動作するよう通知します。ET (エッジ トリガー) モードでは、次のデータがあるまで一度だけプロンプトを表示します。 fd に読み取り可能なデータがまだあるかどうかに関係なく、流入の前にそれ以上のプロンプトは表示されません。したがって、ET モードでは、fd を読み取るときに、読み取りの戻り値が要求された値より小さくなるか、EAGAIN エラーが発生するまで、そのバッファーを読み出す必要があります。もう 1 つの特徴は、epoll が「イベント」準備通知メソッドを使用して、epoll_ctl を通じて fd を登録することです。fd の準備が完了すると、カーネルはコールバックのようなコールバック メカニズムを使用して fd をアクティブ化し、epoll_wait が通知を受信できるようになります。

なぜ epoll には EPOLLET トリガー モードがあるのですか?

EPOLLLT モードが採用されている場合、読み書きする必要のない準備完了ファイル記述子がシステム内に多数存在すると、epoll_wait が呼び出されるたびにそれらのファイル記述子が返されます。ファイル記述子の効率は、処理プログラムが処理可能なファイルを取得する能力を大幅に低下させます。 EPOLLET のエッジ トリガー モードが使用されている場合、監視対象のファイル記述子で読み取りおよび書き込み可能なイベントが発生すると、epoll_wait() はハンドラーに読み取りと書き込みを通知します。今回、すべてのデータの読み取りおよび書き込みが行われていない場合 (たとえば、読み取り/書き込みバッファーが小さすぎる場合)、次回 epoll_wait() を呼び出したときに通知されません。つまり、通知されるまでは 1 回だけ通知されます。ファイル記述子は、2 番目の読み取りおよび書き込み可能なイベントが発生するまで通知されません。 ! !このモードは水平トリガーよりも効率的です。システムは、必要のない大量の準備済みファイル記述子で溢れかえることはありません。

epoll の利点:

1. 最大同時接続数の制限はなく、開くことができる FD の上限は 1024 よりはるかに大きくなります (1G メモリで約 100,000 のポートを監視できます); 2. 効率の向上ではありません。ポーリング方式のため、FDの数が増加しても増加しません。増加しても効率は低下します。アクティブで使用可能な FD のみがコールバック関数を呼び出します。

Epoll の最大の利点は、「アクティブな」接続のみを考慮し、接続の総数とは関係がないことです。ネットワーク環境、Epoll の効率は、選択してポーリングするよりもはるかに高くなります。

3. メモリ コピー: mmap() ファイル マッピング メモリを使用して、カーネル スペースでのメッセージ パッシングを高速化します。つまり、epoll は mmap を使用してコピーのオーバーヘッドを削減します。

select、poll、epoll の違いの概要:

1. プロセスによってオープンできる接続の最大数をサポートします。

select

単一プロセスで開くことができる接続の最大数は FD_SETSIZE マクロによって定義され、そのサイズは 32 個の整数のサイズです (32 個の整数の場合)。ビット マシンの場合、サイズは 3232、同様に 64 ビット マシンの FD_SETSIZE は 3264)、もちろん変更してカーネルを再コンパイルすることはできますが、パフォーマンスが影響を受ける可能性があるため、さらなるテストが必要です。

poll

poll は基本的に select と同じですが、リンクされたリストに基づいて保存されるため、最大接続数に制限はありません

epoll

接続数には上限がありますが、非常に多く、メモリ 1G のマシンでは約 100,000、メモリ 2G のマシンでは約 200,000 の接続を開くことができます。

2. FD が急激に増加

select

によって引き起こされる IO 効率の問題 接続は呼び出されるたびに線形に通過するため、FD が増加すると、トラバース速度のゆっくりとした「線形低下」が発生し、パフォーマンスの問題が発生します。」

poll

上記と同じ

epoll

epoll カーネルの実装は各 fd のコールバック関数に基づいているため、アクティブなソケットのみがcallback はアクティブに呼び出されるため、アクティブなソケットが少ない場合、epoll を使用すると、前の 2 つのような直線的なパフォーマンス低下の問題は発生しませんが、すべてのソケットがアクティブな場合には、パフォーマンスの問題が発生する可能性があります。

#3. メッセージ受け渡し方法

select

カーネルはメッセージをユーザー空間に渡す必要があり、これにはカーネル コピー アクションが必要です

poll

同上

epoll

epoll はカーネルとユーザー空間の間でメモリを共有することによって実装されます。

要約:

要約すると、select、poll、または epoll を選択するときは、特定の使用機会とこれら 3 つのメソッドの特性を考慮する必要があります。

1. 表面的には、epoll が最高のパフォーマンスを示しますが、接続の数が少なく、接続が非常にアクティブである場合、select と poll のパフォーマンスは epoll よりも優れている可能性があります。このメカニズムでは多くの関数コールバックが必要です。

2. select は毎回ポーリングする必要があるため、非効率的です。ただし、非効率性は相対的なものでもあり、状況によっては、適切な設計によって改善することもできます。

推奨学習:

Linux ビデオ チュートリアル

以上がLinuxのポーリングと選択の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Linuxのメンテナンスモードとは何ですか?説明したLinuxのメンテナンスモードとは何ですか?説明したApr 22, 2025 am 12:06 AM

メンテナンスメモデンリンリンアスピアルブーテンビロンメント、criticalsystemmaincencetasks.itallowsadministratorstopertopertopertopersetstingtingpasswords、Repainingfilesystems、およびRecoveringfrombootfailurureSinaMinimalenvironment.

Linux:基本的な部分に深く潜りますLinux:基本的な部分に深く潜りますApr 21, 2025 am 12:03 AM

Linuxのコアコ​​ンポーネントには、カーネル、ファイルシステム、シェル、ユーザー、カーネルスペース、デバイスドライバー、パフォーマンスの最適化とベストプラクティスが含まれます。 1)カーネルは、ハードウェア、メモリ、プロセスを管理するシステムのコアです。 2)ファイルシステムはデータを整理し、Ext4、BTRFS、XFSなどの複数のタイプをサポートします。 3)シェルは、ユーザーがシステムと対話するためのコマンドセンターであり、スクリプトをサポートします。 4)システムの安定性を確保するために、ユーザースペースをカーネルスペースから分離します。 5)デバイスドライバーは、ハードウェアをオペレーティングシステムに接続します。 6)パフォーマンスの最適化には、システム構成とベストプラクティスのチューニングが含まれます。

Linuxアーキテクチャ:5つの基本コンポーネントを発表しますLinuxアーキテクチャ:5つの基本コンポーネントを発表しますApr 20, 2025 am 12:04 AM

Linuxシステムの5つの基本コンポーネントは次のとおりです。1。Kernel、2。Systemライブラリ、3。Systemユーティリティ、4。グラフィカルユーザーインターフェイス、5。アプリケーション。カーネルはハードウェアリソースを管理し、システムライブラリは事前コンパイルされた機能を提供し、システムユーティリティはシステム管理に使用され、GUIは視覚的な相互作用を提供し、アプリケーションはこれらのコンポーネントを使用して機能を実装します。

Linux操作:メンテナンスモードを利用しますLinux操作:メンテナンスモードを利用しますApr 19, 2025 am 12:08 AM

Linuxメンテナンスモードは、Grubメニューから入力できます。特定の手順は次のとおりです。1)GRUBメニューのカーネルを選択し、「E」を押して編集し、2)「Linux」行の最後に「シングル」または「1」を追加し、3)Ctrl Xを押して開始します。メンテナンスモードは、システム修理、パスワードリセット、システムのアップグレードなどのタスクに安全な環境を提供します。

Linux:リカバリモード(およびメンテナンス)に入る方法Linux:リカバリモード(およびメンテナンス)に入る方法Apr 18, 2025 am 12:05 AM

Linux Recoveryモードを入力する手順は次のとおりです。1。システムを再起動し、特定のキーを押してGrubメニューを入力します。 2。[RecoveryMode)でオプションを選択します。 3. FSCKやrootなどの回復モードメニューで操作を選択します。リカバリモードを使用すると、シングルユーザーモードでシステムを開始し、ファイルシステムのチェックと修理を実行し、構成ファイルを編集し、システムの問題を解決するのに役立ちます。

Linuxの重要なコンポーネント:初心者向けに説明されていますLinuxの重要なコンポーネント:初心者向けに説明されていますApr 17, 2025 am 12:08 AM

Linuxのコアコ​​ンポーネントには、カーネル、ファイルシステム、シェル、および共通ツールが含まれます。 1.カーネルはハードウェアリソースを管理し、基本的なサービスを提供します。 2。ファイルシステムはデータを整理して保存します。 3.シェルは、ユーザーがシステムと対話するインターフェイスです。 4.一般的なツールは、毎日のタスクを完了するのに役立ちます。

Linux:その基本構造を見てくださいLinux:その基本構造を見てくださいApr 16, 2025 am 12:01 AM

Linuxの基本構造には、カーネル、ファイルシステム、およびシェルが含まれます。 1)カーネル管理ハードウェアリソースとUname-Rを使用してバージョンを表示します。 2)ext4ファイルシステムは、大きなファイルとログをサポートし、mkfs.ext4を使用して作成されます。 3)シェルは、BASHなどのコマンドラインインタラクションを提供し、LS-Lを使用してファイルをリストします。

Linux操作:システム管理とメンテナンスLinux操作:システム管理とメンテナンスApr 15, 2025 am 12:10 AM

Linuxシステムの管理とメンテナンスの重要な手順には、次のものがあります。1)ファイルシステム構造やユーザー管理などの基本的な知識をマスターします。 2)システムの監視とリソース管理を実行し、TOP、HTOP、その他のツールを使用します。 3)システムログを使用してトラブルシューティング、JournalCtlおよびその他のツールを使用します。 4)自動化されたスクリプトとタスクのスケジューリングを作成し、Cronツールを使用します。 5)セキュリティ管理と保護を実装し、iPtablesを介してファイアウォールを構成します。 6)パフォーマンスの最適化とベストプラクティスを実行し、カーネルパラメーターを調整し、良い習慣を開発します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。