簡體   English   中英

套接字和文件都建議緩沖區大小

[英]Both socket and file recommended buffer size

請問,Linux內核黑客, write(2)系統調用到套接字或文件的合理緩沖區大小是什么,性能方面呢? 很明顯,這是一些頁面大小,但是哪一個? 有關系嗎? 什么是“太小”和“太大”?

取決於你對同伴的延遲有多大,假設你有一個100MBps的連接,延遲50ms,那么你可以計算

100MBps * 0.050 sec / 8 = 0.625MB = 625KB

但是Linux 2.6中的默認窗口大小約為110KB,這會將你的通過限制在大約2.2MBps(110KB / 0.050)左右,所以要解決這個問題,你可以使用setsockopt

int ret, sock, buf_size;
sock = socket(AF_INET, SOCK_STREAM, 0);
buf_size = 625*1024;
ret = setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char *)&buf_size, sizeof(buf_size));
ret = setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char *)&buf_size, sizeof(buf_size));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM