查看線程


通過命令查看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)
可以通過以下命令查看系統是使用哪種線程實現
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM