2011-10-23 40 views

Trả lời

85

Nếu bạn muốn nhìn thấy kích thước bộ đệm của bạn trong thiết bị đầu cuối, bạn có thể có một cái nhìn tại địa chỉ:

  • /proc/sys/net/ipv4/tcp_rmem (để đọc)
  • /proc/sys/net/ipv4/tcp_wmem (cho ghi)

Chúng chứa ba số , là giá trị kích thước bộ nhớ tối thiểu, mặc định và tối đa (theo byte), tương ứng.

+11

Ngoài ra còn có '/ proc/sys/net/core/rmem_default' cho recv và'/proc/sys/net/core/wmem_default' để gửi, như được tham chiếu http://man7.org/linux/man- page/man7/socket.7.html –

26

Để nhận được kích thước bộ đệm trong c chương trình c/++ sau đây là dòng chảy

int n; 
unsigned int m = sizeof(n); 
int fdsocket; 
fdsocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); // example 
getsockopt(fdsocket,SOL_SOCKET,SO_RCVBUF,(void *)&n, &m); 
// now the variable n will have the socket size 
+0

Thay vào đó, có an toàn khi gọi 'socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)'? Tôi đang sử dụng cuộc gọi C này trong khuôn khổ Swift TCP của mình để có được kích thước bộ đệm để giảm các cuộc gọi 'recv'. – DevAndArtist

+0

Lưu ý: đây cũng chỉ là kích thước bộ đệm đọc, sử dụng SO_SNDBUF để có được kích thước của bộ đệm ghi. Dưới ít nhất là Linux, bạn có thể sử dụng ioctl SIOCINQ và SIOCOUTQ, để tôn trọng trạng thái được sử dụng hiện tại của bộ đệm. – Rahly

-5

kích thước nguyên tử là 4096 byte, kích thước tối đa là 65536 byte. Sendfile sử dụng 16 ống mỗi kích thước 4096 byte. cmd: ioctl (fd, FIONREAD, & buff_size).

+2

'Kích thước nguyên tử' có nghĩa là gì; 'sendfile()' có liên quan gì với nó; và bạn đã trả lời câu hỏi về kích thước bộ đệm ổ cắm mặc định ở đâu? – EJP

+0

@ EJP Kích thước nguyên tử - Nội bộ của Linux khẳng định việc truyền socket 4096b - MT-safe, mutex, 1/16 đường ống bên trong. sandfile có rất nhiều thứ để làm với nó. Tôi nghĩ tôi có. Kích thước bộ đệm mặc định là 16 * 4096b. –

+0

Không có câu nào trong số này trả lời câu hỏi. Đó là về kích thước bộ đệm gửi và nhận bộ đệm. Không phải về 'sendfile()', do đó có * không có gì * để làm với nó, cũng không phải kích thước chuyển nguyên tử, hoặc, ditto. – EJP

Các vấn đề liên quan