
深入学习Linux
文章平均质量分 96
Linux网络,ebpf技术解析,Linux性能优化相关知识
邋遢的流浪剑客
成长中的基础架构攻城狮,github:https://github.com/hanxiantao
展开
-
深入理解Linux网络笔记(七):异常TCP连接建立情况、如何查看是否有连接队列溢出发生
如果端口不充足,会导致connect系统调用的时候过多地执行自旋锁等待与哈希查找,会引起CPU开销上涨。严重情况下会耗光CPU,影响用户业务逻辑的执行。通过调整ip_local_port_range来尽量加大端口范围尽量复用连接,使用长连接来削减频繁的握手处理第三个有用,但是不太推荐的方法是开启tcp_tw_reuse和tcp_tw_recycle半连接队列满,且tcp_syncookies为0全连接队列满,且有未完成的半连接请求。原创 2023-11-18 13:58:20 · 888 阅读 · 0 评论 -
深入理解Linux网络笔记(六):深度理解TCP连接建立过程
icsk->icsk_accept_queue定义在inet_connection_sock下,是一个request_sock_queue类型的对象,是内核用来接收客户端请求的主要数据结构。...// 全连接队列...// 半连接队列...对于全连接队列来说,在它上面不需要进行复杂的查找工作,accept处理的时候只是先进先出地接受就好了。所以全连接队列通过rskq_accept_head和rskq_accept_tail以链表的形式来管理。原创 2023-11-18 11:25:07 · 646 阅读 · 0 评论 -
深入理解Linux网络笔记(五):深度理解本机网络IO
1)127.0.0.1本机网络IO需要经过网卡吗?不需要经过网卡。即使把网卡拔了,本机网络还是可以正常使用的2)数据包在内核中是什么走向,和外网发送相比流程上有什么差别?总的来说,本机网络IO和跨机网络IO比较起来,确实是节约了驱动上的一些开销。发送数据不需要进RingBuffer的驱动队列,直接把skb传给接收协议栈(经过软中断)。但是在内核其他组件上,可是一点儿都没少,系统调用、协议栈(传输层、网络层等)、设备子系统整个走了一遍。连驱动程序都走了(虽然对于回环设备来说只是一个纯软件的虚拟出来的东西)。原创 2023-10-29 09:54:47 · 535 阅读 · 2 评论 -
深入理解Linux网络笔记(四):内核是如何发送网络包的
1)我们在监控内核发送数据消耗的CPU时,应该看sy还是si?在网络包的发送过程中,用户进程(在内核态)完成了绝大部分的工作,甚至连调用驱动的工作都干了。只当内核态进程被切走前才会发起软中断。发送过程中,绝大部分(90%)以上的开销都是用户进程内核态消耗掉的只有一少部分情况下才会触发软中断(NET_TX类型),由软中断ksoftirqd内核线程来发送所以,在监控网络IO对服务器造成的CPU开销的时候,不能仅看si,而是应该把si、sy都考虑进来。原创 2023-10-24 08:00:53 · 541 阅读 · 0 评论 -
深入理解Linux网络笔记(三):内核和用户进程协作之epoll
1)阻塞到底是怎么一回事?阻塞其实说的是进程因为等待某个事件而主动让出CPU挂起的操作。在网络IO中,当进程等待socket上的数据时,如果数据还没有到来,那就把当前进程状态从TASK_RUNNING修改为TASK_INTERRUPTIBLE,然后主动让出CPU。由调度器来调度下一个就绪状态的进程来执行所以,在分析某个技术方案是不是阻塞的时候,关键要看进程有没有放弃CPU。如果放弃了,那就是阻塞。如果没放弃,那就是非阻塞。事实上,recvfrom也可以设置成非阻塞。原创 2023-10-07 07:32:25 · 695 阅读 · 2 评论 -
深入理解Linux网络笔记(二):内核和用户进程协作之阻塞方式
第一部分是我们自己的代码所在的进程,我们调用的socket()函数会进入内核态创建必要内核对象。recv()函数在进入内核态以后负责查看接收队列,以及在没有数据可处理的时候把当前进程阻塞掉,让出CPU第二部分是硬中断、软中断(系统线程ksoftirqd)。在这些组件中,将包处理完后会放到socket的接收队列中。原创 2023-10-01 08:59:06 · 613 阅读 · 0 评论 -
深入理解Linux网络笔记(一):内核是如何接收网络包的
本文为《深入理解Linux网络》学习笔记,使用的Linux源码版本是3.10,网卡驱动是Intel的igb网卡驱动Linux源码在线阅读:https://elixir.bootlin.com/linux/v3.10/source。原创 2023-09-16 08:59:12 · 1978 阅读 · 1 评论