tklauser/numcpus

GitHub: tklauser/numcpus

一个跨平台的 Go 库,用于查询 Linux、BSD、Darwin 和 Solaris 等系统上各类 CPU 数量信息。

Stars: 32 | Forks: 7

# numcpus [![Go 参考](https://pkg.go.dev/badge/github.com/tklauser/numcpus.svg)](https://pkg.go.dev/github.com/tklauser/numcpus) [![GitHub Action 状态](https://static.pigsec.cn/wp-content/uploads/repos/cas/09/097271ca091990be630ef6043309cc48240faa054413384202036fa2efedb2d2.svg)](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工具, 开发库, 日志审计, 系统信息, 系统编程