从 bash 脚本执行 5 个curl请求的最佳方法是什么parallel?出于性能原因,我无法串行运行它们。
我注意到运行 SQL Server 2008 的 8 CPU 数据库服务器上的 CPU 使用率根本不平衡。
以下是前一段时间随机一天的 1 天平均值,这是典型且始终不对称的:
(这里只有缩略图,因为图片真的很高,但点击查看全尺寸图片)
我们的4-CPU Web服务器,这些都是几乎完全和完美的平衡相比,所有的时间,让我吃惊的奇怪。
现在,这是一个专用服务器,因此唯一在其上运行的是 SQL Server 2008(以及我们大量使用的内置全文索引),所以我不确定为什么 CPU 使用率会如此不对称. 想法?
我想升级我们的一台服务器,一台运行 VMware Server 2 的 8 核服务器。它运行的虚拟机主要是 Web、文件和电子邮件服务器;具体来说,它运行三个网络服务器、两个电子邮件/文件服务器和几个 Jabber/XMPP 服务器。
当我们最初设置这台机器时,我们有两个 Web 服务器配置了两个 vCPU。我们遇到了一些非常严重的性能问题。当时我们只运行了 3 个虚拟机,总共有 5 个 vCPU。我们还运行了VMware Server 1和一个RAID1。我们现在已经升级到 RAID10,我永远不会考虑任何更少的东西!:-)
新服务器上将安装 VMware ESXi 而不是 VMware Server。我们正在寻找另一款具有更快处理器的 8 核机器,或者 16 核或 32 核服务器。我想确保避免我们之前遇到的问题。
因为我之前在多个 vCPU 上遇到过此类问题,所以我的计划是用多个相同的 Web 服务器 VM (2 - 4) 替换主 Web 服务器 VM,每个 VM 都有一个 vCPU,从 NFS 共享提供内容,并将它们放在负载中- 平衡配置。所以我基本上会用至少 4:2 个小型网络服务器 VM、一个文件服务器 VM 和一个负载平衡 VM 替换一个 VM。我的计划是双重的:首先,我可以避免我之前看到的任何多个 vCPU 使用,其次,我可以生成新的 Web 服务器虚拟机来处理增加的负载。
请注意,我知道我没有获得负载平衡的所有好处,因为我仍然存在单点故障。
这是一个好的计划,还是没有必要?VMware ESXi 能否比三年前的VMware …
我已经在 Debian 上运行了几台旧的 HP 机器一段时间了,直到最近才注意到它们只能“识别”并使用一个处理器。cat /proc/cpuinfo只显示处理器 #0 的输出,与top等相同。当我拉下系统盖并感觉到散热器时,每个散热器中只有一个是热的。我很确定每个中的第二个处理器没有死,因为它们两个的问题都是一样的。
有人告诉我,我需要安装 SMP 内核(顺便说一下,这些系统是 32 位的,因为它们已经很旧了)但是当我这样做时uname -a,我得到:
Linux DL360-G3-3 2.6.32-5-686 #1 SMP Mon Feb 25 01:04:36 UTC 2013 i686 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
这SMP部分让我相信在我的内核中启用了 SMP,但系统仍然只显示和使用 1 个处理器。
有人知道这里出了什么问题吗?
编辑:
的输出ls /sys/devices/system/cpu:
cpu0 cpufreq cpuidle kernel_max offline online perf_events possible present
Run Code Online (Sandbox Code Playgroud)
输出dmidecode(剪切到 CPU 信息):
Processor Information
Socket Designation: Proc 1
Type: Central Processor
Family: Xeon
Manufacturer: Intel
ID: 29 0F 00 00 FF …Run Code Online (Sandbox Code Playgroud) 我查看了提到在 SMP 系统上安装 irqbalance ( http://www.irqbalance.org/ ) 的linux 服务器调整文档。我现在在四核系统上查看它,虽然“ps axf”可以告诉我它正在运行,但我没有看到任何关于它是否/如何影响系统的统计信息或任何类型的信息。
有谁知道在哪里看?
我有一台启用了超线程的四核 i-7 服务器。内核将其识别为 8 个 CPU,这是应该的。我想创建几个在这台机器上运行的虚拟主机。virt-manager 让我选择在哪台机器上使用哪些 CPU。我想对其进行配置,以便将超线程对中的两个 CPU 分配给同一个虚拟机。这样,由于超线程,一台机器在重负载下不会通过共享单个核心来影响另一台虚拟机。但我确实希望每个 vm 都可以使用超线程,因为我正在运行涉及大量并行化的任务。
那么,我怎么知道内核识别出哪些 CPU 是一对呢?我怀疑 cpu 0 和 cpu 1 配对,然后是 cpu 2 和 cpu 3,依此类推,但我不确定如何测试/确认。
由于这个问题中概述的原因,我想更改 IRQ SMP 关联性:CPU0 is swamped with eth1 interrupts
但我不能——Input/output error当我尝试写信给/proc/irq/*/smp_affinity.
请向我指出有关此事的 HOWTO。(正式参考/proc/irq/*/也很酷。)
血腥细节:
请注意,这是基于 Ubuntu 的 Xen XCP 主机内的 VM (PV domU)。
$ uname -a Linux MYHOST 2.6.38-15-virtual #59-Ubuntu SMP Fri Apr 27 16:40:18 UTC 2012 i686 i686 i386 GNU/Linux $ lsb_release -a 没有可用的 LSB 模块。 分销商 ID: Ubuntu 描述:Ubuntu 11.04 发布:11.04 代号:natty $ sudo cat /proc/irq/*/smp_affinity 01 01 01 01 01 80 80 80 80 80 80 40 40 40 40 …
首先,让我们检查一下我是否掌握了正确的基础知识:
据我了解,NUMA 系统是 NUMA节点的(非对称)网络,其中 NUMA 节点通常(但并非总是)物理 CPU 包。在NUMA系统中,每个节点都有自己的本地内存,其他节点的内存可以通过总线访问。网络的非一致性意味着获取外部内存会产生不同的成本,具体取决于内存获取中涉及的两个节点的位置。
现在,假设我做对了,下面是真实 Linux 系统的一些输出。
内核支持 NUMA(至少已编译支持):
$ grep NUMA /boot/config-`uname -r`
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_ARCH_WANTS_PROT_NUMA_PROT_NONE=y
CONFIG_ARCH_USES_NUMA_PROT_NONE=y
# CONFIG_NUMA_BALANCING_DEFAULT_ENABLED is not set
CONFIG_NUMA_BALANCING=y
CONFIG_NUMA=y
CONFIG_AMD_NUMA=y
CONFIG_X86_64_ACPI_NUMA=y
CONFIG_NUMA_EMU=y
CONFIG_USE_PERCPU_NUMA_NODE_ID=y
CONFIG_ACPI_NUMA=y
Run Code Online (Sandbox Code Playgroud)
但只有一个 NUMA 节点:
$ numactl -H
available: 1 nodes (0)
node 0 cpus: 0 1 2 3
node 0 size: 15955 MB
node 0 free: 5203 MB
node distances:
node 0
0: 10
Run Code Online (Sandbox Code Playgroud)
另请注意,NUMA 总线上只有一条路径,从节点 0 到节点 0(有趣的是距离为 10,而不是 0)。这意味着所有内存访问至少在 NUMA 延迟方面承担相同的成本。
那么,由于只有一个 NUMA 节点,所以这是一台普通的 …
在 VMWare 中,您可以使用多个 CPU,但只能使用主机上的 CPU。有没有办法使用比物理可用更多的 CPU?
这将是:
在 VMWare 中,您可以使用多个 CPU,但只能使用主机上的 CPU。有没有办法使用比物理可用更多的 CPU?
这将是:
更新:
我特别希望能够在 2 路硬件上运行 16 路配置的操作系统,而不是基本的过度订阅(如 4 路硬件上的 16 路 2 路),几乎所有当前可用的虚拟化软件都能有效处理这种情况。
如果我不需要,我也真的不想投资一个非常具体的解决方案,因为这个想法是限制所需的投资。
而且我不能仅仅增加线程的数量,因为它已经被巧妙地建议了:
更新(之二):
我终于发现QEMU正是这样做的。