自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

提高 Linux上socket 性能的技巧 最小化系統(tǒng)調(diào)用的負(fù)載

運(yùn)維 系統(tǒng)運(yùn)維
如何提高Linux上socket的性能,從而加速網(wǎng)絡(luò)應(yīng)用程序,你可以通過使用API來開發(fā)客戶機(jī)和服務(wù)器之間的應(yīng)用程序。本文分節(jié)介紹了Linux上提高socket性能的技巧。

  本文內(nèi)容包括Linux下對于 Sockets API 的使用、兩個可以提高性能的 socket 選項(xiàng)以及 GNU/Linux 優(yōu)化。為了能夠開發(fā)性能卓越的應(yīng)用程序,請遵循以下技巧:最小化報(bào)文傳輸?shù)难訒r;最小化系統(tǒng)調(diào)用的負(fù)載;為 Bandwidth Delay Product 調(diào)節(jié) TCP 窗口;動態(tài)優(yōu)化 GNU/Linux TCP/IP 棧。

  最小化系統(tǒng)調(diào)用的負(fù)載

  任何時候通過一個 socket 來讀寫數(shù)據(jù)時,您都是在使用一個系統(tǒng)調(diào)用(system call)。這個調(diào)用(例如 read 或 write)跨越了用戶空間應(yīng)用程序與內(nèi)核的邊界。另外,在進(jìn)入內(nèi)核之前,您的調(diào)用會通過 C 庫來進(jìn)入內(nèi)核中的一個通用函數(shù)(system_call())。從 system_call() 中,這個調(diào)用會進(jìn)入文件系統(tǒng)層,內(nèi)核會在這兒確定正在處理的是哪種類型的設(shè)備。最后,調(diào)用會進(jìn)入 socket 層,數(shù)據(jù)就是在這里進(jìn)行讀取或進(jìn)行排隊(duì)從而通過 socket 進(jìn)行傳輸?shù)?這涉及數(shù)據(jù)的副本)。

  這個過程說明系統(tǒng)調(diào)用不僅僅是在應(yīng)用程序和內(nèi)核中進(jìn)行操作的,而且還要經(jīng)過應(yīng)用程序和內(nèi)核中的很多層次。這個過程耗費(fèi)的資源很高,因此調(diào)用次數(shù)越多,通過這個調(diào)用鏈進(jìn)行的工作所需要的時間就越長,應(yīng)用程序的性能也就越低。

  由于我們無法避免這些系統(tǒng)調(diào)用,因此惟一的選擇是最小化使用這些調(diào)用的次數(shù)。幸運(yùn)的是,我們可以對這個過程進(jìn)行控制。

  解決方案

  在將數(shù)據(jù)寫入一個 socket 時,盡量一次寫入所有的數(shù)據(jù),而不是執(zhí)行多次寫數(shù)據(jù)的操作。對于讀操作來說,最好傳入可以支持的最大緩沖區(qū),因?yàn)槿绻麤]有足夠多的數(shù)據(jù),內(nèi)核也會試圖填充整個緩沖區(qū)(另外還需要保持 TCP 的通告窗口為打開狀態(tài))。這樣,您就可以最小化調(diào)用的次數(shù),并可以實(shí)現(xiàn)更好的整體性能。

使用 Sockets API,我們可以開發(fā)客戶機(jī)和服務(wù)器應(yīng)用程序,它們可以在本地網(wǎng)絡(luò)上進(jìn)行通信,也可以通過 Internet 在全球范圍內(nèi)進(jìn)行通信。與其他 API 一樣,您可以通過一些方法使用 Sockets API,從而提高 Socket 性能,或者限制 Socket 的性能。

【編輯推薦】

  1. 2.1.3 Socket服務(wù)器
  2. TCP Socket之linux實(shí)現(xiàn)
  3. Linux操作系統(tǒng)下Socket編程地址結(jié)構(gòu)介紹
  4. 16.5.4 socket編程實(shí)例(2)
  5. 16.5.4 socket編程實(shí)例(1)

 

責(zé)任編輯:zhaolei 來源: 網(wǎng)絡(luò)轉(zhuǎn)載
相關(guān)推薦

2011-01-18 10:35:02

Linuxsocket性能

2011-01-18 13:42:18

Linuxsocket性能

2011-01-18 11:50:51

Linuxsocket性能

2011-01-19 14:40:45

Thunderbird

2021-04-13 16:00:54

加密貨幣數(shù)據(jù)貨幣

2013-05-31 09:26:11

云宕機(jī)SLA云應(yīng)用彈性

2017-11-06 13:25:25

MySQL數(shù)據(jù)庫技巧

2015-09-18 09:23:34

云APIAPI升級云服務(wù)中斷

2009-08-14 10:35:25

C#最小化編寫

2009-07-02 17:59:51

2025-04-25 09:35:39

WinformWindows系統(tǒng)托盤

2015-10-29 10:09:57

混合云影子IT SaaS

2009-12-23 17:07:37

WPF性能

2023-04-03 10:20:16

JavaScript前端Alpine.js

2011-01-05 13:48:55

Linux提高性能

2018-01-15 14:36:34

Linux負(fù)載CPU

2024-10-25 15:48:21

GPUPyTorch編程

2022-06-01 08:00:00

開發(fā)成本功能

2022-01-09 23:06:39

JavaScript

2023-02-21 14:55:40

React開發(fā)技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號