在排查一个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. Mac下安装pymssql

    需要先安装freetds 先用 brew list 查看已经安装的包 如果已经安装freetds,则使用 brew uninstall freetds先卸载 brew unlink freetds b ...

  2. TPYBoard—MicroPython开发板免费试用!你最想抱走哪款?

    TPYBoard开发板自上市开售以来,受到了广大硬件及MicroPython爱好者的一致好评,许多人提出想试用开发板的申请.为此,TPYBoard特推出多款开发板免费试用活动,感兴趣的朋友抓紧申请吧! ...

  3. 最新版Solr 7.2安装配置

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http Get操 ...

  4. while求1+2+3+4+5+6....100的和

    #求1到100的和. #声明i初始变量 i = 1 #声明y初始变量 y = 1 #开始循环条件为i不等于100,则执行while代码块 while i != 100: #给i加1 i += 1 #y ...

  5. 2017年 JavaScript 框架回顾 -- 前端框架

    概述: 对于 JavaScript 社区来说,npm 的主要功能之一就是帮助开发者发掘所需的 npm Registry 中的库和框架.npm 强大的搜索功能能够帮助找到一组相关的软件包,同时其内置的的 ...

  6. element-ui,router.push到其他路由,菜单栏不会高亮对应的路由

    使用饿了吗的路由,使用this.$router.push({path: ''})跳到其他的路由,菜单不会高亮. 如图所示,点击图上三个位置,需要使用this.$router.push({path: ' ...

  7. HttpClient(二)HttpClient使用Ip代理与处理连接超时

    前言 其实前面写的那一点点东西都是轻轻点水,其实HttpClient还有很多强大的功能: (1)实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等) (2)支持自动转向 (3)支持 ...

  8. js面向对象学习笔记(一):创建空对象,理解this指向

    var obj = new Object();//创建一个空对象 obj.name = '小王';//属性 obj.sayName = function () { //对象方法 对象最重要的是this ...

  9. 【经验分享】Hydra(爆破神器)使用方法

    这个也是backtrack下面很受欢迎的一个工具 参数详解:-R 根据上一次进度继续破解-S 使用SSL协议连接-s 指定端口-l 指定用户名-L 指定用户名字典(文件)-p 指定密码破解-P 指定密 ...

  10. 数塔~~dp学习_1

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2084 数塔 Time Limit: 1000/1000 MS (Java/Others)    Mem ...