### 系統調用sendfile
[Sendfile](http://man7.org/linux/man-pages/man2/sendfile.2.html)是Linux實現的系統調用,可以通過避免文件在內核態和用戶態的拷貝來優化文件傳輸的效率。
其中大名鼎鼎的分布式消息隊列服務Kafka就使用sendfile來優化效率,具體用法可參見其[官方文檔](http://kafka.apache.org/documentation.html)。
### 優化策略
在普通進程中,要從磁盤拷貝數據到網絡,其實是需要通過系統調用,進程也會反復在用戶態和內核態切換,頻繁的數據傳輸在此有效率問題。因此我們必須意識到Linux給我們提供了sendfile這樣的系統調用,可以提高進程的數據傳輸效率。
- 前言
- 致謝
- 概述
- 使用代碼
- 使用Docker
- 進程基礎
- 進程是什么
- Hello World
- PID
- PPID
- 使用PID
- 進程名字
- 進程參數
- 輸入與輸出
- 并發與并行
- 進程越多越好
- 進程狀態
- 退出碼
- 進程資源
- 死鎖
- 活鎖
- POSIX
- Nohup
- 運行進程
- Go編程實例
- 衍生新進程
- 執行外部程序
- 復制進程
- 進程進階
- 文件鎖
- 孤兒進程
- 僵尸進程
- 守護進程
- 進程間通信
- 信號
- Linux系統調用
- 文件描述符
- Epoll
- 共享內存
- Copy On Write
- Cgroups
- Namespaces
- 項目實例Run
- 項目架構
- 代碼實現
- 注意事項
- 創建目錄權限
- 捕獲SIGKILL
- Sendfile系統調用
- 后記
- 參考書籍
- 項目學習
- 再次感謝