linux workqueue的名字长度小问题
在排查一个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的名字长度小问题的更多相关文章
- linux常用命令与实例小全
转至:https://www.cnblogs.com/xieguohui/p/8296864.html linux常用命令与实例小全 阅读目录(Content) 引言 一.安装和登录 (一) ...
- Linux下提权常用小命令
有些新手朋友在拿到一个webshell后如果看到服务器是Linux或Unix操作系统的就直接放弃提权,认为Linux或Unix下的提权很难,不是大家能做的,其实Linux下的提权并没有很多人想象的那么 ...
- Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果
Material Design Reveal effect(揭示效果) 你可能见过但是叫不出名字的小效果 前言: 每次写之前都会来一段(废)话.{心塞...} Google Play首页两个tab背景 ...
- [内核]Linux workqueue
转自:http://blog.chinaunix.net/uid-24148050-id-296982.html 一.workqueue简介workqueue与tasklet类似,都是允许内核代码请求 ...
- Linux workqueue疑问【转】
转自:http://blog.csdn.net/angle_birds/article/details/9387365 各位大神,你们好.我在使用workqueue的过程中遇到一个问题. 项目采用uC ...
- Linux没有最小只有更小----迷你Linux版本大集合(转)
[自从去年到现在已经收集了上百种版本的Linux和Unix,至于Unix就不想说了,没有Linux的功底是很难驾驭Unix的,我在这里只把小于360M的Linux以及一些非Linux但是很像Linux ...
- 2019-9-2-dotnet-命名管道名字长度限制
title author date CreateTime categories dotnet 命名管道名字长度限制 lindexi 2019-09-02 11:54:50 +0800 2019-09- ...
- Linux Workqueue【转】
转自:http://kernel.meizu.com/linux-workqueue.html 21 August 2016 Workqueue 是内核里面很重要的一个机制,特别是内核驱动,一般的 ...
- 刚接触Linux,菜鸟必备的小知识点(一)
身为一个将要大四的学生,而且还是学计算机的没有接触过linux简直是羞愧难当.这个假期做了一个软件测试员,必须要熟悉linux的操作,所以对于我这个菜鸟我也就说几点比较重要的小知识点吧. 第一.cd指 ...
随机推荐
- jQuery DOM 元素方法 (十)
函数 描述 .get() 获得由选择器指定的 DOM 元素. .index() 返回指定元素相对于其他指定元素的 index 位置. .size() 返回被 jQuery 选择器匹配的元素的数量. . ...
- 申请的服务器安装tomcat后不能访问的问题
新申请的阿里云服务器,操作系统是CentOS6.5,安装jdk1.8版本,用java -version命令可以查看jdk版本,安装正确会有版本显示.然后安装tomcat,tomcat安装后默认端口是8 ...
- SQLAlchemy基础操作二
多线程示例 import time import threading from sqlalchemy.ext.declarative import declarative_base from sqla ...
- iOS中 学会如何对sqlite3 进行封装 (纯手工)
#waring ---(看官注意) ---使用说明: ①在创建自定义model类之前让该类继承自文件中的Model类, ②为model类选一个NSString属性作为主键:(既,在初始化方法里面将从父 ...
- Django-环境搭建
django开发环境搭建 环境说明 python django mysql pymysql pycharm 安装过程 安装python3.6.3 64位下载地址: https://www.python ...
- React Native学习(一)——搭建开发环境
第一次接触React Native,首先搭建环境,过程还算顺利,不过也遇到了些问题,这里简单记录下来.中文官网(http://reactnative.cn/docs/0.47/getting-star ...
- 用户空间网络提升 NFV 的性能
本文是一篇翻译,翻译自https://software.intel.com/en-us/blogs/2015/06/12/user-space-networking-fuels-nfv-perform ...
- bzoj:3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛
Description 约翰要带N(1≤N≤100000)只牛去参加集会里的展示活动,这些牛可以是牡牛,也可以是牝牛.牛们要站成一排.但是牡牛是好斗的,为了避免牡牛闹出乱子,约翰决定任意两只牡 ...
- [bzoj2665] [cqoi2012]编号
首先有一个直观暴力的想法.. 枚举每个数,如果这个数可行的话,就加进答案里,然后把和它超过4个位置相同的数去掉. 然后正解真的是这个>_< 假设取到了数x,只要和x有5位相同的数就可以排除 ...
- use ambiguous的错误——编译错误
出现这样的问题是因为namespace std里面已经有一个count了,而 using namespace std;语句把该namespace 打开了,这导致了后面的引用不明确: 不过这里也可以把u ...