5

私が開発しているアプリケーションではsplice、Linux でソケットからソケットへのデータ転送に使用しています。

  1. 他のオペレーティング システム (特に少なくとも Windows、OS X、および FreeBSD) は、実装spliceまたは同等のソリューションを実装していますか?
  2. spliceWindows でsendfile¹ + ¹ を使用してソケット間のデータ通信を模倣することは可能memmapですか?

¹ 両方とも、覚えていない別の名前で Windows に存在します。


アップデート

spliceLinux でのユーザー空間バッファーに対するパフォーマンスの向上を確認できます。

行く

  • DFDRF、はMFMR異なるトンネリング モードのアプリケーションであり、NXNGINX Web サーバーです。
  • -p+tLinux システムコールを使用splice
  • +p-tユーザー空間バッファで移植可能な実装を使用します
  • +p+tユーザー空間バッファーと複数の OS スレッドを備えた移植可能な実装を使用します
  • バーは、1 秒あたりのギガバイト単位のスループットを表します
  • 1 つの 1 ギガバイト (1048576000 バイト) のファイルが、4 つの同時クライアントによって 4 回要求されました
4

2 に答える 2

1

OpenBSD には、 http://www.openbsd.org/cgi-bin/man.cgi?query=sosplicesospliceがありsomoveます。

于 2013-05-02T03:51:08.917 に答える
0

TransmitFileは、winsock で 1 つのファイル ハンドルからソケットにストリーミングする方法の 1 つとして頭に浮かびますが、ファイルからのストリーミングのためのものであるため、それが役立つかどうかはわかりません-> ディスク。メモリマップされたファイルハンドルで使用できる場合があります。

過去に何人かの人々が「カーネルモード」をエコーと単純なサーバー操作を高速化する方法として話しているのを聞いたことがありますが、私はそれをしたことがありません.

カーネル モードの winsock に関するいくつかのリンク:

http://blogs.msdn.com/b/wndp/archive/2006/02/24/introduction-to-winsock-kernel-wsk.aspx

http://msdn.microsoft.com/en-us/library/windows/hardware/ff571084(v=vs.85).aspx

于 2012-09-02T01:34:37.540 に答える