linux:すべてがファイルの場合、パフォーマンスは低下しますか?

linux:すべてがファイルの場合、パフォーマンスは低下しますか?

質問がありますが、関係があるかどうかはわかりません(何かが欠けている可能性があります)。

Linuxでは、すべてがファイルであるということは、次のことを意味します。

1 - モジュールとプロセスとの通信がファイル書き込み中です。正しい

2 - 正しい場合、このファイルはハードドライブのどこに保存されていますか?

3 - 正しい場合は、ハードドライブを読み書きするのに時間がかかりますか?

答え1

すべてがファイルである可能性がありますが、すべてがファイルではありません。本物

考慮すべき内容/proc。私のLinuxシステムには現在、/proc/uptime次のようなファイルがあります。

831801.89 1241295.64

catファイルを見直すと、他の数字が含まれています。私のハードドライブは読み取り専用でマウントされているため、この数字を1時間ごとにディスクに書き込むことはできません。実際、/procディスクには何もありません。なぜならprocfs

その後、一時ファイルがあります。おそらく、あなたのコンテンツ/tmpがマウントされている可能性がありますtmpfs。これは、コンテンツがディスクではなくRAMに保存されることを意味します。

もう一つの興味深い点は、/dev/tcpネットワークとの通信です。一部のシステムでは、他のシェルの下にのみ存在しますが、存在しないため、bashそのシステムのディスクには存在できません。

これらの例はすべて、ファイルシステムとハードドライブが分離されており、「すべてがファイルです」という哲学がI / O速度のためにパフォーマンスに影響を与えないことを示しています。

答え2

いいえ、I/O 側に不利益があるとは言えません。

たぶんこの表現は単純すぎるかもしれません。ただし、カーネルデバイス、ファイルではファイル記述子としてすべてを参照でき、すべての記述子は仮想ファイルシステムにマップされ、ファイルシステムと同様に特定のファイルシステムを参照できます。文書名前(ハンドル)があります。

したがって、カーネルは必ずしも/proc/vmstatディスクファイルシステムを介してデータを渡す必要はありませんが、統計を読み取るために特別なタスクを実行する必要はなく、コマンドを使用してデータを読み取ることができますcat

努力する

watch head /proc/vmstat

時間間隔ごとに数字が変わるのがわかります。

明らかに、一部のファイルには、単純なオープン/クローズ/読み取り/書き込み/検索よりも追加の作業が必要な特殊な特性があります。たとえば、シリアルデバイスで転送速度を設定することは意味がありますが、ディスクではファイルで転送速度を設定することは意味がありません。 。

関連情報