2
我在T3架構中遇到了db進程沒有完全利用cpu的線程能力的問題。我想了解11g和10g如何利用線程,以及我是否可以驗證系統中的這些查詢。如何查看solaris中的進程線程?
如何判斷solaris進程是否已並行化並利用cpu內的線程?
我在T3架構中遇到了db進程沒有完全利用cpu的線程能力的問題。我想了解11g和10g如何利用線程,以及我是否可以驗證系統中的這些查詢。如何查看solaris中的進程線程?
如何判斷solaris進程是否已並行化並利用cpu內的線程?
只需運行prstat並看看最後一列,標記爲PROCESS/NLWP
。
NLWP
表示輕量級進程的數量,該數量正好是Solaris當前正在使用的線程數,因爲lwp和用戶線程之間存在一對一的映射關係。
單線程進程將顯示1
,而多線程進程將顯示更大的數字。
如:
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP ... 12905 root 4472K 3640K cpu0 59 0 0:00:01 0.4% prstat/1 18403 monitor 474M 245M run 59 17 1:01:28 9.1% java/103 4102 oracle 12G 12G run 59 0 0:00:12 4.5% oracle/1
這裏了prstat和Oracle是單線程的,而Java是多線程(總是)
您可以通過向下鑽取多線程程序的各個線程活動使用-L和-p選項,如prstat -L -p pid
這將顯示每個按CPU活動排序的線程的一行。在那種情況下,最後一列將被標記爲PROCESS/LWPID
,LWPID
是線程ID。如果多個線程顯示重要的活動,那麼您的進程將主動利用多線程。