在排查一个nvme的的workqueue的问题的时候,发现nvme的queue的进程名被截断了,

[root@localhost caq]# ps -ef |grep -i nvme
root : ? :: [nvme]
root : pts/ :: grep --color=auto -i nvme
root : ? :: [xfs-buf/nvme0n1]
root : ? :: [xfs-data/nvme0n]
root : ? :: [xfs-conv/nvme0n]
root : ? :: [xfs-cil/nvme0n1]
root : ? :: [xfs-log/nvme0n1]
root : ? :: [xfsaild/nvme0n1]
root : ? :: [xfs-buf/nvme1n1]
root : ? :: [xfs-data/nvme1n]
root : ? :: [xfs-conv/nvme1n]
root : ? :: [xfs-cil/nvme1n1]
root : ? :: [xfs-log/nvme1n1]
root : ? :: [xfsaild/nvme1n1]
root : ? :: [xfs-buf/nvme2n1]
root : ? :: [xfs-data/nvme2n]
root : ? :: [xfs-conv/nvme2n]
root : ? :: [xfs-cil/nvme2n1]
root : ? :: [xfs-log/nvme2n1]
root : ? :: [xfsaild/nvme2n1]
root : ? :: [xfs-buf/nvme3n1]
root : ? :: [xfs-data/nvme3n]
root : ? :: [xfs-conv/nvme3n]
root : ? :: [xfs-cil/nvme3n1]
root : ? :: [xfs-log/nvme3n1]
root : ? :: [xfsaild/nvme3n1]
root : ? :: [dio/nvme0n1]
root : ? :: [dio/nvme2n1]
root : ? :: [dio/nvme1n1]
root : ? :: [dio/nvme3n1]

一开始怀疑是ps命令截断了,然后看一下crash中对应的长度,发现也是截断的。

crash> ps |grep xfs-reclaim/sda
ffff885f5eab3f40 IN 0.0 [xfs-reclaim/sda]
ffff8857066f8fd0 IN 0.0 [xfs-reclaim/sda]
ffff885705eb8000 IN 0.0 [xfs-reclaim/sda]
ffff8855553b8000 IN 0.0 [xfs-reclaim/sda]
ffff88291574eeb0 IN 0.0 [xfs-reclaim/sda]
ffff885555e5eeb0 IN 0.0 [xfs-reclaim/sda]
ffff8855556adee0 IN 0.0 [xfs-reclaim/sda]

一个工作队列的创建流程如下,比如使用alloc_workqueue--->__alloc_workqueue_key--->

    rescuer->rescue_wq = wq;
rescuer->task = kthread_create(rescuer_thread, rescuer, "%s",
wq->name); char name[WQ_NAME_LEN]; /* I: workqueue name */
WQ_NAME_LEN = 24,

所以按道理应该是23字节的长度,再继续看

