日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux的bh文件停止运行,linux 系统 rcu_bh self-detected stall 问题处理

發布時間:2024/9/30 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux的bh文件停止运行,linux 系统 rcu_bh self-detected stall 问题处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Written by

arstercz

-2019-04-26

linux 系統 rcu_bh self-detected stall 問題處理

問題說明

近期幾臺 linux 機器都報了以下 kernel 提示:

Apr 24 21:02:09 cztest kernel: INFO: rcu_bh self-detected stall on CPU { 0} (t=0 jiffies)

Apr 24 21:02:09 cztest kernel: Pid: 0, comm: swapper/0 Not tainted 3.4.95.R620.CentOS6.5-x86_64.OpenBeta.KVM #1

Apr 24 21:02:09 cztest kernel: Call Trace:

Apr 24 21:02:09 cztest kernel: [] __rcu_pending+0x192/0x4e0

Apr 24 21:02:09 cztest kernel: [] ? tick_nohz_handler+0xf0/0xf0

Apr 24 21:02:09 cztest kernel: [] rcu_check_callbacks+0xcb/0xe0

Apr 24 21:02:09 cztest kernel: [] update_process_times+0x43/0x80

Apr 24 21:02:09 cztest kernel: [] tick_sched_timer+0x61/0xb0

Apr 24 21:02:09 cztest kernel: [] __run_hrtimer+0x5d/0x120

Apr 24 21:02:09 cztest kernel: [] hrtimer_interrupt+0xee/0x250

Apr 24 21:02:09 cztest kernel: [] smp_apic_timer_interrupt+0x64/0xa0

Apr 24 21:02:09 cztest kernel: [] apic_timer_interrupt+0x6a/0x70

Apr 24 21:02:09 cztest kernel: [] ? sched_clock_cpu+0xb8/0x110

Apr 24 21:02:09 cztest kernel: [] ? native_safe_halt+0x6/0x10

Apr 24 21:02:09 cztest kernel: [] ? cpuidle_idle_call+0x1f/0xf0

Apr 24 21:02:09 cztest kernel: [] default_idle+0x27/0x50

Apr 24 21:02:09 cztest kernel: [] cpu_idle+0x89/0xd0

Apr 24 21:02:09 cztest kernel: [] rest_init+0x6d/0x80

Apr 24 21:02:09 cztest kernel: [] start_kernel+0x34d/0x35a

Apr 24 21:02:09 cztest kernel: [] ? kernel_init+0x1d5/0x1d5

Apr 24 21:02:09 cztest kernel: [] x86_64_start_reservations+0x131/0x136

Apr 24 21:02:09 cztest kernel: [] x86_64_start_kernel+0x101/0x110

該主機的環境如下:

System | Dell Inc.; PowerEdge R620; vNot Specified (Rack Mount Chassis)

Platform | Linux

Kernel | 3.4.95

Total Memory | 64G

處理說明

linux 提供了 RCU(read, copy and update) 機制來解決多核處理器之間的數據同步問題, 上述提示中的 rcu_bh 意為 rcu bottom halves, 即 rcu 機制相關的下半部中斷處理, rcu bh 在 2.6.9 內核中引入的主要目的是為了防 DDos 攻擊, 在較新的系統中主要在軟中斷中運行. 系統中一些需要快速處理的中斷程序通常會在上半部處理, 對時間要求比較寬松的中斷程序會在下半部處理. 中斷程序一般都在軟硬件驅動, 內核等層面出現, 用戶空間的應用程序不會做中斷的處理. 按照內核文檔的描述, 以下情況會出現 rcu_bh stall 相關的警告信息:

詳見: kernel-source/Documentation/RCU/stallwarn.txt

So your kernel printed an RCU CPU stall warning. The next question is

"What caused it?" The following problems can result in RCU CPU stall

warnings:

o A CPU looping with interrupts disabled. This condition can

result in RCU-sched and RCU-bh stalls.

o A CPU looping with preemption disabled. This condition can

result in RCU-sched stalls and, if ksoftirqd is in use, RCU-bh

stalls.

o A CPU looping with bottom halves disabled. This condition can

result in RCU-sched and RCU-bh stalls.

一共三種情況會出現 rcu_bh 相關的提示, 分別為:

1. CPU 循環處理中禁止了中斷;

2. CPU 循環處理中禁止了搶占, 并且啟用了 ksoftirqd;

3. CPU 循環處理中禁止了下半部;

這幾個條件都是和中斷或內核搶占相關的, 由此看來應用程序不是引起該警告的原因, 更像是系統層面的.

再來看上面的報錯:

INFO: rcu_bh self-detected stall on CPU { 0} (t=0 jiffies)

可以譯為檢測到 cpu 0 上存在 rcu_bh 處理延遲或超時. 不過從 linux-3.4/kernel/rcutree.c 源文件來看:

static void print_cpu_stall(struct rcu_state *rsp)

