Linux内核
文章平均质量分 52
forsakening
这个作者很懒,什么都没留下…
展开
-
veth网卡的多队列及RPS
3.10内核下容器使用的veth网卡,默认开启的是一个队列,导致在某些单线程多TCP链接的应用场景下,出现某个CPU软中断高的情况。之前处理的方案一直是开启这个veth网卡的RPS,让其在多流场景下可以去分散到其它CPU上,将某个CPU上的软中断降低。其中,skb_get_rx_queue可以通过veth的多队列,拿到不同的队列,但是下面的一个流程,是要配合rps去使用的,所以当前3.10.957的内核即使veth使用了多队列,若没有开rps的话,仍然是返回到当前cpu。带着这个问题看一下内核的处理流程。原创 2023-05-18 16:13:31 · 1039 阅读 · 0 评论 -
socket send:broken pipe
tcp socket在调用send接口时,出现了程序出现:Program received signal SIGPIPE, Broken pipe的异常。说明程序收到了SIGPIPE的信号。一般网上的处理手段是signal(SIGPIPE, SIG_IGN);忽略这个信号,但实际测试过程中貌似没太生效,这块没具体研究。还是直接分析下原因,为何sendret = send(sockfd, sendmsg, strlen(sendmsg), 0);这样一段代码会引起程序收到SIGPIPE信号呢?原创 2022-04-23 21:28:20 · 3567 阅读 · 1 评论 -
TCP未监听端口收到报文,为何会回应reset报文
说下结论:linux下,在某个tcp未监听端口收到报文时,会回复reset报文,代码层面初步分析如下。tcp_v4_rcv中调用__inet_lookup_skb查找报文对应得socket,当没有socket时,会走到“no_tcp_socket”流程,该流程会发送reset报文。lookup:sk = __inet_lookup_skb(&tcp_hashinfo, skb, __tcp_hdrlen(th), th->source,...原创 2021-12-08 20:10:23 · 2244 阅读 · 0 评论 -
Linux下获取cpu温度
大致strace跟踪了下sensors命令,发现是读取类似/sys/class/hwmon/hwmon1/temp1_input中的值,再结合google下的如下几篇文章:https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface总结如下:# ls -al /sys/class/hwmon/total 0drwxr-xr-x 2 root root 0 Aug 11 10:09 .drwxr-xr-x 64 root r原创 2021-08-11 10:24:27 · 15122 阅读 · 0 评论 -
ifb与tc police对接收方向限速性能比较
参考:【1】https://www.cnblogs.com/xingmuxin/p/10826703.html【2】https://blog.csdn.net/dog250/article/details/40680765 dog250大神对ifb的理解1.使用ifb进行容器的出向限速 创建ifb,并mirror流量至ifb网卡上,限制发送侧5G的发送流量 modprobe ifb //支持参数,默认创建ifbx网卡的数目 ifconfig ifb1 up ...原创 2021-05-20 21:40:47 · 2054 阅读 · 0 评论 -
Linux内核kobject模型(添加kobject对象,模拟kobject状态变化)
#include #include #include #include #include #include static struct kobject *parent;static struct kobject *child;static struct kset *c_kset;static unsigned long原创 2013-11-18 13:59:57 · 1037 阅读 · 0 评论 -
EXPORT_SYMBOL
参考:http://shaojiashuai123456.iteye.com/blog/840015include/linux/module.h:/* For every exported symbol, place a struct in the __ksymtab section */#define __EXPORT_SYMBOL(sym, sec) \ extern转载 2013-08-15 08:57:56 · 1238 阅读 · 0 评论 -
Linux中的分段
转载地址:http://blog.163.com/yangfan876@126/blog/static/8061245620129234105537/---------------------------------------------------------------------------------------------------------------------------转载 2013-07-23 20:43:40 · 1500 阅读 · 0 评论 -
为什么说在持有自旋锁时不能进入睡眠或阻塞
看LDD149页时,看到休眠的两条规则,其中之一是说,永远不要再原子上下文睡眠!为什么说,驱动程序在持有自旋锁时绝对不能进入睡眠,而在拥有信号量时就可以? 看到网上有人这么提问,这也是我读书时候自己迷惑不解的地方。但是,通过仔细研读,我理解到了这个问题的答案。我在网上也看了大家对于这个问题的回答,大都没说到点上。根据我自己的理解,应该是: 自旋锁禁止处理器抢占;而信号量转载 2013-06-26 20:45:09 · 2652 阅读 · 0 评论 -
open系统调用在内核中的流程浅析
转载地址:http://linux.chinaunix.net/techdoc/develop/2008/12/18/1053790.shtml正文:---------------------------------------------------------------------------------------------------------------------转载 2013-06-16 12:50:02 · 1274 阅读 · 0 评论 -
container_of浅析
转载地址:http://blog.csdn.net/yinkaizhong/article/details/4093795向原作者们致敬^ _ ^正文:-------------------------------------------------------------------------------------------问题:如何通过结构中的某个变量获取结构转载 2013-06-16 10:49:53 · 839 阅读 · 0 评论 -
THIS MODULE/struct module【需完善...】
转载地址:[1] http://blog.csdn.net/a954423389/article/details/6101369正文:结构体struct module在内核中代表一个内核模块,通过insmod(实际执行init_module系统调用)把自己编写的内核模块插入内核时,模块便与一个 struct module结构体相关联,并成为内核的一部分。下面是结构体struct转载 2013-06-15 15:54:06 · 946 阅读 · 0 评论 -
Linux内核模块/驱动编程基础
1. 正文----------------------------------------------------------------------------------------------------------------linux内核开发时需要注意以下几个问题:1.不能访问C库,内核不能使用标准库。这个可以在编译链接内核以后从内核目录下的.vmlinux.cmd可以看出:转载 2013-06-03 20:42:17 · 866 阅读 · 0 评论