首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GOMAXPROCS是如何在不同的平台和容器内确定的?

问GOMAXPROCS是如何在不同的平台和容器内确定的?
EN

Stack Overflow用户
提问于 2019-01-15 00:15:01
回答 2查看 1.6K关注 0票数 1

我很好奇Go运行时如何在各种不同特性的平台上(如Linux、macOS和macOS)确定macOS(计数CPU)?

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

类似地,在macOS上,这个值是如何确定的?

我知道一些应用程序(如JVM )依赖于在/sys上公开的cgroup内存信息来设置它们的内部堆大小等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-15 01:31:15

Go GOMAXPROCS是CPU数量的函数。CPU的数量是处理器体系结构的一个函数: 386、amd64、arm、arm64、mips64、ppc64、s390等,操作系统为硬件提供了一个接口: Linux、OpenBSD、Mac等。

参见Go源代码 in src/runtime。

请参阅Linux文档命令man sched_getaffinity。

票数 2
EN

Stack Overflow用户

发布于 2019-01-15 02:36:45

CPU的数量是在运行时计算的,并且与操作系统有关。如果您查看Go运行时包中的内容,您将看到许多带有与OS和体系结构名称相关的后缀的文件:

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54191055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档