linux线程查看
㈠ linux查看线程优先级命令
用top或者ps -l查看进程会发现有PR(PRI) NI两个字段:
NI 是优先值,是用户层面的概念, PR是进程的实际优先级, 是给内核(kernel)看(用)的。
一般情况下,PR=NI+20, 如果一个进程的优先级PR是20, 那么它的NI(nice)值就是20-20=0。
进程调度优先级是从-20到19,一共40个级别,数字越大,表示进程的优先级越低。默认时候,进程的优先级是0。查看进程优先级有两个办法:ps和top。top命令显示的NI列的值。或者可以使用ps -efl来查看,也是在ni列表示了进程的优先级。《Linux就该这么学》 一起学习,进程的优先级可以在程序运行的时候设置,也可以在程序运行过程中动态的修改。
㈡ 如何查看linux服务器的cpu数量,内核数,和cpu线程数
lscpu命令,查看的是cpu的统计信息.x0dx0ablue@blue-pc:~$ lscpux0dx0aArchitecture: i686 #cpu架构x0dx0aCPU op-mode(s): 32-bit, 64-bitx0dx0aByte Order: Little Endian #小尾序x0dx0aCPU(s): 4 #总共有4核x0dx0aOn-line CPU(s) list: 0-3x0dx0aThread(s) per core: 1 #每个cpu核,只能支持一个线程,即不支持超线程x0dx0aCore(s) per socket: 4 #每个cpu,有4个核x0dx0aSocket(s): 1 #总共有1一个cpux0dx0aVendor ID: GenuineIntel #cpu产商 intelx0dx0aCPU family: 6x0dx0aModel: 42x0dx0aStepping: 7x0dx0aCPU MHz: 1600.000x0dx0aBogoMIPS: 5986.12x0dx0aVirtualization: VT-x #支持cpu虚拟化技术x0dx0aL1d cache: 32Kx0dx0aL1i cache: 32Kx0dx0aL2 cache: 256Kx0dx0aL3 cache: 6144Kx0dx0a x0dx0a 查看/proc/cpuinfo,可以知道每个cpu信息,如每个CPU的型号,主频等。x0dx0a#cat /proc/cpuinfox0dx0aprocessor : 0x0dx0avendor_id : GenuineIntelx0dx0acpu family : 6x0dx0amodel : 42x0dx0amodel name : Intel(R) Core(TM) i5-2320 CPU @ 3.00GHzx0dx0a.....x0dx0a 上面输出的是第一个cpu部分信息,还有3个cpu信息省略了。x0dx0a x0dx0a 内存x0dx0a 概要查看内存情况x0dx0a free -mx0dx0a total used free shared buffers cachedx0dx0a Mem: 3926 3651 274 0 12 404x0dx0a -/+ buffers/cache: 3235 691x0dx0a Swap: 9536 31 9505x0dx0a 这里的单位是MB,总共的内存是3926MB。x0dx0a x0dx0a 查看内存详细使用x0dx0a# cat /proc/meminfox0dx0aMemTotal: 4020868 kBx0dx0aMemFree: 230884 kBx0dx0aBuffers: 7600 kBx0dx0aCached: 454772 kBx0dx0aSwapCached: 836 kBx0dx0a.....x0dx0a x0dx0a 查看内存硬件信息x0dx0admidecode -t memoryx0dx0a# dmidecode 2.11x0dx0aSMBIOS 2.7 present.x0dx0aHandle 0x0008, DMI type 16, 23 bytesx0dx0aPhysical Memory Arrayx0dx0a Location: System Board Or Motherboardx0dx0a....x0dx0a Maximum Capacity: 32 GBx0dx0a....x0dx0aHandle 0x000A, DMI type 17, 34 bytesx0dx0a....x0dx0aMemory Devicex0dx0a Array Handle: 0x0008x0dx0a Error Information Handle: Not Providedx0dx0a Total Width: 64 bitsx0dx0a Data Width: 64 bitsx0dx0a Size: 4096 MBx0dx0a.....x0dx0a 我的主板有4个槽位,只用了一个槽位,上面插了一条4096MB的内存。x0dx0a x0dx0a 磁盘x0dx0a 查看硬盘和分区分布x0dx0a# lsblkx0dx0aNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTx0dx0asda 8:0 0 465.8G 0 diskx0dx0a├—sda1 8:1 0 1G 0 part /bootx0dx0a├—sda2 8:2 0 9.3G 0 part [SWAP]x0dx0a├—sda3 8:3 0 74.5G 0 part /x0dx0a├—sda4 8:4 0 1K 0 partx0dx0a├—sda5 8:5 0 111.8G 0 part /homex0dx0a└—sda6 8:6 0 269.2G 0 partx0dx0a 显示很直观x0dx0a x0dx0a 如果要看硬盘和分区的详细信息x0dx0a# fdisk -lx0dx0aDisk /dev/sda: 500.1 GB, 500107862016 bytesx0dx0a255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectorsx0dx0aUnits = sectors of 1 * 512 = 512 bytesx0dx0aSector size (logical/physical): 512 bytes / 4096 bytesx0dx0aI/O size (minimum/optimal): 4096 bytes / 4096 bytesx0dx0aDisk identifier: 0x00023728x0dx0a Device Boot Start End Blocks Id Systemx0dx0a/dev/sda1 * 2048 2148351 1073152 83 Linuxx0dx0a/dev/sda2 2148352 21680127 9765888 82 Linux swap / Solarisx0dx0a/dev/sda3 21680128 177930239 78125056 83 Linuxx0dx0a/dev/sda4 177932286 976771071 399419393 5 Extended/dev/sda5 177932288 412305407 117186560 83 Linuxx0dx0a/dev/sda6 412307456 976771071 282231808 83 Linuxx0dx0a x0dx0a 网卡x0dx0a 查看网卡硬件信息x0dx0a# lspci | grep -i 'eth'x0dx0a02:00.0 Ethernet controller: Realtek Semiconctor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)x0dx0a x0dx0a 查看系统的所有网络接口x0dx0a# ifconfig -ax0dx0aeth0 Link encap:以太网 硬件地址 b8:97:5a:17:b3:8f x0dx0a .....x0dx0alo Link encap:本地环回 x0dx0a .....x0dx0a 或者是x0dx0aip link showx0dx0a1: lo:
㈢ linux怎么查看线程阻塞原因
linux查看线程阻塞原因:pthread_join一般主线程来调用,用来等待子线程退出,因为是等待,所以是阻塞的,一般主线程会依次join所有它创建的子线程。
1)执行top命令,或使用-H选项(显示所有线程),找到相关的高CPU的PID。
2)生成thread mp 快照(kill -3 PID)。
3)将top命令输出PID转换为HEX格式(16进制)。
4)在thread mp data中搜索nid=<Hex PID>。
5)分析受影响的thread和stack trace,精确定位代码。
特点:
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。
它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。
Linux不仅系统性能稳定,而且是开源软件。其核心防火墙组件性能高效、配置简单,保证了系统的安全。在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,甚至当作网络防火墙,这是Linux的一大亮点。
Linux具有开放源码、没有版权、技术社区用户多等特点,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低。尤其系统中内嵌网络协议栈,经过适当的配置就可实现路由器的功能。这些特点使得Linux成为开发路由交换设备的理想开发平台。
㈣ linux 怎么查看一个进程的所有线程
1。 使用top命令,具体用法是 top -H加上这个选项,top的每一行就不是显示一个进程,而是一个线程。
2。 使用ps命令,具体用法是 ps -xH
这样可以查看所有存在的线程,也可以使用grep作进一步的过滤。
3。 使用ps命令,具体用法是 ps -mq PID
这样可以看到指定的进程产生的线程数目。
更进一步,其实一些系统监控工具,在本质上也是读取的系统产生的文件罢了。比如说进程这个事情,
看看这个目录吧,/proc/5000/ 这里面有你所有想要的。其实stat代表着当前的一些信息。
使用ps命令来查看进程的时候,进程状态分别对应的含义如下:
D 不可中断睡眠 (通常是在IO操作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生
R 正在运行或可运行(在运行队列排队中)
S 可中断睡眠 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)
T 已停止的 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行
W 正在换页(2.6.内核之前有效)
X 死进程 (未开启)
Z 僵尸进程 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放BSD风格的
< 高优先级(not nice to other users)
N 低优先级(nice to other users)
L 页面锁定在内存(实时和定制的IO)
s 一个信息头
l 多线程(使用 CLONE_THREAD,像NPTL的pthreads的那样)
+ 在前台进程组
㈤ Linux最大线程数限制及当前线程数查询
查看系统允许的最大线程数:
Linux无法直接控制单个进程可拥有的线程数,但有参考公式max = VM/stack_size,默认stack为8k,可通过降低stack大小或增加虚拟内存来调大每个进程可拥有的最大线程数;
对于支持多线程的程序如Java,有可能会遇到一个进程无法创建更多线程的情形,其原因多种多样,而OS端可能由此参数造成.
查看系统允许的最大进程数:
ulimit -a 显示当前所有的资源限制
root用户下执行 ulimit -a 然后查看 max user processes 这个值通常是系统最大线程数的一半:/proc/sys/kernel/threads-max/2
普通用户下 ulimit -u 出现的max user processes的值 默认是 /etc/security/limits.d/20-nproc.conf(centos6 是90-nproc.conf) 文件中的
普通用户默认是1024
打开/etc/security/limits.conf (部分的系统是在/etc/security/limits.d/90-nproc.conf)
设置限制数量,第一列表示用户,* 表示所有用户
soft nproc :单个用户可用的最大进程数量(超过会警告);
hard nproc:单个用户可用的最大进程数量(超过会报错);
soft nofile :可打开的文件描述符的最大数(超过会警告);
hard nofile :可打开的文件描述符的最大数(超过会报错);
重启后生效
reboot
查询当前某程序的线程数
pstree -p 进程号 | wc -l
管道符号"|"左边命令的输出作为右边命令的输入
直接修改/etc/security/limits.conf 文件中的 * soft nproc 65535 值后,普通用户最大进程数无法达到65535 ,因为用户的max user processes的值,最后是受全局的kernel.pid_max的值限制。也就是说kernel.pid_max=1024 ,那么你用户的max user processes的值是127426 ,用户能打开的最大进程数还是1024。
永久修改系统最高进程数的方法
在/etc/sysctl.conf中添加kernel.pid_max = 65535
vim /etc/sysctl.conf
kernel.pid_max = 65535
或者:
echo "kernel.pid_max = 65535" >> /etc/sysctl.conf
然后重启机器。
临时修改的方法:
echo 65535 > /proc/sys/kernel/pid_max
所以以上都操作完成后,才算是正确修改了max user processes 的值
㈥ Linux系统如何查看进程的线程数
Linux系统查看某个进程的线程数可以通过ps命令来进行查询。以firefox进程为例。
1、查看firefox的进程pid,如下图所示,firefox的进程pid为3168。
㈦ Linux系统如何查看进程的线程数
Linux系统查看某个进程的线程数可以通过ps命令来进行查询。以firefox进程为例。
1、查看firefox的进程pid,如下图所示,firefox的进程pid为3168。
2、查看firefox中的线程数和线程ID,如下图所示,
其中NLWP
列为线程数
LWP列为线程ID,可见firefox有线程数50。
㈧ linux怎么查看进程中的线程数
1、 cat /proc/${pid}/status
2、pstree -p ${pid}
3、top -p ${pid} 再按H 或者直接输入 top -bH -d 3 -p ${pid}
top -H
手册中说:-H : Threads toggle
加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。
4、ps xH
手册中说:H Show threads as if they were processes
这样可以查看所有存在的线程。
5、ps -mp <PID>
手册中说:m Show threads after processes
这样可以查看一个进程起的线程数。
㈨ linux怎么查看线程cpu
可以用下面的命令将 cpu 占用率高的线程找出来:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序。这样就可以找到占用处理器的线程了。
直接使用 ps Hh -eo pid,tid,pcpu | sort -nk3 |tail 获取对于的进程号和线程号,然后跳转到3.
查看哪个进程线程占用cpu过高; top / ps -aux, 获得进程号
确定哪个线程占用cpu过高,进入进程号的目录:/proc/pid/task,
执行:grep SleepAVG **/status | sort -k2,2 | head, 确定cpu占用较高的线程号。
使用kill -3 pid 会打印线程堆栈的情况
在 Linux 下 top 工具可以显示 cpu 的平均利用率(user,nice,system,idle,iowait,irq,softirq,etc.),可以显示每个 cpu 的利用率。但是无法显示每个线程的 cpu 利用率情况,这时就可能出现这种情况,总的 cpu 利用率中 user 或 system 很高,但是用进程的 cpu 占用率进行排序时,没有进程的 user 或 system 与之对应。