gpt4 book ai didi

docker - GOMAXPROCS 在不同平台和容器内部是如何确定的?

转载 作者:IT王子 更新时间:2023-10-29 01:53:43 24 4
gpt4 key购买 nike

我很好奇 Go 运行时如何确定 runtime.NumCPU()(CPU 数)在具有截然不同特性的各种平台(如 Linux、macOS 和 Windows)上?

例如在 Linux 上:我很好奇它是否使用 sysfs (/sys) 来查看像 /sys/fs/cgroup/cpu/cpu.cfs_quota_us 这样的路径以确定存在多少个 CPU , 或 procfs (/proc/cpuinfo)(在容器环境中,这将是错误的值,在容器环境中,容器访问的 CPU 数量可能少于此文件中公开的主机 CPU 数量)。

macOS 上类似,这个值是怎么确定的?

我知道像 JVM 这样的一些应用程序依赖于暴露在/sys 上的 cgroups 内存信息来设置它们的内部堆大小等。

最佳答案

CPU 的数量是在运行时评估的,它取决于操作系统。如果你看一下 Go 运行时包,你会看到很多文件与操作系统和架构名称相关的后缀:

构建 Go 程序时,只会包含与当前操作系统和体系结构相对应的正确运行时文件。然后,函数 getncpu 将评估 CPU 的数量。

关于docker - GOMAXPROCS 在不同平台和容器内部是如何确定的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54191055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com