{

...

printk(KERN_ERR "INFO: %s self-detected stall on CPU", rsp->name);

print_cpu_stall_info_begin();

print_cpu_stall_info(rsp, smp_processor_id());

print_cpu_stall_info_end();

printk(KERN_CONT " (t=%lu jiffies)\n", jiffies - rsp->gp_start);

if (!trigger_all_cpu_backtrace())

dump_stack();

...

t=0 jiffies 這里的 0 就很奇怪, 因為從代碼里看這里的值應該是當前 jiffies(當前系統自啟動以來的節拍總數, jiffies / HZ 即為機器啟動的秒數, 系統的時鐘頻率 HZ 默認為 100, 相當于10ms 一次) 減去中斷程序啟動的 jiffies. 這里的 0 意味著經歷了 0 個節拍, 在 10ms 之內. 下半部的中斷在 10ms 內就被認為是處理延遲或超時. 不過 10ms 還遠沒超過默認的 timeout(60s) 值, 可以從 /sys/module/rcutree/parameters/rcu_cpu_stall_timeout 查看該值. 這個問題先保留, 或許可以通過升級內核版本解決.

另外堆棧中的信息, update_process_times 函數主要通過計時器中斷程序來給當前的進程計時, 不過在計時前對 rcu 的調用進行了檢查, 上述的堆棧信息即從 rcu_check_callbacks 中輸出. 可以看到執行 rcu_check_callbacks 函數后, 無論是否打印堆棧信息都會執行后續的計時操作. 所以從這方面來看上面的信息只是警告信息, 不會影響用戶空間程序的使用.

Apr 24 21:02:09 cztest kernel: [] update_process_times+0x43/0x80

source/kernel/timer.c

void update_process_times(int user_tick)

{

struct task_struct *p = current;

int cpu = smp_processor_id();

/* Note: this timer irq context must be accounted for as well. */

account_process_tick(p, user_tick);

run_local_timers();

rcu_check_callbacks(cpu, user_tick); // ---> rcu_pending -> __rcu_pending -> print_cpu_stall

printk_tick();

#ifdef CONFIG_IRQ_WORK if (in_irq())

irq_work_run();

#endif scheduler_tick();

run_posix_cpu_timers(p);

總結說明

從上述的簡單分析來看, 該消息只是提示信息, 不會是用戶空間的程序來引起, 不過也需要多觀察該 kernel 提示是否頻繁出現. 可以嘗試通過升級內核來解決該問題.

參考:

總結

以上是生活随笔為你收集整理的linux的bh文件停止运行,linux 系统 rcu_bh self-detected stall 问题处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产91网| av网站免费大全 | 亚洲尹人| av资源网在线观看 | 爱av导航| 久久久久久国产精品免费 | 成人手机看片 | 成人免费在线网址 | 久久久国产精品一区二区三区 | 777四色| 亚洲国产成人无码av在线 | 久久久久一区二区精码av少妇 | 欧美做爰啪啪xxxⅹ性 | 午夜免费看 | 日韩欧美一区二区三区四区五区 | 国产伊人网 | 奇米影视7777 | 免费污网站在线观看 | 亚洲久视频| 亚洲AV无码精品色毛片浪潮 | 亚洲第一欧美 | 爱啪啪av | 福利视频三区 | 国产精品边吃奶边做爽 | 老色批永久免费网站www | 成人免费看片视频 | 欧美日本高清视频 | 国内偷拍av| 久久亚洲AV成人无码国产野外 | 视频免费在线 | 大肉大捧一进一出好爽mba | 超碰在线cao| 最近中文字幕在线观看视频 | 真人真事免费毛片 | 午夜寂寞影视 | 亚洲欧美一区二区三区四区 | 我的公把我弄高潮了视频 | 在线观看国产欧美 | 艳妇臀荡乳欲伦交换电影 | 特级特黄aaaa免费看 | videosex抽搐痉挛高潮 | 在线免费国产视频 | 亚洲香蕉在线视频 | 天堂999| 午夜影院免费在线观看 | 婷婷色图 | 成人手机在线观看 | 日韩一区二区三免费高清在线观看 | 欧美人与zoxxxx另类 | 亚洲欧美另类国产 | 欧美中出 | 欧美特黄一区二区三区 | 97天天干| 欧美日韩六区 | 午夜精品福利影院 | 亚洲一区二区三区国产 | 久久理论电影 | 波多野结衣99 | 国产欧美一区二区三区另类精品 | 91黄色在线观看 | 国产不卡视频在线 | 亚洲AV成人无码精品久久盆瓶 | 黑人糟蹋人妻hd中文字幕 | 三级免费黄录像 | 久青草视频在线观看 | 性久久久久久久久久久久 | 久久午夜夜伦鲁鲁片无码免费 | 1024手机看片日韩 | 欧美日韩国产一区二区 | 国产成人精品视频ⅴa片软件竹菊 | 国产精品日韩一区二区三区 | 孕妇疯狂做爰xxxⅹ 国产精品乱码久久久久久 99久久久成人国产精品 | 日本免费在线观看视频 | 国产精品丝袜视频 | 日韩欧美一二三四区 | xxxx69视频| 黑人粗进入欧美aaaaa | 特级毛片av | 国产婷婷色一区二区三区 | 国产人妻黑人一区二区三区 | 天天色宗合 | 国产精品永久久久久久久久久 | 一区二区久久精品66国产精品 | 人妻va精品va欧美va | 日本五十肥熟交尾 | 中国成熟妇女毛茸茸 | 夜夜爱视频 | 一区二区三区日本视频 | 国产微拍精品 | 日韩乱码人妻无码中文字幕久久 | 久久久青| 正在播放老肥熟妇露脸 | 新天堂av | 亚洲av乱码一区二区 | 亚洲免费中文字幕 | 成年网站在线观看 | 成人宗合网 | 日本肉体xxxx裸体137大胆图 | 欧美脚交|