如何知道每个CPU和核心的数量?

时间:2015-11-21 09:51:48

标签: linux

我从GoDaddy那里购买了一台虚拟私人服务器并在其上安装了GlassFish 4。我正在服务器上进行性能调优。

我遇到了以下问题:

  

使用GlassFish管理更容易更改某些设置   控制台,而不是在配置文件中四处寻找   他们自己。        一个示例是acceptor线程,应将其设置为与服务器中CPU核心数相等的数字。所以,如果你有2个CPU   每个4核,值应为8。

您能否告诉我如何才能知道我拥有多少CPU,以及我应该设置多少值?

1 个答案:

答案 0 :(得分:1)

如果您不需要以编程方式查找,则可以执行以下操作:

grep processor /proc/cpuinfo | wc -l

这将为您提供核心数量,包括超线程,可用到内核等。要排除此类虚拟核心:

grep 'core id' /proc/cpuinfo | sort | uniq | wc -l

在程序中,您会发现标准库(如果它们具有线程支持)提供了获取硬件线程(核心)数量的方法。在C ++中,您可以在python中使用std::thread::hardware_concurrency(), multiprocessing.cpu_count()

但是,取决于"虚拟化"在您的提供商处,核心可用的核心数量可能高于虚拟专用系统可用的核心数量。你必须检查你的合同,看看他们保证你有多少核心。如果他们没有对此做出任何声明,您必须进行基准测试,尽管这可能取决于一天中的时间(以及与您共享相同硬件的其他人产生的负载)。