エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
ファイルから読んだデータを、CPUで加工せずにソケットに送りたいとする。 read(in_fd, buffer, 4096); ... ファイルから読んだデータを、CPUで加工せずにソケットに送りたいとする。 read(in_fd, buffer, 4096); write(out_fd, buffer, 4096); とか、やりたくなるが、これは実際には非常に無駄で、read 時に、ファイルシステムキャッシュからユーザ空間へコピー、ユーザ空間からskbへコピーしている。 まあ1Gb Etherなら全然大したオーバーヘッドにはならないけど(それがなるんだよなぁ…(なんで?))、NVMe Flash から、100Gb イーサに送るとかすると、memcpy が一回増えるだけで無視できないオーバーヘッドになるので、無駄がある。 そこで sendfile というシステムコールがある。 上のread,writeは sendfile(out_fd, in_fd, NULL, 4096); とか書くと、カーネル内のページをなんかうまくや