tklauser/numcpus
GitHub: tklauser/numcpus
一个跨平台的 Go 库,用于查询 Linux、BSD、Darwin 和 Solaris 等系统上各类 CPU 数量信息。
Stars: 32 | Forks: 7
# numcpus
[](https://pkg.go.dev/github.com/tklauser/numcpus)
[](https://github.com/tklauser/numcpus/actions?query=workflow%3ATests)
numcpus 包提供了有关系统中 CPU 数量的信息。
它可以获取 Linux、Darwin、FreeBSD、NetBSD、OpenBSD、DragonflyBSD 或
Solaris/Illumos 系统上的 CPU 数量(在线、离线、现存、可用、已配置或
内核最大值)。
在 Linux 上,该信息通过读取 `/sys/devices/system/cpu` 中相应的 CPU
拓扑文件来获取。
在 BSD 系统上,如果支持,该信息将使用 `hw.ncpu` 和
`hw.ncpuonline` sysctl 来获取。
并非所有函数都在 Darwin、FreeBSD、NetBSD、OpenBSD、
DragonflyBSD 和 Solaris/Illumos 上受支持。如果某个函数在特定平台上不受支持,将返回 ErrNotSupported。
## 用法
```
package main
import (
"fmt"
"os"
"github.com/tklauser/numcpus"
)
func main() {
online, err := numcpus.GetOnline()
if err != nil {
fmt.Fprintf(os.Stderr, "GetOnline: %v\n", err)
}
fmt.Printf("online CPUs: %v\n", online)
possible, err := numcpus.GetPossible()
if err != nil {
fmt.Fprintf(os.Stderr, "GetPossible: %v\n", err)
}
fmt.Printf("possible CPUs: %v\n", possible)
}
```
## 参考
* [Linux kernel 关于 CPU 属性的 sysfs 文档](https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-devices-system-cpu)
* [Linux kernel CPU 拓扑文档](https://www.kernel.org/doc/Documentation/cputopology.txt)
标签:CPU, EVTX分析, Go, Ruby工具, 开发库, 日志审计, 系统信息, 系统编程