明察秋毫--用ss工具统计网络栈内存使用
前言
本文介绍了用ss
工具来统计一下当前网络栈的内存使用情况
环境准备
组件 | 版本 |
---|---|
操作系统 | Ubuntu 22.04.4 LTS |
查看socket内存相关参数,-m
参数
ss -tm
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 36 10.8.19.109:ssh 182.148.53.161:25924
skmem:(r0,rb369280,t0,tb133632,f1792,w2304,o0,bl0,d1)
其中关于skmem
skmem:(r<rmem_alloc>,rb<rcv_buf>,t<wmem_alloc>,tb<snd_buf>,
f<fwd_alloc>,w<wmem_queued>,o<opt_mem>,
bl<back_log>,d<sock_drop>)
rmem_alloc
已经分配用于接收包的内存,如果应用层能及时消费 TCP 内核层接收到的数据,这个数字基本为 0rcv_buf
接收包可以使用的总内存,与net.ipv4.tcp_rmem
第二个参数相关wmem_alloc
已经分配用于发送包的内存(已经到达ip层),包已经到达ip层,需要等待网卡将ip层的包取走snd_buf
发送包可以使用的总内存 与net.ipv4.tcp_wmem
第二个参数相关fwd_alloc
已经分配给socket使用内存,不用于接收/发送使用wmem_queued
已经分配用于发送包的内存(没有到达ip层)opt_mem
用于保存socket option所使用的内存back_log
back_log
所使用的内存,进程从队列里面拿到新的数据包sock_drop
在将数据包解复用到套接字之前丢弃的数据包数量
计算每一条socket消耗的内存,-tm
socket_memory = r(rmem_alloc) + t(wmem_alloc) + f(fwd_alloc) + w(wmem_queued) + o(opt_mem) + bl(back_log)
ss -tm
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 36 10.8.19.109:ssh 182.148.53.161:25924
skmem:(r0,rb369280,t0,tb133632,f1792,w2304,o0,bl0,d1)
可以计算出这条socket消耗的内存: mem = 1792+2304 = 4096
4k内存
计算网络栈所使用的内存
cat /proc/net/sockstat
sockets: used 502
TCP: inuse 65 orphan 0 tw 128 alloc 311 mem 21
UDP: inuse 5 mem 4
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0
mem 21
,单位是page,查看一下page的大小
getconf PAGESIZE
4096
由此可得,当前tcp网络栈大约使用 mem = 21*4096 = 86016
84k内存
查看协议栈的其他参数信息,-i
ss -ti
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.3.168:46099 192.168.3.168:58625
cubic wscale:2,7 rto:201 rtt:0.043/0.005 ato:40 mss:65483 rcvmss:1924 advmss:65483 cwnd:10 bytes_acked:12424915507 bytes_received:3150 segs_out:10395577 segs_in:10395575 send 121828.8Mbps lastsnd:2188 lastrcv:2244390049 lastack:2188 rcv_rtt:1 rcv_space:43690
rto
重传超时时间,即从数据发送时刻算起,超过这个时间便执行重传,单位msrtt
一个连接的往返时间,即数据发送时刻到接收到确认的时刻的差值,单位msato
ack的超时时间,单位msmss
有效数据的最大分段,去掉3层和4层的header,就是MSSMTU - (TCP 标头 + IP 标头) = MSS
rcvmss
文档上没有这个参数的介绍,源码注释上标注:MSS used for delayed ACK decisions
。对端告诉本端,对端的mss大小advmss
文档上没有这个参数的介绍,源码注释上标注:Advertised MSS
。告诉对端,本端的mss的大小cwnd
拥塞窗口的大小:cwnd*mss
bytes_acked
已经被ack的字节数bytes_received
收到但没被ack的字节数segs_out
已发送的segment数,segment最大就是一个mss,但是也有可能小于mss(没有塞满一个mss就发送过来了)segs_in
已收到的segment数send
发送速率lastsnd
最后发送一个包距离现在的时间,单位mslastrcv
最后接收一个包距离现在的时间,单位mslastack
最后一次收到ack距离现在的时间,单位msrcv_rtt
文档上没有这个参数介绍rcv_space
用于tcp自动调优,用来调整sender的buffer
联系我
- 联系我,做深入的交流
至此,本文结束
在下才疏学浅,有撒汤漏水的,请各位不吝赐教...
明察秋毫--用ss工具统计网络栈内存使用的更多相关文章
- DSAPI 获取实时统计信息CPU/内存/硬盘/网络
有时,我们需要获取当前计算机中CPU.内存.硬盘.网络等实时信息,如下图:\ 要实现上述几项信息的获取,通常需要使用Timer控件来间隔获取,以便刷新最新的数据. 本示例中,放一个Timer控件,放一 ...
- Windows系统CPU内存网络性能统计第一篇 内存
最近翻出以前做过的Windows系统性能统计程序,这个程序可以统计系统中的CPU使用情况,内存使用情况以及网络流量.现在将其整理一下(共有三篇),希望对大家有所帮助. 目录如下: 1.<Wind ...
- Linux探测工具BCC(网络)
Linux探测工具BCC(网络) 承接上文,本节以ICMP和TCP为例介绍与网络相关的部分内容. 目录 Linux探测工具BCC(网络) Icmp的探测 TCP的探测 Icmp的探测 首先看下促使我学 ...
- Linux 网络栈 转载
此文章 来自 http://arthurchiao.art/blog/tuning-stack-rx-zh/ [译] Linux 网络栈监控和调优:接收数据(2016) Published ...
- 扩展Linux网络栈
扩展Linux网络栈 来自Linux内核文档.之前看过这篇文章,一直好奇,问什么一条网络流会固定在一个CPU上进行处理,本文档可以解决这个疑问.为了更好地理解本文章中的功能,将这篇文章穿插入内. 简介 ...
- 浏览器-09 javascript引擎和Chromium网络栈
语言的运行 C/C++语言 使用编译器直接将它们编译成本地代码(机器指令),这是由开发人员在代码编写完成之后实施; 用户只是使用这些编译好的本地代码,这些本地代码被系统的加载器加载执行,由操作系统调度 ...
- Linux内核--网络栈实现分析(七)--数据包的传递过程(下)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7545855 更多请查看专栏,地 ...
- Linux内核--网络栈实现分析(六)--应用层获取数据包(上)
本文分析基于内核Linux 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7541907 更多请看专栏,地址http: ...
- Linux内核--网络栈实现分析(四)--网络层之IP协议(上)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7514017 更多请看专栏,地址 ...
- Linux内核--网络栈实现分析(三)--驱动程序层+链路层(上)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7497260 更多请看专栏,地址 ...
随机推荐
- Docker修改IP地址方法
一.查看Docker IP root@master:/# ifconfig docker0 docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu ...
- EAS(能量感知调度)绿色节能调度器
能量感知调度(EAS)使调度程序能够预测其决策对 CPU 消耗的电量的影响. EAS 依赖于 CPU 的能量模型 (EM) 来为每个任务选择省电的 CPU,同时要求对执行任务的吞吐量的影响最小. EA ...
- 2022年最新数据库经典面试题及答案汇总(含PostgreSQL、Oracle、MySQL)
随着企业数字化需求的增加,数据库行业发展日益壮大,企业对DBA岗位的需求也处于逐步增加中.我们梳理了墨天轮平台上2022年最新的一批数据库经典面试题,主要包含PostgreSQL.MySQL和Orac ...
- SaaS架构:开放平台架构设计
大家好,我是汤师爷~ 今天聊聊开放平台架构设计. 为什么需要搭建开放平台 增强产品能力 开放平台能够让三方开发者和合作伙伴开发新的应用或服务,增加原有SaaS产品能力.这样就可以满足更多用户需求,从而 ...
- 基础控件(Button,Edittext,ImageView,ProgressBar,ToolBar,AlertDialog,PopupWindow)
Button 触发事件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...
- (系列九)使用Vue3+Element Plus创建前端框架(附源码)
说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...
- 手写MSMQ微软消息队列收发工具类
一.MSMQ介绍 MSMQ(Microsoft Message Queuing)是微软开发的消息队列技术,支持事务,支持异步发送和接收消息. 两个重要的概念:队列和消息.队列是存放消息的容器和传输消息 ...
- SSIS作业提示所请求的 OLE DB 访问接口 Microsoft.ACE.OLEDB.12.0 尚未注册
没有跨不过的坎,也没有解决不了的问题,那些曾经没有把我们打死的困难,最终都会让我们变得更加强大 最近在使用ETL获取Excel数据时,在本地运行没有任何问题,部署到服务器后,使用作业运行时便一直提示以 ...
- MindSponge分子动力学模拟——增强采样(2024.11)
技术背景 关于增强采样(Enhanced Sampling)算法的具体原理,这里暂不做具体介绍,感兴趣的童鞋可以直接参考下这篇综述文章:Enhanced sampling in molecular d ...
- 两台笔记本电脑实现同一wifi下虚拟主机网络实现互通
一台win笔记本 (安装vmware) 一台macbookpro 本人考虑到M1的macbook,无法安装vmware,这让我这个linux运维人员很是dan疼,没办法只能在自己的win笔记本上安装v ...