Geekbench benchmark of different AWS EC2 instances

接續上一篇 sysbench CPU benchmark of different AWS EC2 instances ,這邊改用 Geekbench 來做效能測試,Geekbench 是跨平台的效能測試工具,有支援 Windows、Linux、macOS、Android 和 iOS 等系統,測試環境、比較對象和上一篇相同。

測試環境

  • Ubuntu: 18.04.3 LTS
  • Linux kernel: 4.15.0-1052-aws
  • Geekbenck: 5.0.3

比較對象

  • General purpose
    • T2
    • T3
    • T3a
    • M4
    • M5
    • M5a
  • Compute optimized
    • C4
    • C5
  • Memory optimized
    • R4
    • R5
    • R5a

T 系列的機器也都同樣是開 Unlimited Mode 下去跑測試讓 CPU 可以全速運轉

執行時不用特別帶參數,像下面這樣

測試畫面

$ ./Geekbench-5.0.3-Linux/geekbench5 
Geekbench 5.0.3 Tryout : https://www.geekbench.com/

Geekbench 5 is in tryout mode.

Geekbench 5 requires an active Internet connection when in tryout mode, and 
automatically uploads test results to the Geekbench Browser. Other features 
are unavailable in tryout mode.

Buy a Geekbench 5 license to enable offline use and remove the limitations of 
tryout mode.

If you would like to purchase Geekbench you can do so online:

  https://store.primatelabs.com/v5

If you have already purchased Geekbench, enter your email address and license 
key from your email receipt with the following command line:

  ./Geekbench-5.0.3-Linux/geekbench5 -r <email address> <license key>

  Running Gathering system information
System Information
  Operating System              Ubuntu 18.04.3 LTS 4.15.0-1052-aws x86_64
  Model                         Amazon EC2 t3a.large
  Motherboard                   Amazon EC2
  BIOS                          Amazon EC2 1.0

Processor Information
  Name                          Intel Pentium II/III
  Topology                      1 Processor, 1 Core, 2 Threads
  Identifier                    AuthenticAMD Family 23 Model 1 Stepping 2
  Base Frequency                2.20 GHz
  L1 Instruction Cache          64.0 KB
  L1 Data Cache                 32.0 KB
  L2 Cache                      512 KB
  L3 Cache                      64.0 MB

Memory Information
  Size                          7.71 GB

Single-Core
  Running AES-XTS
  Running Text Compression
  Running Image Compression
  Running Navigation
  Running HTML5
  Running SQLite
  Running PDF Rendering
  Running Text Rendering
  Running Clang
  Running Camera
  Running N-Body Physics
  Running Rigid Body Physics
  Running Gaussian Blur
  Running Face Detection
  Running Horizon Detection
  Running Image Inpainting
  Running HDR
  Running Ray Tracing
  Running Structure from Motion
  Running Speech Recognition
  Running Machine Learning

Multi-Core
  Running AES-XTS
  Running Text Compression
  Running Image Compression
  Running Navigation
  Running HTML5
  Running SQLite
  Running PDF Rendering
  Running Text Rendering
  Running Clang
  Running Camera
  Running N-Body Physics
  Running Rigid Body Physics
  Running Gaussian Blur
  Running Face Detection
  Running Horizon Detection
  Running Image Inpainting
  Running HDR
  Running Ray Tracing
  Running Structure from Motion
  Running Speech Recognition
  Running Machine Learning

Uploading results to the Geekbench Browser. This could take a minute or two 
depending on the speed of your internet connection.

Upload succeeded. Visit the following link and view your results online:

  https://browser.geekbench.com/v5/cpu/535166

Visit the following link and add this result to your profile:

  https://browser.geekbench.com/v5/cpu/535166/claim?key=185887

測試結果

接著看測試結果,免費版的 Geekbench 測試時必須要有網路連線,結果不會直接顯示在本機,要上傳到他們的伺服器上看,好處應該是比較不怕造假(假設有對資料做應該有的基本驗證機制)或弄錯,畫面呈現如下,除了效能測試的分數以外,也一些作業系統、CPU、記憶體等資訊:

下面是這次測試全部結果的連結:

閱讀全文

sysbench CPU benchmark of different AWS EC2 instances

AWS EC2 推出 M5a/R5a/T3a使用 AMD CPU 的 主機分別有大約一年/半年左右的時間了,因為平時使用到美國境內區域的比例比較少、亞洲更新的時間相對還是比較晚,所以幾個月前才陸續開始使用這幾個系列的機器 (截至目前為止東京都還不是每個 AZ 都可以開 T3a 的機器),除了官方宣稱的 10% 左右價差 (跟 M5/R5/T3 相比) 以外,對於效能這方面並沒有提供太多資訊,想像上以及一些其他管道的資訊多是和同系列但使用 Intel 處理器的主機效能約略相同、或少個 10% 以內的效能,但實際上如何好像沒有太多的討論或比較,這邊就來用 sysbench 這套工具很簡單的比較一下幾款比較常用到、不同系列的 AWS EC2 主機 CPU 效能,方便起見,使用預設值下取跑、且都拿 .large 這個大小的機器來比、只看單個執行緒的測試結果