#define kthread_create(threadfn, data, namefmt, arg...) \
kthread_create_on_node(threadfn, data, -, namefmt, ##arg) struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),
void *data, int node,
const char namefmt[],
...)
{
struct kthread_create_info create; create.threadfn = threadfn;
create.data = data;
create.node = node;
init_completion(&create.done); spin_lock(&kthread_create_lock);
list_add_tail(&create.list, &kthread_create_list);
spin_unlock(&kthread_create_lock); wake_up_process(kthreadd_task);
wait_for_completion(&create.done); if (!IS_ERR(create.result)) {
static const struct sched_param param = { .sched_priority = };
va_list args; va_start(args, namefmt);
vsnprintf(create.result->comm, sizeof(create.result->comm),
namefmt, args);-----------被截断了
va_end(args);

char comm[TASK_COMM_LEN]; /* executable name excluding path
                           - access with [gs]et_task_comm (which lock
                           it with task_lock())
                           - initialized normally by setup_new_exec */

/* Task command name length */
#define TASK_COMM_LEN 16

所以又被截断成了15字节。所以只能展示这么多。

linux workqueue的名字长度小问题的更多相关文章

  1. linux常用命令与实例小全

    转至:https://www.cnblogs.com/xieguohui/p/8296864.html  linux常用命令与实例小全 阅读目录(Content) 引言 一.安装和登录 (一)    ...

  2. Linux下提权常用小命令

    有些新手朋友在拿到一个webshell后如果看到服务器是Linux或Unix操作系统的就直接放弃提权,认为Linux或Unix下的提权很难,不是大家能做的,其实Linux下的提权并没有很多人想象的那么 ...

  3. Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果

    Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果 前言: 每次写之前都会来一段(废)话.{心塞...} Google Play首页两个tab背景 ...

  4. [内核]Linux workqueue

    转自:http://blog.chinaunix.net/uid-24148050-id-296982.html 一.workqueue简介workqueue与tasklet类似,都是允许内核代码请求 ...

  5. Linux workqueue疑问【转】

    转自:http://blog.csdn.net/angle_birds/article/details/9387365 各位大神,你们好.我在使用workqueue的过程中遇到一个问题. 项目采用uC ...

  6. Linux没有最小只有更小----迷你Linux版本大集合(转)

    [自从去年到现在已经收集了上百种版本的Linux和Unix,至于Unix就不想说了,没有Linux的功底是很难驾驭Unix的,我在这里只把小于360M的Linux以及一些非Linux但是很像Linux ...

  7. 2019-9-2-dotnet-命名管道名字长度限制

    title author date CreateTime categories dotnet 命名管道名字长度限制 lindexi 2019-09-02 11:54:50 +0800 2019-09- ...

  8. Linux Workqueue【转】

    转自:http://kernel.meizu.com/linux-workqueue.html 21 August 2016   Workqueue 是内核里面很重要的一个机制,特别是内核驱动,一般的 ...

  9. 刚接触Linux,菜鸟必备的小知识点(一)

    身为一个将要大四的学生,而且还是学计算机的没有接触过linux简直是羞愧难当.这个假期做了一个软件测试员,必须要熟悉linux的操作,所以对于我这个菜鸟我也就说几点比较重要的小知识点吧. 第一.cd指 ...

随机推荐

  1. JS获取前天、昨天、今天、明天、后天的时间

    GetDateStr = function(AddDayCount) { var dd = new Date(); dd.setDate(dd.getDate()+AddDayCount);//获取A ...

  2. css中的 nav ul li ul 与 nav>ul>li 这两种写法的区别

    <nav> <ul id="a"> <li>a1</li> <li>a2</li> <li>a3 ...

  3. SAP的这三款CRM解决方案,您能区分清楚么

    我的一位同事, John Burton, 在2017年12月底写过一篇博文:Explaining SAP's portfolio of "CRM Service" related ...

  4. ubuntu使用rdesktop连接win10的两个问题

    关闭防火墙,解决主机ping不通虚拟机的问题 win10需要修改注册表 \HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStatio ...

  5. Keepalived实战(3)

    一.环境 如上图所示: keepalived的mater为proxy-master,keepalived的slave为proxy-slave. 要求:当mater出现问题时,主动切换到slave上.这 ...

  6. 读书笔记-JavaScript面向对象编程(三)

    第7章 浏览器环境 7.1 在HTML页面中引入JavaScript代码 7.2概述BOM与DOM(页面以外事物对象和当前页面对象) 7.3 BOM 7.3.1 window对象再探(所以JavaSc ...

  7. 查找算法的实现(C/C++实现)

    存档: #include <stdio.h> #include <stdlib.h> #define max 20 typedef int keytype; #include ...

  8. C/C++中substr函数的应用(简单讲解)

    substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 subst ...

  9. [bzoj1783] [Usaco2010 Jan]Taking Turns

    题意: 一排数,两个人轮流取数,保证取的位置递增,每个人要使自己取的数的和尽量大,求两个人都在最优策略下取的和各是多少. 注:双方都知道对方也是按照最优策略取的... 傻逼推了半天dp......然后 ...

  10. Can you find it?(哈希)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 Can you find it? Time Limit: 10000/3000 MS (Java ...