通常,當進程線程進行讀系統調用時,線程的執行被暫停,並且讀操作本身在OS內核中發生(或計劃發生)。一旦讀取完成,內核會安排暫停的線程繼續執行。我理解這部分。從持久存儲讀取時CPU核心是否忙碌?
我的問題是,當內核從永久性存儲器(例如HDD或SSD)中讀取數據時,是否有一個CPU內核正在忙着編排?
我要求幫助確定我的過程中線程的最佳數量。例如,如果我的進程中有一個4核CPU和一個線程在讀取系統調用時被阻塞,那麼有多少其他線程可以在等待讀取完成的同時以並行方式運行? 3? 4? 3至4之間更微妙的東西?
硬盤存儲的典型延遲是在... https://gist.github.com/jboner/2841832 10毫秒或30000000種CPU滴答; SSD速度更快,大約在1-0.5毫秒或1500000-3000000(3 GHz CPU - 每秒3個滴答,每個3000個,每毫秒300萬)。因此,當文件讀取錯過已經緩存在內存中的文件數據並生成外部I/O讀取時,CPU可能不會忙於等待請求並允許其他線程運行。 – osgx
而不是嘗試確定線程的數量,使用*非阻塞*調用。 –