測試環境:

  • Ubuntu: 18.04.3 LTS
  • Linux kernel: 4.15.0-1052-aws
  • sysbench: 1.0.18

比較對象如下,共十一種機型:

  • General purpose
    • T2
    • T3
    • T3a
    • M4
    • M5
    • M5a
  • Compute optimized
    • C4
    • C5
  • Memory optimized
    • R4
    • R5
    • R5a

因為要測試的是 CPU 的效能,一些跟磁碟、網路有關衍生出來的機型例如 C5d / C5n / M5dn / R5dn 等也就不列入測試範圍了。另外 T1 / C3 / M3 / M4 這種前幾個世代比較舊的機器也不列入這次測試,現在要開機器應該不會開這麼舊的來用了,沒事不會同時跟錢包還有效能過不去,除非有什麼比較久遠的 AMI 沒辦法在新機器上開起來非得用舊機器跑不可 …

其中 T2 / T3 / T3a 系列要靠 CPU Credits 才能使用到最佳效能的機器,在測試時都是開 Unlimited Mode 下去測的 (實際上 sysbench 預設只會跑十秒左右,連 1 CPU Credit 都用不滿) ,拿沒有被卡住的效能比較才比較有

關於各機型的規格/價格比較,建議可以參考 EC2Instances.info ,我覺得這網站還不錯很方便:

EC2Instances.info Easy Amazon EC2 Instance Comparison
https://ec2instances.info/?filter=.large&region=ap-northeast-1&cost_duration=monthly&reserved_term=yrTerm1Standard.allUpfront

接下來就直接看測試結果:

# t2.large
$ sysbench cpu run
sysbench 1.0.18 (using bundled LuaJIT 2.1.0-beta2)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time


Prime numbers limit: 10000

Initializing worker threads...

Threads started!

CPU speed:
    events per second:   909.23

General statistics:
    total time:                          10.0008s
    total number of events:              9095

Latency (ms):
         min:                                    1.09
         avg:                                    1.10
         max:                                    1.17
         95th percentile:                        1.10
         sum:                                 9983.83

Threads fairness:
    events (avg/stddev):           9095.0000/0.00
    execution time (avg/stddev):   9.9838/0.00
閱讀全文

在 Debian / Ubuntu GNU/Linux 底下找出特定命令 / 程式的來源套件

在 Debian / Ubuntu based GNU/Linux 底下做事有個很棒的優點,有太多工具可以透過 apt 套件庫來進行安裝,重灌電腦的時候只要透過 apt 或 apt-get 就可以把一大半會需要用到的工具給裝起來,不過有時候可能邊摸索邊上網查資料來看某工具要怎麼用,一骨腦裝完卻沒作筆記,日後要準備重灌時卻想不起來該裝什麼套件才能把要用到的命令找回來,窘 …

如果你有安裝 command-not-found 這個套件,在 bash shell 底下如果執行了找不到的命令,除了常見的 blah: command not found,他還會有很貼心的提示使用者應該安裝哪個缺漏的套件,像這樣:

$ kvm
 The program 'kvm' is currently not installed. You can install it by typing:
 sudo apt install qemu-kvm

上面範例為我執行了一個不存在的命令 – kvm ,然後 command-not-found 這套工具建議我去裝 qemu-kvm 這個套件,裝完後就會有 kvm 這個命令可以使用了,如果同時存在不只一個套件包含了同樣的命令,command-not-found 這套工具一樣會很好心的幫我們列出來,例如:

$ sar
 The program 'sar' can be found in the following packages:
  * sysstat
  * atsar
 Ask your administrator to install one of them

就算是找不到 100% 符合的命令,command-not-found 也會很好心的列出其他參考,例如:

$ gitx
 No command 'gitx' found, did you mean:
  Command 'gitg' from package 'gitg' (universe)
  Command 'git' from package 'git' (main)
  Command 'gitk' from package 'gitk' (main)
 gitx: command not found

不過上述的功能僅限於我們沒有正確的安裝對應的套件才能使用,如果是套件已經裝起來了的時候呢?例如我工具都已經裝好了,只是想確認某個命令是從哪裡來的,要做個筆記而已,這種情況很常見的啊,例如遇到問題跑去問 Google ,看到一堆解法,一個不行換一個,換到可以的解法的時候可能已經 apt-get install 不知道多少次了,已經忘記剛剛的命令到底是從哪邊來的了XD

