如何衡量虚拟服务器的性能?

Ser*_*gey 11 server performance command-line tools

我有一个运行 Ubuntu 的 VPS。作为一个虚拟服务器,我知道它与未知数量的其他服务器共享资源,我注意到它比我的台式机慢得多。

是否有一些工具可以衡量虚拟机的性能?我很想看到一些类似于 bogomips 的近似度量,可能用于 CPU(操作数/秒)、内存和磁盘读/写速度。我希望能够将这些数字与我的台式机进行比较。

我对运行 VPS 的实际物理机的规格不感兴趣 - 通过这样做cat /proc/cpuinfo我可以看到它是一台不错的四核 Xeon 机器,但这对我来说并不重要。我基本上对程序在我的 VPS 中运行的速度感兴趣 - 它可以在一秒钟内进行多少 CPU 操作,写入 RAM 或磁盘的字节数。

我只有对机器的 ssh 访问权限,因此该工具需要是命令行。

我可以编写一个脚本,例如,在循环中进行一些计算一秒钟并计算它能够执行的循环次数,或者类似于测量磁盘和 RAM 性能的内容。但我确信这样的事情已经存在。

Ser*_*gey 14

好吧,既然没有人想回答... :)

在 Synaptic 中搜索“bench”会发现许多能够测试机器不同方面的基准测试套件。我以前听说过的唯一一个是phoronix-test-suite,我确信它非常全面,尽管我的注意力时间很短,我无法弄清楚如何使用它。

然后我找到了UnixBench,它被描述为

UnixBench 是最初的 BYTE UNIX 基准测试套件,多年来经过许多人的更新和修订。

UnixBench 的目的是为类 Unix 系统的性能提供一个基本指标;... 然后将这些测试结果与基线系统的分数进行比较以生成一个指数值,这通常比原始分数更容易处理。

处理多 CPU 系统。... 测试通过将 Unix 系统的结果与在基准系统(SPARCstation 20-61(评级为 10.0)上运行代码而设置的分数集)进行比较。

Linode 在这篇博文中提到 UnixBench 作为 VM 性能测试的工具:

使用相同的硬件,KVM Linodes 比 Xen 快得多。例如,在我们的 UnixBench 测试中,KVM Linode 的得分是 Xen Linode 的 3 倍。

测试套件不在 Ubuntu 存储库中,但下载和编译它很简单:

wget https://github.com/kdlucas/byte-unixbench/archive/master.zip
unzip ./master.zip
cd ./byte-unixbench-master/UnixBench
./Run
Run Code Online (Sandbox Code Playgroud)

测试需要一段时间才能完成。输出看起来像

------------------------------------------------------------------------
Benchmark Run: Mon Oct 15 2012 23:55:22 - 00:23:16
4 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       12015218.4 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     2214.8 MWIPS (10.1 s, 7 samples)
Execl Throughput                                896.9 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         58968.3 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           14578.6 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        422068.2 KBps  (30.0 s, 2 samples)
Pipe Throughput                               70993.3 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  16001.5 lps   (10.0 s, 7 samples)
Process Creation                               1861.8 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   2525.5 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    737.8 lpm   (60.1 s, 2 samples)
System Call Overhead                         432496.2 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   12015218.4   1029.6
Double-Precision Whetstone                       55.0       2214.8    402.7
Execl Throughput                                 43.0        896.9    208.6
File Copy 1024 bufsize 2000 maxblocks          3960.0      58968.3    148.9
File Copy 256 bufsize 500 maxblocks            1655.0      14578.6     88.1
File Copy 4096 bufsize 8000 maxblocks          5800.0     422068.2    727.7
Pipe Throughput                               12440.0      70993.3     57.1
Pipe-based Context Switching                   4000.0      16001.5     40.0
Process Creation                                126.0       1861.8    147.8
Shell Scripts (1 concurrent)                     42.4       2525.5    595.6
Shell Scripts (8 concurrent)                      6.0        737.8   1229.7
System Call Overhead                          15000.0     432496.2    288.3
                                                                   ========
System Benchmarks Index Score                                         249.7

------------------------------------------------------------------------
Benchmark Run: Tue Oct 16 2012 00:23:16 - 00:51:20
4 CPUs in system; running 4 parallel copies of tests

Dhrystone 2 using register variables       42619039.2 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                     8274.0 MWIPS (10.4 s, 7 samples)
Execl Throughput                               3398.5 lps   (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         68332.4 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           21462.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        718205.6 KBps  (30.0 s, 2 samples)
Pipe Throughput                              149713.5 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  61968.3 lps   (10.0 s, 7 samples)
Process Creation                               5321.7 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   5957.1 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    812.6 lpm   (60.1 s, 2 samples)
System Call Overhead                        1557391.5 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   42619039.2   3652.0
Double-Precision Whetstone                       55.0       8274.0   1504.4
Execl Throughput                                 43.0       3398.5    790.4
File Copy 1024 bufsize 2000 maxblocks          3960.0      68332.4    172.6
File Copy 256 bufsize 500 maxblocks            1655.0      21462.9    129.7
File Copy 4096 bufsize 8000 maxblocks          5800.0     718205.6   1238.3
Pipe Throughput                               12440.0     149713.5    120.3
Pipe-based Context Switching                   4000.0      61968.3    154.9
Process Creation                                126.0       5321.7    422.4
Shell Scripts (1 concurrent)                     42.4       5957.1   1405.0
Shell Scripts (8 concurrent)                      6.0        812.6   1354.3
System Call Overhead                          15000.0    1557391.5   1038.3
                                                                   ========
System Benchmarks Index Score                                         592.5
Run Code Online (Sandbox Code Playgroud)

这意味着所讨论的 VPS的单任务得分为249.7,并行处理得分为592.5

我的台式机虽然具有与运行 VPS 的物理机相似或更低的规格,但单任务得分为1409.7,并行处理得分为5156.3。正是我正在寻找的那种指标。

另一个重要指标是网络速度。我找到了一个从不同位置下载测试文件并测量下载速度的脚本。该脚本可以运行

wget freevps.us/downloads/bench.sh -O - -o /dev/null|bash
Run Code Online (Sandbox Code Playgroud)

(尽管在运行之前下载脚本并检查其内容可能会更安全)

要监控磁盘 I/O 延迟ioping,可以从 Ubuntu 存储库安装实用程序:

# ioping . -c 10
4096 bytes from . (ext4 /dev/disk/...): request=1 time=16.4 ms
4096 bytes from . (ext4 /dev/disk/...): request=2 time=16.1 ms
...
Run Code Online (Sandbox Code Playgroud)