linux查看线程状态命令(linux查看线程状态)
linux中的線程有哪幾種狀態?
就緒:線程分配了CPU以外的全部資源,等待獲得CPU調度執行:線程獲得CPU,正在執行阻塞:線程由于發生I/O或者其他的操作導致無法繼續執行,就放棄處理機,轉入線程就緒隊列掛起:由于終端請求,操作系統的要求等原因,導致掛起。
怎么在linux系統下查看網卡狀態信息?
方法一:
ethtool eth0 采用此命令可以查看到網卡相關的技術指標。
(不一定所有網卡都支持此命令)
ethtool -i eth1 加上 -i 參數查看網卡驅動。
可以嘗試其它參數查看網卡相關技術參數。
方法二:
也可以通過dmesg | grep eth0 等看到網卡名字(廠家)等信息。
通過查看 /etc/sysconfig/network-scripts/ifcfg-eth0 可以看到當前的網卡配置包括IP、網關地址等信息。
當然也可以通過ifconfig命令查看。
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。 Linux操作系統誕生于1991 年10 月5 日(這是第一次正式向外公布時間)。Linux存在著許多不同的Linux版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬件設備中,比如手機、平板電腦、路由器、視頻游戲控制臺、臺式計算機、大型機和超級計算機。 嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基于Linux內核,并且使用GNU工程各種工具和數據庫的操作系統。
Linux如何查看線程數最佳解決方案?
1、top -H 手冊中說:-H : Threads toggle 加上這個選項啟動top,top一行顯示一個線程。否則,它一行顯示一個進程。
2、ps xH 手冊中說:H Show threads as if they were processes 這樣可以查看所有存在的線程。
3、ps -mp
linux怎么指定線程庫?
大概的介紹一下Linux 的指定CPU運行,包括進程和線程。linux下的top命令是可以查看當前的cpu的運行狀態,按1可以查看系統有多少個CPU,以及每個CPU的運行狀態。 可是如何查看線程的CPU呢?
top -Hp pid,pid就是你當前程序的進程號,如果是多線程的話,是可以查看進程內所有線程的CPU和內存使用情況。
pstree可以查看主次線程,同樣的pstree -p pid。可以查看進程的線程情況。
taskset這個其實才是重點,可以查看以及設置當前進程或線程運行的CPU(設置親和力)。
taskset -pc pid,查看當前進程的cpu,當然有的時候不只是一個,taskset -pc cpu_num pid ,cpu_num就是設置的cpu。 這樣的話基本的命令和操作其實大家都知道了,接下來就是在代碼中完成這些操作,并通過命令去驗證代碼的成功率。 進程制定CPU運行:
view plain copy #include #include #include #include #include #define __USE_GNU #include #include #include int main(int argc, char* argv) { //sysconf獲取有幾個CPU int num = sysconf(_SC_NPROCESSORS_CONF); int created_thread = 0; int myid; int i; int j = 0; //原理其實很簡單,就是通過cpu_set_t進行位與操作 cpu_set_t mask; cpu_set_t get; if (argc != 2) { printf("usage : ./cpu numn"); exit(1); } myid = atoi(argv)
; printf("system has %i processor(s). n", num)
; //先進行清空,然后設置掩碼 CPU_ZERO(&mask); CPU_SET(myid, &mask)
; //設置進程的親和力 if (sched_setaffinity(0, sizeof(mask), &mask) == -1) { printf("warning: could not set CPU affinity, continuing...n"); } while (1) { CPU_ZERO(&get); //獲取當前進程的親和力 if (sched_getaffinity(0, sizeof(get), &get) == -1) { printf("warning: cound not get cpu affinity, continuing...n"); } for (i = 0; i < num; i++) { if (CPU_ISSET(i, &get)) { printf("this process %d is running processor : %dn",getpid(), i); } } } return 0; } 進程設置CPU運行,其實只能是單線程。多線程設定CPU如下:
view plain copy #define _GNU_SOURCE #include #include #include #include #include #include void *myfun(void *arg) { cpu_set_t mask; cpu_set_t get; char buf; int i; int j; //同樣的先去獲取CPU的個數 int num = sysconf(_SC_NPROCESSORS_CONF); printf("system has %d processor(s)n", num); for (i = 0; i < num; i++) { CPU_ZERO(&mask); CPU_SET(i, &mask); //這個其實和設置進程的親和力基本是一樣的 if (pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) < 0) { fprintf(stderr, "set thread affinity failedn"); } CPU_ZERO(&get); if (pthread_getaffinity_np(pthread_self(), sizeof(get), &get) < 0) { fprintf(stderr, "get thread affinity failedn"); } for (j = 0; j < num; j++) { if (CPU_ISSET(j, &get)) { printf("thread %d is running in processor %dn", (int)pthread_self(), j); } } j = 0; while (j++ < 100000000) { memset(buf, 0, sizeof(buf)); } } pthread_exit(NULL); } int main(int argc, char *argv) { pthread_t tid; if (pthread_create(&tid, NULL, (void *)myfun, NULL) != 0) { fprintf(stderr, "thread create failedn"); return -1; } pthread_join(tid, NULL); return 0; }
總結
以上是生活随笔為你收集整理的linux查看线程状态命令(linux查看线程状态)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言:一种通用的程序设计语言
- 下一篇: 金庸安卓版(金庸安卓)