在排查一个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. golang 最和谐的子序列

    We define a harmonious array is an array where the difference between its maximum value and its mini ...

  2. 【Java框架型项目从入门到装逼】第七节 - 学生管理系统项目搭建

    本次的教程是打算用Spring,SpringMVC以及传统的jdbc技术来制作一个简单的增删改查项目,对用户信息进行增删改查,就这么简单. 1.新建项目 首先,打开eclipse,新建一个web项目. ...

  3. iOS学习——获取iOS设备的各种信息

    不管是在Android开发还是iOS开发过程中,有时候我们需要经常根据设备的一些状态或信息进行不同的设置和性能配置,例如横竖屏切换时,电池电量低时,内存不够时,网络切换时等等,我们在这时候需要进行一些 ...

  4. [Spark内核] 第35课:打通 Spark 系统运行内幕机制循环流程

    本课主题 打通 Spark 系统运行内幕机制循环流程 引言 通过 DAGScheduelr 面向整个 Job,然后划分成不同的 Stage,Stage 是從后往前划分的,执行的时候是從前往后执行的,每 ...

  5. 设计一个有getMin功能的栈(1)

    题目: 实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. 要求: 1.pop.push.getMin操作的时间复杂度都是O(1) 2.设计的栈类型可以输用现成的栈结构 解答 ...

  6. 通过Chocolatey软件包管理器安装.NET Core

    在Linux的世界里,有了yum/apt-get百分之九十的软件都可以通过它来安装管理.但是在Windows系统上,装个软件还是挺折腾的.比如我要装个Chrome浏览器,我先得打开IE浏览器吧,我还打 ...

  7. 【转载】mysql binlog日志自动清理及手动删除

    说明:当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间.mysql-bin.000001mysql-bin.000002mysql-b ...

  8. SP3精密星历简介

    IGS精密星历采用sp3格式,其存储方式为ASCII文本文件,内容包括表头信息以及文件体,文件体中每隔15 min给出1个卫星的位置,有时还给出卫星的速度.它的特点就是提供卫星精确的轨道位置.采样率为 ...

  9. Redis与数据库同步问题

    缓存数据与持久化数据的一致性,这个问题总结了一下(看到了一个不错的博文),其实就是读和写,还有就是要注意谁先谁后的问题. Redis 是一个高性能的key-value数据库. redis的出现,很大程 ...

  10. 进行app性能和安全性测试的重要性

    如何让用户感觉App运行速度更快呢,这需要对App进行性能测试.限制App性能的因素按照App的系统结构分为App自身和App需要用到的后台服务. 测试App连接网络的速度 一般采用在模拟Mock环境 ...