亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

提供邏輯處理器數量的運行時 api 是什么?

提供邏輯處理器數量的運行時 api 是什么?

Go
手掌心 2022-06-01 16:42:54
下面的 UNIX 命令:$ lscpuArchitecture:        x86_64CPU op-mode(s):      32-bit, 64-bitByte Order:          Little EndianCPU(s):              4On-line CPU(s) list: 0-3Thread(s) per core:  2Core(s) per socket:  2Socket(s):           1顯示,  CPU(s):              4  Thread(s) per core:  2這是 4 X 2 = 8 個邏輯處理器。糾正我。下面是另一個 Linux 命令:$ cat /proc/cpuinfoprocessor   : 0....cpu cores   : 2.....processor   : 1.....cpu cores   : 2.....processor   : 2.....cpu cores   : 2.....processor   : 3.....cpu cores   : 2.....$ 但是下面的程序只顯示了 4 個邏輯處理器:package mainimport (    "fmt"    "runtime")func main() {    fmt.Println(runtime.GOMAXPROCS(0))   // gives 4    fmt.Println(runtime.NumCPU())        // gives 4   }輸出:$ go install github.com/myhub/cs61a$ bin/cs61a 44code$ 更多細節:$ go versiongo version go1.14.1 linux/amd64$ uname -aLinux mohet01-ubuntu 4.15.0-99-generic #100-Ubuntu SMP Wed Apr 22 20:32:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux文檔說,NumCPU 返回當前進程可用的邏輯 CPU 數量。我的理解是,Go 調度程序創建操作系統線程(M),這將等同于邏輯處理器的數量。為什么運行時 api 沒有給出 8 的值?
查看完整描述

1 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

根據您上面的所有列表,您有:

  • 每個插槽兩個核心

  • 和一個插座

這意味著您只有兩個 CPU 內核。但是,您還擁有:

  • 每個核心兩個線程

這意味著您的兩個 CPU最多可以同時運行四個線程(有一些潛在的缺點,但至少在大多數情況下,這應該比總共使用兩個線程提供更多的計算能力)。

由于這是實際的硬件限制,Go 計算要使用的線程數為 4 的事實似乎是正確的。

(我認為您數到八的原因是您假設Linux報告的每個“cpus”都支持兩個線程。事實并非如此:只有兩個物理內核,但每個都支持兩個線程,所以Linux將此報告為四個“cpu”。)


查看完整回答
反對 回復 2022-06-01
  • 1 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號