Hi all:
问题描述:我刚接触这个行业两个月,现在接到测试部的Bug List,其中有一项就是平台Porting的 Cpu高占用率,其中我们的porting 是分多线程(模块)的,现在我想知道是到底是哪个模块(线程)的Cpu占用高,实现有问题,所以Top 查看,但是在这里Top看到的 是主进程Pid,与LWP进程Pid对应的Cpu占用情况, 那么我想从我的代码中去尝试获取到这些线程对应到内核中LWP进程pid,不知道那家有什么见解,帮助?
现在的情况:我创建的线程Id ,Pthread_t类型是unsigned long int 型(Linux 2.6.x),首先有个疑问:1、它是否会做一个类型转换,转换成一个指针指向一片有意义的数据空间,2、还是仅仅是作为一种算法产生的用户级管理线程的一个ID呢?
所以如果是第一种情况,不知通过解析这片数据空间进一步来获取内核中的轻权进程的pid的可行性怎么样?
如果是第二种情况,我该怎么做呢?
如果大家有什么想法欢迎留言,留资料、留链接.~~谢了~
3 个解决方案
楼主大学做过学生干部?
对于问题1,应该不必做类型转换。就像file descriptor一样,只是一个整型,用来区分不同的file descriptor,但在系统中肯定有一片数据空间是跟这个整型关联的。
其它就不懂了,mark等高手。
没有做过干部。
我也想这么认为只是一个Unsigned long型,因为在其他系统中比如freebsd中pthread_t就是一个结构体,而在Linux 2.6.x下打印0x的话则十分像一个地址,所以我现在查资料也没能查到,也不敢确认是否这个pthread_t能否转换成一个地址而去进一步解析出LWP的pid
望指点、交流、讨论