- 博客(4)
- 收藏
- 关注
原创 内核日志限速功能分析
在[begin, begin+interval]时间内,并且打印消息次数没超过burst,则函数返回1,表示允许打印消息,否则对missed计数,在[begin, begin+interval]之外,并且missed有计数的情况下,才打印一次消息被抑制信息,然后重新设置下一个时间段的[begin, begin+interval]进行限速。上面代码表示如果__ratelimit(&oom_rs)返回非0,允许dump_header打印日志,返回0不允许打印,日志被限速了。
2025-06-25 12:39:43
260
原创 内核对申请虚拟内存的处理策略overcommit
0: heuristic overcommit (this is the default) 默认值,只检测申请的内存页是否超过物理内存页和交换页之和,没超过则允许。避免每次统计提交申请内存页数都增加到全局fbc->count,只有当前cpu上统计达到batch之后才增加到fbc->count,提高性能。vm_commit_limit函数计算策略值为OVERCOMMIT_NEVER(2)的时候,初始允许申请的内存上限。vm_acct_memory用来累加申请的虚拟内存页数。
2025-06-19 16:26:14
166
原创 SystemV 消息队列收发流程分析
发送和接收函数都在ipc/msg.c文件中for循环中的主要处理逻辑是通过msg_fits_inqueue判断是否加入新消息会导致消息队列满1:消息队列未满,则跳出for循环,继续发送流程处理;
2024-10-16 17:37:14
355
原创 【openEuler上使用qemu调试linux内核】
打开DEBUG_INFO,会编译出带调试信息的vmlinux,后续用gdb vmlinux调试。没有命令的话通过 yum install qemu-system-x86_64 -y 安装。这三个模块编译进内核能让内核在启动时识别到我们制作的rootfs.img系统盘为sda。设置BLK_DEV_SD=y 将sd_mod.ko模块编译进内核。设置ATA_PIIX=y 将ata_piix.ko编译进内核。-S #在启动时冻结cpu,类似于启动时打了一个断点。设置ATA=y 将libata.ko编译进内核。
2024-07-14 12:40:01
1840
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人