首页 > 系统相关 >内核进程rpciod

内核进程rpciod

时间:2022-12-26 12:02:33浏览次数:45  
标签:lockup rpciod softirq kernel rpc 内核 进程 sunrpc

   近期在处理cpu soft lockup问题时注意到rpciod进程影响较大,先简单了解下,具体还未找到原因和解决方法

rpciod进程简介

rpciod进程对应的内核线程共有32个,从rpciod/0到rpciod/31(具体查询见下图), 每个处理器核对应一个rpciod内核线程,主要作用是作为远过程调用服务的守护进程,用于从客户端启动I/O服务,通常启动NFS服务时要用到它。

rpciod问题报错

通过messge日志看到,cpu soft lockup产生,导致软锁的进程名字和PID为:rpciod进程,PID 5562,所在的cpu逻辑核为cpu0上,软中断67s。

kernel: BUG: soft lockup - CPU#0 stuck for 67s! [rpciod/0:5562]

截图如下:第一行信息。

内核进程rpciod_rpc

分析过程

通过接下来的trace call堆栈调用信息分析和sunrpc模块对应的NFS服务有关。

kernel: Call Trace:
kernel: <IRQ>
kernel: [<ffffffff814e2033>] ? packet_rcv+0x373/0x440
kernel: [<ffffffff81448167>] ? __netif_receive_skb+0x477/0x750
kernel: [<ffffffff8144a578>] ? netif_receive_skb+0x58/0x60
kernel: [<ffffffff8144a680>] ? napi_skb_finish+0x50/0x70
kernel: [<ffffffff8144cc29>] ? napi_gro_receive+0x39/0x50
kernel: [<ffffffffa018526c>] ? igb_poll+0x7ec/0xc70 [igb]
kernel: [<ffffffff8100de89>] ? handle_irq+0x49/0xa0
kernel: [<ffffffff81076d58>] ? irq_exit+0x48/0x90
kernel: [<ffffffff81516c95>] ? do_IRQ+0x75/0xf0
kernel: [<ffffffff8144cd43>] ? net_rx_action+0x103/0x2f0
kernel: [<ffffffff81076fb1>] ? __do_softirq+0xc1/0x1e0
kernel: [<ffffffff8100c1cc>] ? call_softirq+0x1c/0x30
kernel: <EOI>
kernel: [<ffffffff8100de05>] ? do_softirq+0x65/0xa0
kernel: [<ffffffff810778fa>] ? local_bh_enable_ip+0x9a/0xb0
kernel: [<ffffffff815101ab>] ? _spin_unlock_bh+0x1b/0x20
kernel: [<ffffffffa03b1a4c>] ? xprt_release+0xac/0x220 [sunrpc]
kernel: [<ffffffffa03b8f5d>] ? rpc_release_resources_task+0x1d/0x50 [sunrpc]
kernel: [<ffffffffa03b9a84>] ? __rpc_execute+0x174/0x350 [sunrpc]
kernel: [<ffffffffa03b9d00>] ? rpc_async_schedule+0x0/0x40 [sunrpc]
kernel: [<ffffffffa03b9d2a>] ? rpc_async_schedule+0x2a/0x40 [sunrpc]
kernel: [<ffffffff81090ac0>] ? worker_thread+0x170/0x2a0
kernel: [<ffffffff81096c80>] ? autoremove_wake_function+0x0/0x40
kernel: [<ffffffff81090950>] ? worker_thread+0x0/0x2a0
kernel: [<ffffffff81096916>] ? kthread+0x96/0xa0
kernel: [<ffffffff8100c0ca>] ? child_rip+0xa/0x20
kernel: [<ffffffff81096880>] ? kthread+0x0/0xa0
kernel: [<ffffffff8100c0c0>] ? child_rip+0x0/0x20

关键词分析:autoremove_wake_function、rpc_async_schedule、rpc_execute、rpc_release_resources_task、xprt_release、spin_unlock_bh、local_bh_enable_ip、do_softirq、接下来的call_softirq、net_rx_action、do_IRQ、irq_exit、handle_irq、napi_gro_receive、netif_receive_skb、packet_rcv。

从上面的关键词判断:rpc在调用执行过程(autoremove_wake_function、rpc_async_schedule、rpc_execute、rpc_release_resources_task等)中引起了softirq(软中断)导致了net模块异常,引起了相应网络的短暂性中断(soft lockup--67s)。

内核进程rpciod_softirq_02

具体rpciod调用过程出现的日志报错需要通过kdump功能的vmcore日志(故障时黑匣子)分析具体发生了什么,比如rpciod的多长事件引起IRQ函数中断,导致了cpu soft lockup现象产生。

其他分析

通过对rpciod进程分析后,发现正真反应到系统内具体服务的时NFS服务,具体排查过程如下:

 ps aux | grep rpciod  查看当前系统中rpciod进程运行时间,从截图中发现rpciod进程ID 5562对应的时间较长,对应的cpu核为0。

内核进程rpciod_rpciod_03

内核进程rpciod_软中断_04

可以通过挂载关系和磁盘使用关系找到nfs的详细信息。

比对其他未发现cpusoft lockup的主机系统,rpciod对应的信息(系统运行时间为0,表示没有堵塞)如下:

内核进程rpciod_软中断_05




标签:lockup,rpciod,softirq,kernel,rpc,内核,进程,sunrpc
From: https://blog.51cto.com/chier11/5968716

相关文章

  • Linux进程调度
    进程调度概览多任务多任务操作系统就是能同时运行多个进程的操作系统:在单处理器上,这会产生多个进程在同时运行的幻觉在多处理器上,这会使多个进程在不同的处理器上真正......
  • Linux下进程间通信概述
    Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的集合SystemVIPC(贝尔实验室)和socket的进程间通信机制(BSD)的优势 Unix进程间通信(IPC)方式包括......
  • Linux守护进程
       守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件 ......
  • 进程编程基础
    fork()fork()函数用于从已存在的进程中创建一个新进程。新进程称为子进程,而原进程称为父进程。使用fork()函数得到的子进程是父进程的一个复制品,它从父进程处继承了整个......
  • RT-Mutex——内核文档翻译——rt-mutex.rst
    翻译:kernel-5.10\Documentation\locking\rt-mutex.rst==================================支持PI的RT-mutex子系统==================================具有优先级继......
  • Linux进程信号
    写在前面下面我们来学习Linux中第三个模块,进程信号.今天我们将正式解释kill指令为何可以杀掉进程,这里存在很多小的知识点,信号在谈正式的内容之前,我们需要想一下我们之前......
  • [oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程
    查看进程回忆上次内容上次先<kbd>ctrl</kbd>+<kbd>z</kbd>挂起进程然后运行bg程序继续跑起来而且不断输出到标准输出流甚至连<kbd>ctrl</kbd>+<kbd>c</kbd>都无法结......
  • [oeasy]python0032_杀死进程_进程后台运行不输出_nohup_ps_显示进程
    ​ 查看进程回忆上次内容上次先ctrl+z挂起进程然后运行bg​编辑程序继续跑起来而且不断输出到标准输出流甚至连ctrl+c都无法结束进程了这可怎......
  • 八、进程相关函数
    相关函数:abort头文件 :#include<stdlib.h>函数原型:voidabort(void);函数说明:引起进程异常终止,此时所有已打开的文件流会自动关闭,缓冲区里的数据也会自动写回返......
  • java进程与内核关系
    进程与线程我们先从Linux的进程谈起,操作系统要运行一个可执行程序,首先要将程序文件加载到内存,然后CPU去读取和执行程序指令,而一个进程就是“一次程序的运行过程”,内核会给......