CPU的運行隊列統計:在Linux里,一個進程,對於線程來說要不在運行,要不在阻塞。
CPU怎么執行線程:
CPU只會運行處於runnable狀態的線程,不是線程越多CPU就越忙
一個阻塞的進程可能是在等着一些io的數據處理,或者等待一些系統的調用。
runnable(可運行)狀態,意味着他正在和其他數據運行狀態的進程競爭CPU的時間,誰的優先級越高CPU給他的時間就稍微多點。怎么知道優先級呢,在時間上會有點區別。
運行狀態的進程,不一定正在使用CPU,如5個在排隊。同一時刻可能只有一個人在用我這個資源。Linux調調度器會決定去運行哪個進程。他會從運行狀態的進程列表里面去提取他要運行的哪些進程。
隊列:當這些進程是運行狀態,等待CPU處理的任務數就叫運行隊列。任務越多隊列越長,運行隊列越長表示我的壓力機就越大。
隊列多少比較合適呢:在任何一個時刻CPU的一個核同一時刻只能處理一個線程。如果CPU有4個核,同一時刻處理4個任務,這個隊列最好是4.。隊列最好等於內核個數,最好不要超過你內核個數的3倍。
隊列包含正在得到CPU運行的那個線程。