smp=1情况下一句printk+回车就使linux内核卡死

以下测试也就系统运行起来跑了一会,大概几分钟,没有长时间等着看结果。

linux-5.9.10内核

指定smp=1,qemu启动,启动参数如下,主要是指定了smp=1

#!/bin/sh

para=""

if [ -n "$1" ]; then
    para="-S -gdb tcp::$1"
fi

/ImageStore/ruguang/src/qemu-5.1.0/build/x86_64-softmmu/qemu-system-x86_64 \
  -kernel /ImageStore/ruguang/project/qemu-linux/obj/linux/arch/x86_64/boot/bzImage \
  -initrd /ImageStore/ruguang/project/qemu-linux/obj/initramfs.igz \
  -smp 1 -nographic -append "nokaslr earylyprintk=serial,ttyS0 console=ttyS0" $para

总结:

问题描述:

在smp=1的情况下,

在enqueue_task_fair函数中,加打印,似乎好像只要会用到终端显示,如果一直按回车,系统就会卡死;但是回车要是按得巧,系统也可以没问题运行;

而在__schedule函数中,怎么打印都没问题;

原因解释:还在分析寻找

还在分析,一开始我以为就是简单的抢终端使用的问题,以为在smp=1下,只要打印,就会占着终端就会出现问题。但事实上在不同的函数中打印效果是不同的(比如enqueue_task_fair函数和__schedule函数)。是否根关闭了中断或者关闭了抢占有关系?

CFS调度器

enqueue_task_fair函数中

只加一句打印语句,其他都不动

1. printk, KERN_DEBUG:

image-20210422191520481

结果:正常运行

image-20210422191436622

2. printk, KERN_INFO:

image-20210422191658817

结果:不按回车系统正常,按回车系统卡死

image-20210422195912044

3. printk_ratelimited, KERN_DEBUG:

image-20210422193031832

结果:系统卡死

一开始还能用dmesg看看信息的,过了一小会,回车就没反应了

再等久一点时间,qemu也无反应,ctrl+a+x也关不掉,只能kill掉进程

image-20210422192730928

不按回车,或者按回车的时候不在要打印的时候,似乎系统是没问题的

4. printk_ratelimited, KERN_INFO:

image-20210422192348922

结果:系统卡死

不按回车,或者按回车的时候不在要打印的时候,似乎系统是没问题的

image-20210422193243265

__schedule函数中

只加一句打印,其他什么都不动

1. printk, KERN_DEBUG

image-20210422193635479

结果:正常运行

image-20210422193525039

2. printk, KERN_INFO

image-20210422194028056

结果:正常运行

系统能跑起来,就是打印很多,按回车是有正常反应的

image-20210422193857984

image-20210422193956031

3. printk_ratelimited, KERN_DEBUG

image-20210422194623554

结果:正常运行

image-20210422194551488

4. printk_ratelimited, KERN_INFO

image-20210422194344033

结果:正常运行

image-20210422194308071

自定义fifo调度器

enqueue_task_fifo函数中

和cfs效果一样的,只有第一种情况没问题

1. printk, KERN_DEBUG

image-20210422195325499

结果:正常运行

image-20210422195249526

2. printk, KERN_INFO
结果:不按回车系统正常,按回车系统卡死

(1)不按回车键,不干扰系统,系统一直往下打印,似乎没卡死

(2)一旦按下回车,系统就卡死

image-20210422195706638

3. printk_ratelimited, KERN_DEBUG

image-20210422200516079

结果:系统卡死

按下回车,准备输入,系统直接就卡死了

image-20210422200335064

4. printk_ratelimited, KERN_INFO
结果:系统卡死

依旧是按下回车,准备输入,系统直接就卡死了

image-20210422200644318

似乎是只要按回车的时候不和打印冲突,可能就没事,要是一直快速按回车,就会卡死,大概就是在要打印的时候卡死了,难道和占着终端有关系?

image-20210422200813327

__schedule函数中

试过了,和cfs调度器效果一样的,都没问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值