還好 dpkg 有個強大的搜尋功能,可以讓我們從已經安裝的套件中搜尋出他們到底包含了哪些檔案,底下是從 Ubuntu 16.04.1 裏面擷取的 dpkg manpage:

-S, –search filename-search-pattern…
Search for a filename from installed packages.

使用方式為:

$ dpkg -S '檔案路徑/名稱'

要透過 dpkg -S 來找命令對應所屬的套件,只要把命令的完整路徑丟給他就可以了,命令的完整路徑我們可以透過 type 或 which 這兩個指令來確認,例如:

$ type whoami
whoami is /usr/bin/whoami
$ which whoami
/usr/bin/whoami

從上面的輸出我們可以知道 whoami 這個命令的完整路徑是 /usr/bin/whoami ,再把 /usr/bin/whoami 拿去 dpkg 查詢就可以了!例如:

$ dpkg -S '/usr/bin/whoami'
coreutils: /usr/bin/whoami
$ dpkg -S '/usr/bin/curl'
curl: /usr/bin/curl

或是直接

$ dpkg -S "$(which whoami)"
coreutils: /usr/bin/whoami
$ dpkg -S "$(which curl)"
curl: /usr/bin/curl

從上面的結果我們可以發現 curl 這個命令是從 curl 這個套件來的, whoami 這個命令則是從 coreutils 這個套件來的,如果你查詢的是還沒有安裝或是不是透過 apt / dpkg 套件管理工具安裝的命令,那就沒辦法了:

$ dpkg -S '/usr/bin/kvm'
dpkg-query: no path found matching pattern /usr/bin/kvm

要注意的是

1. which 跟 type 輸出的格式不太一樣,type 的輸出結果因為多了 blah is … ,所以還需要經過處理把前面那段拿掉才有辦法餵給 dpkg ,而 which 因為是直接出出路徑所以沒有這問題

2. 這邊如果輸入的不是完整路徑,則可能會出現一堆其他不相關的東西,例如:

$ dpkg -S 'whoami'
 bash-completion: /usr/share/bash-completion/completions/ldapwhoami
 coreutils: /usr/share/man/man1/whoami.1.gz
 coreutils: /usr/bin/whoami

因為 dpkg 會直接把所有完整路徑裏面符合輸入字串的部份都印出來,所以像是 whoami 的 manpage 以及 bash-completion 的自動補齊指令都被列出來了。

好了,這篇筆記雖然短,可我覺得很實用,哪天失憶或是被問問題的時候就可以把這篇丟出來,這就是做筆記最大的用途 … :D

LAMP Web Server 網頁伺服器快速建置入門

前言 …

LAMP 是透過 Linux + Apache + MySQL + PHP 這種方式來架設網站伺服器組合的簡稱,分別代表著

  1. Linux 作業系統
  2. Apache http 網頁伺服器
  3. MySQL 資料庫
  4. PHP 網頁後端語言

LAMP 是非常廣泛被使用的網站環境建置組合,也有將其中的元件替換為其它相同功能但不同產品的組合,例如把 Linux 改為 FreeBSD 或 Windows 的 FAMP、WAMP,把 Apache 改為 NGINX 的 LNMP 等,本篇是使用 Ubuntu / Debian 作為示範,但基本上基於 Debian 以及 Ubuntu 的 GNU/Linux distributions 操作方式都大同小異,要注意不同版本的使用上多少會略有差異,本篇僅供參考。

根據撰寫本篇紀錄時 W3Techs 的統計,Linux 在 web server 的作業系統市佔率高達 36.2% ( Unix 佔總共的 68%、Linux 佔其中的 53.2% ),其中 Debian / Ubuntu 就分別佔了 Linux 的 32.6% / 31.1%:

w3techs-usage-of-operatingSystems-unix-Mar-1-2016

Apache 在 Web Server 的領域有著 55% 過半的驚人市佔率:

w3techs-usage-of-WebServers-Mar-1-2016

最新、更多資料請參考 W3Techs :

寫這篇的原因,主要是因為推薦不少人來使用 WordPress 撰寫部落格、筆記,WordPress 在此時已經擁有高達 26% 的網頁套裝軟體市佔率,而且持續成長中,平均每四個網站就有一個是使用 WordPress 架設,可想而知 WordPress 不管是在社群、生態系方便都已經相當成熟,考量到自行架設 WordPress 會比直接使用 WordPress.com 現成的服務來的更有彈性、功能更加強大,同時又可以學技術,但對於初學者對於遇到問題的恐懼一直是最大的阻礙,故撰寫這份 LAMP 簡易安裝筆記供入門者參考,對於其他同樣使用 PHP 語言的網站平台基本上都適用。

閱讀全文