浅析GCP乞丐机型的性能
浏览 396 | 评论 0 | 字数 5520
卖女孩的小火柴
2020年04月12日
  • 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实例吧,这个实例...性能真的差出了天际。

    本文作者:卖女孩的小火柴
    本文链接:https://www.shinenet.cn/archives/123.html
    最后修改时间:2020-04-12 21:24:09
    本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
    如果文章对您有帮助,不妨打赏杯可乐?微信-赞赏码
    评论
    如果可能,请填写真实邮箱,有回复会送至邮箱。请不要水评论,谢谢。
    textsms
    支持 Markdown 语法
    email
    link
    评论列表
    暂无评论