查看线程

通过命令查看CPU上下文切换情况
linux系统可以通过命令统计CPU上下文切换数据
#可以看到整个操作系统每1秒CPU上下文切换的统计
 
其中cs列就是CPU上下文切换的统计。当然,CPU上下文切换不等价于线程切换,很多操作会造成CPU上下文切换:
  • 线程、进程切换
  • 系统调用
  • 中断
查看某一个线程\进程的上下文切换
  • 使用pidstat命令
常用的参数:
-u 默认参数,显示各个进程的 CPU 统计信息
-r 显示各个进程的内存使用情况
-d 显示各个进程的 IO 使用
-w 显示各个进程的上下文切换
-p PID 指定 PID
# 显示进程5598每一秒的切换情况
 
其中cswch表示主动切换,nvcswch表示被动切换。从统计数据中看到,该进程每秒主动切换次数达到将近500次,因此代码中存在大量的 睡眠\唤醒 操作。
 
  • 从进程的状态信息中查看
 
通过命令 cat /proc/5598/status 查看进程的状态信息
voluntary_ctxt_switches: 40469351
nonvoluntary_ctxt_switches: 2268
这2项就是该进程从启动到当前总的上下文切换情况。
 
 
 
查看进程线程的方法
windows
  • 任务管理器可以查看进程和线程数,也可以用来杀死进程
  • tasklist 查看进程
  • taskkill 杀死进程
linux
  • ps -fe 查看所有进程
  • ps -fT -p 查看某个进程(PID)的所有线程
  • kill 杀死进程
  • top 按大写 H 切换是否显示线程
  • top -H -p 查看某个进程(PID)的所有线程
Java
  • jps 命令查看所有 Java 进程
  • jstack 查看某个 Java 进程(PID)的所有线程状态
  • jconsole 来查看某个 Java 进程中线程的运行情况(图形界面)
 
Linux系统中线程实现方式
  • LinuxThreads linux/glibc包在2.3.2之前只实现了LinuxThreads
  • NPTL(Native POSIX Thread Library)
可以通过以下命令查看系统是使用哪种线程实现
 
原文地址:https://www.cnblogs.com/xiatc/p/15577809.html