浅析GCP乞丐机型的性能
GCP由于其300刀的福利闻名于世,成为了国内羊毛党薅羊毛的首选。在你乐滋滋的用它做竹梯子的时候,有没有想过,如果我真的用乞丐机型搭建一个博客会怎样?
简介
如你所见,本博客就是搭建在GCP上,使用了DNSPOD的Z监控自动在GCP到国内链路爆炸的时候切换到CDN。显然,它访问起来并不是很卡,对于小流量低预算的博客主们是个很好的选择。但就在上周,我发现了一个严重的问题...
注:本文不会探讨GCP的线路问题,也不会研究竹梯子
起因
由于在博客的插件中发现高危漏洞(可见TeePay插件漏洞),我决意要对其进行彻底的代码审核。为了减少工作量,我决定借用自动化扫描软件: AWVS。这是一个高性能的自动化漏洞扫描器(虽然经常误报),但当AWVS运行起来并且开始扫描网站的时候,我发现博客非常的卡,卡到几乎打不开,就像是被CC攻击了。
当我打开top后,我惊奇的发现CPU到了100%,而这时候的网络吞吐却并不高。我选用的是2H1G的配置,对于双核来说,不应该性能如此之差。
更令人惊讶的是,Top的%st达到了85%-90%,这意味着绝大多数时间都花费在了等待虚拟CPU相应上。从某种角度来说,这个值可以反映出当前分配的真实CPU性能仅有10%-15%,这和阿里云的性能限制型ECS十分相近。
带着疑惑,我新开了一台GCP进行测试。
GCP 1H614M 20GHDD
在我创建这个新虚拟机的时候,我就注意到了GCP的提示:
永久性磁盘的性能取决于永久性磁盘卷的大小。我们会依据实际配置的磁盘空间向您收费。
在GCP的GCE文档中寻找了许久,终于找到了对于磁盘性能的说明: https://cloud.google.com/compute/docs/disks/performance?hl=zh_CN
根据它的说明,GCE的磁盘性能是和购买磁盘的大小成正比的,对于垃圾佬们最喜爱的20G地区
标准永久性磁盘来说,它最大可以提供2.4MB/S最大持续吞吐量,这应该是指的随机读写4k性能。
接下来是CPU的。文档中只写了N1标准以及以上的实例CPU性能,没写我们的主角最乞丐的这个机型,那么下面我们就来测试它的真实CPU性能和磁盘性能。
系统选用的Centos7 未精简版本
磁盘性能测试
第一次测试成绩
硬盘I/O (第一次测试) : 37.7 MB/s
硬盘I/O (第二次测试) : 37.7 MB/s
硬盘I/O (第三次测试) : 37.8 MB/s
第二次测试成绩
硬盘I/O (第一次测试) : 37.6 MB/s
硬盘I/O (第二次测试) : 37.8 MB/s
硬盘I/O (第三次测试) : 37.8 MB/s
第三次测试成绩
硬盘I/O (第一次测试) : 37.4 MB/s
硬盘I/O (第二次测试) : 37.4 MB/s
硬盘I/O (第三次测试) : 37.5 MB/s
硬盘I/O (第四次测试) : 37.4 MB/s
硬盘I/O (第五次测试) : 37.4 MB/s
硬盘I/O (第六次测试) : 37.5 MB/s
硬盘I/O (第七次测试) : 37.4 MB/s
硬盘I/O (第八次测试) : 37.4 MB/s
硬盘I/O (第九次测试) : 37.5 MB/s
硬盘I/O (第十次测试) : 37.4 MB/s
每次测试读写1G的大文件不删除,直到测试完成后删除,可见GCP的磁盘还是非常稳定的
4k就不测试了,HDD也没什么测试必要
CPU性能测试
Unixbench
========================================================================
BYTE UNIX Benchmarks (Version 5.1.3)
System: instance-5: GNU/Linux
OS: GNU/Linux -- 3.10.0-1062.18.1.el7.x86_64 -- #1 SMP Tue Mar 17 23:49:17 UTC 2020
Machine: x86_64 (x86_64)
Language: en_US.utf8 (charmap="UTF-8", collate="UTF-8")
CPU 0: Intel(R) Xeon(R) CPU @ 2.00GHz (4000.3 bogomips)
Hyper-Threading, x86-64, MMX, Physical Address Ext, SYSENTER/SYSEXIT, SYSCALL/SYSRET
11:14:33 up 1:30, 2 users, load average: 0.11, 0.33, 0.44; runlevel 3
------------------------------------------------------------------------
Benchmark Run: 日 4月 12 2020 11:14:33 - 11:46:35
1 CPU in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 20865285.6 lps (10.0 s, 7 samples)
Double-Precision Whetstone 746.9 MWIPS (24.4 s, 7 samples)
Execl Throughput 436.8 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 86984.3 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 30379.4 KBps (30.1 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 342834.7 KBps (30.1 s, 2 samples)
Pipe Throughput 120888.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 30692.8 lps (10.0 s, 7 samples)
Process Creation 1979.0 lps (30.1 s, 2 samples)
Shell Scripts (1 concurrent) 660.8 lpm (60.1 s, 2 samples)
Shell Scripts (8 concurrent) 94.0 lpm (60.3 s, 2 samples)
System Call Overhead 104541.2 lps (10.1 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 20865285.6 1787.9
Double-Precision Whetstone 55.0 746.9 135.8
Execl Throughput 43.0 436.8 101.6
File Copy 1024 bufsize 2000 maxblocks 3960.0 86984.3 219.7
File Copy 256 bufsize 500 maxblocks 1655.0 30379.4 183.6
File Copy 4096 bufsize 8000 maxblocks 5800.0 342834.7 591.1
Pipe Throughput 12440.0 120888.9 97.2
Pipe-based Context Switching 4000.0 30692.8 76.7
Process Creation 126.0 1979.0 157.1
Shell Scripts (1 concurrent) 42.4 660.8 155.9
Shell Scripts (8 concurrent) 6.0 94.0 156.7
System Call Overhead 15000.0 104541.2 69.7
========
System Benchmarks Index Score 180.2
惨无人道的180分
柠檬测试/LemonBench
-> CPU Performance Test (Standard Mode, 3-Pass @ 30sec)
1 Thread Test: 291 Scores
-> Memory Performance Test (Standard Mode, 3-Pass @ 30sec)
1 Thread - Read Test : 3030.17 MB/s
1 Thread - Write Test: 2010.86 MB/s
-> Disk Speed Test (4K Block/1M Block, Direct-Write)
Test Name Write Speed Read Speed
10MB-4K Block 5.4 MB/s (1318 IOPS, 1.94 s) 7.3 MB/秒 (1777 IOPS, 1.44 s)
10MB-1M Block 35.2 MB/s (33 IOPS, 0.30 s) 209 MB/秒 (198 IOPS, 0.05 s)
100MB-4K Block 5.8 MB/s (1407 IOPS, 18.19 s) 7.6 MB/秒 (1844 IOPS, 13.88 s)
100MB-1M Block 37.6 MB/s (35 IOPS, 2.79 s) 147 MB/秒 (140 IOPS, 0.71 s)
1GB-4K Block 5.5 MB/s (1342 IOPS, 190.66 s) 6.7 MB/秒 (1635 IOPS, 156.52 s)
1GB-1M Block 37.6 MB/s (35 IOPS, 27.87 s) 126 MB/秒 (120 IOPS, 8.29 s)
完整的报告可以看这里: https://paste.ubuntu.com/p/rtqJWqj8h2/
总结
如果有多张卡,还是用独享N1实例吧,这个实例...性能真的差出了天际。