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

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

GOMAXPROCS 在不同平臺和容器內部是如何確定的?

GOMAXPROCS 在不同平臺和容器內部是如何確定的?

Go
米脂 2023-06-01 15:09:17
我很好奇 Go 運行時如何runtime.NumCPU()在具有截然不同特性的各種平臺(如 Linux、macOS 和 Windows)上確定(CPU 數量)?例如在 Linux 上:我很好奇它是否使用 sysfs (/sys) 查看路徑以/sys/fs/cgroup/cpu/cpu.cfs_quota_us確定存在多少 CPU,或 procfs ( /proc/cpuinfo)(這在容器可能有權訪問的容器環境中是錯誤的值CPU 數量少于此文件中公開的主機 CPU 數量)。同樣在 macOS 上,這個值是如何確定的?我知道像 JVM 這樣的一些應用程序依賴于暴露在 /sys 上的 cgroups 內存信息來設置它們的內部堆大小等。
查看完整描述

2 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

CPU 的數量是在運行時評估的,它取決于操作系統。如果你查看 Go 運行時包,你會看到許多帶有與操作系統和體系結構名稱相關的后綴的文件:

  • FreeBSD

  • 達爾文

  • 計劃9

  • 打開BSD

  • Linux

  • 谷歌原生客戶端

  • 視窗

  • NetBSD

  • 索拉里斯

  • 蜻蜓 BSD

構建 Go 程序時,只會包含與當前操作系統和體系結構相對應的正確運行時文件。CPU 的數量將由函數計算getncpu。


查看完整回答
反對 回復 2023-06-01
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

GoGOMAXPROCS是 CPU 數量的函數。CPU 的數量是處理器架構的函數:386、amd64、arm、arm64、mips64、ppc64、s390 等,操作系統提供與硬件的接口:Linux、OpenBSD、Mac OS 等。在 Linux 上,我們有SYS_sched_getaffinity。

請參閱中的Go 源代碼src/runtime

請參閱 Linux 文檔命令man sched_getaffinity。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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