UnixBench計測した

`Pipe-based Context Switching`

## おすすめページ

* [Vultrとその他のVPSっぽいサービスを比べてみる - Qiita](http://qiita.com/Nawada/items/f4df384d26d02159ccbc)
* [GCE vs AWS ベンチマーク Archives - apps-gcpapps-gcp](http://www.apps-gcp.com/category/gce-vs-aws-%e3%83%99%e3%83%b3%e3%83%81%e3%83%9e%e3%83%bc%e3%82%af/)

## 実行方法

```bash:測定時間を短くしたい場合
./Run -i 5
```

* 指定しないと`./Run -i 10`が実行される。

## その他

* [CPUBoss](http://cpuboss.com/)が性能の比較によい。
* [Xeon - Wikipedia](http://ja.wikipedia.org/wiki/Xeon)
* shell8だけ実行させる
  * `./Run shell8`
* [dockerがホスト,LXC,KVMよりベンチマークで早い件 - Qiita](http://qiita.com/tukiyo3/items/296dbc9dff5201e2f0d1)

# dockerイメージ作った

```bash:
docker run -it tukiyo3/centos7-unixbench
```

# 自分が計測したもの

* System Benchmarks Index Score値。

```rb:
8122.7 : Xeon(R) CPU E3-1270 v6@3.80GHz (proxmox5.1)
5835.4 : Xeon(R) CPU E3-1270 v6@3.80GHz (proxmox5.1上のkvm centos5.11)
8030.6 : Xeon(R) CPU E3-1270 v6@3.80GHz (proxmox5.1上のkvm centos6.9)

? : Xeon L5630
```

```rb:2016/10測定
3007.9 : i7-4790S@3.20GHz (pc)

2883.7 : PentiumG4560@3.50GHz (pc)
2029.3 : PentiumG4560@3.50GHz (kvm_local + raw + kvm64)
1984.8 : PentiumG4560@3.50GHz (kvm_lvm_thin + raw + kvm64)

1707.7 : i5-4308U@2.80GHz (kvm)
```

```rb:2015年末に測定
? : XeonE5-2665@2.4GHz (サーバ)
5612.8 : XeonE3-1220V2@3.10GHz (サーバ)
5259.6 : i5-4440@3.10GHz

2765.5 : Conoha VPS 1GB (一番安いの)
2711.7 : Xeon X3450@2.67GHz (サーバ)
2232.6 : Xeon X3430@2.40GHz (サーバ)
1905.0 : Xeon E5-2676 v3@2.40GHz (AWS t2.micro)
1753.7 : Xeon E5606@2.13GHz (サーバ)
1611.4 : XeonL5320@1.86GHz (サーバ)
1560.6 : XeonE5502@1.87GHz (サーバ)

1185.7 : Xeon3065@2.33GHz (サーバ)
365.6 : Atom N280@1.66GHz (dynabook UX/25KWH)
306.5 : RaspberryPi2 (1GHz)
174.6 : Atom Z540@1.86GHz (Vaio Type P)
100.9 : ARMv6@700Mhz (raspberrypi)
```

```bash:i5-4308U@2.80GHz(macmini@2014_MGEQ2J/A)
2763.9 : ホスト(archlinux)
3894.2 : docker
3546.5 : docker(CentOS5 i386)
2116.3 : KVM@4CPU(CentOS5 i386)
2297.5 : lxc(CentOS5 i386)
```

```text:i3-3220T@2.80GHz
3209.4 : ホスト(debian7)
2650.9 : openvz@CPUs:4
```

```text:XeonE5-2650v2@2.60GHz(HP_DL380pGen8)
9339.2 : ホスト
4660.9 : openvz@CPUs:8
```

```text:XeonE3-1230V2@3.30GHz(server)
6105.5 : ホスト
5742.6 : openvz@CPUs:8
```

```text:i7-4771@3.50GHz(designpc)
7363.5 : ホスト
6934.7 : docker
6854.2 : openvz@CPUs:8
6802.1 : KVM@1socket,8core
4754.3 : KVM@docker@2socket,4core
4705.7 : KVM@docker@1socket,8core
2626.2 : KVM@docker@1socket,2core
2102.4 : openvz@CPUs:1
```

```bash:Xeon3050@2.13GHz(dellsrv)
1497.8 : ホスト
1365.7 : docker
```

```bash:i5-2415M@2.30GHz(macmini)
1911.2 : ホスト
2728.6 : docker
```

```bash:PhenomII-P940-Quad-Core@1.70GHz(HP-Probook4525s)
1015.6 : ホスト
1644.6 : docker
```

```bash:CeleronN2806@1.60GHz(LivaPC)
538.4 : ホスト
895.5 : docker
```


```bash:GCE(f1-micro)
# Xeon(R) CPU @ 2.20GHz
206.0 : docker
```

----

# ネットの情報

## [IDC Frontier Engineers' Blog](http://www.idcf.jp/blog/cloud/unixbench2/)

```text:
9636   : E5-2650 v2 (macpro2014)
```

## [YANO's digital garage](http://www.bravotouring.com/~yano/diary/it/20130314unixbench.htm)


```rb:
7178.8 : Xeon E3-1275@3.4GHz
6391.8 : Core i7-2700K@3.3GHz
5908.9 : Xeon E3-1230 V2@3.2GHz
4761.6 : Xeon E3-1220 V2@3.1GHz
4788.9 : Xeon X3450@2.67GHz
2903.1 : AMD FX-6300(OC)@4.03GHz
2614.7 : AMD FX-6300@3.5GHz
2454.5 : Core i3 2120@3.3GHz
2434.5 : Celeron G540@2.5GHz
2328.7 : Pentium G620@2.6GHz
2086.1 : Celeron G1101@2.27GHz
1553.0 : Pentium Dual-Core E6500@2.93GHz
1387.2 : Xeon E5645 (さくらのVPS)
431.0 : Celeron M@1.3GHz
```

# Ansible

```yaml:packages/book.yml
---
- hosts: target
  sudo: True
  tasks:

    - yum: name="{{ item }}" state=present
      with_items:
        - make
        - gcc
        - perl
        - perl-Time-HiRes
      when: ansible_os_family == "RedHat"

    - apt: name="{{ item }}" state=present
      with_items:
        - make
        - gcc
        - perl
        - libtime-hires-perl
      when: ansible_os_family == "Debian"
```

```yaml:unixbench/book.yml
---
- hosts: target
  tasks:

    - stat: path="/opt/UnixBench"
      register: bench_dir

    #- name: download UnixBench5.1.3
    #  get_url: url=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz

    - copy: src=templates/UnixBench5.1.3.tgz dest=/opt/UnixBench5.1.3.tgz
      when: not bench_dir.stat.exists

    - shell: "{{ item }}"
      with_items:
        - (cd /opt/ && tar xzf UnixBench5.1.3.tgz && cd UnixBench && make)
      when: not bench_dir.stat.exists
```

```bash:run.sh
ansible-playbook -i hosts "packages/book.yml"  # --sudo --ask-sudo-pass
ansible-playbook -i hosts "unixbench/book.yml"  # --sudo --ask-sudo-pass
```


## 実行

```bash:
cd /opt/UnixBench
sudo nohup ./Run &
```

```bash:結果確認
grep "System Benchmarks Index Score\s" /opt/UnixBench/results/* | tail -n1
```


# 手動でインストールする場合

## deb系

```bash:deb系
cat > bench.sh <<EOF
apt-get update
apt-get install -y make gcc perl libtime-hires-perl
curl -o /opt/UnixBench5.1.3.tgz https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz
cd /opt
tar xzf UnixBench5.1.3.tgz
cd UnixBench
make
./Run
EOF
```

```bash:実行
sudo sh bench.sh
```

## rpm系

```bash:rpm系
# yum install -y perl-Time-HiRes
yum install -y make gcc perl tar curl
curl -o /opt/UnixBench5.1.3.tgz https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz
cd /opt/
tar xzf UnixBench5.1.3.tgz
cd UnixBench
make
./Run
```

## ArchLinux

```bash:
pacman -Sy base-devel
curl -o /opt/UnixBench5.1.3.tgz https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz
cd /opt
tar xzf UnixBench5.1.3.tgz
cd UnixBench
make
./Run
```

## 16コアを超える場合のパッチ

32コアの場合、1コアのテストしかしてくれなかったのでパッチ適用する。

* [UnixBench CPUスレッド数制限解除 | ツチノコブログ](http://tsuchinoko.dmmlabs.com/?p=978)
* [Issue 4 - byte-unixbench - Can't do default run completely with > 16 CPUs - A Unix benchmark suite - Google Project Hosting](https://code.google.com/p/byte-unixbench/issues/detail?id=4)

```diff:fix-limitation.patch
--- Run.bak	2014-11-24 06:12:08.000000000 +0900
+++ Run	2014-11-24 06:12:37.000000000 +0900
@@ -106,10 +106,10 @@

 # Configure the categories to which tests can belong.
 my $testCats = {
-    'system'    => { 'name' => "System Benchmarks", 'maxCopies' => 16 },
+    'system'    => { 'name' => "System Benchmarks", 'maxCopies' => 0 },
     '2d'        => { 'name' => "2D Graphics Benchmarks", 'maxCopies' => 1 },
     '3d'        => { 'name' => "3D Graphics Benchmarks", 'maxCopies' => 1 },
-    'misc'      => { 'name' => "Non-Index Benchmarks", 'maxCopies' => 16 },
+    'misc'      => { 'name' => "Non-Index Benchmarks", 'maxCopies' => 0 },
 };


@@ -1329,7 +1329,7 @@
         # If the benchmark doesn't want to run with this many copies, skip it.
         my $cat = $params->{'cat'};
         my $maxCopies = $testCats->{$cat}{'maxCopies'};
-        next if ($copies > $maxCopies);
+        next if ($maxCopies > 0 && $copies > $maxCopies);

         # Run the benchmark.
         my $bresult = runBenchmark($bench, $params, $verbose, $logFile, $copies);
```

## Macで動かす

* Macで動かす場合、[Patch for UnixBench 5.1.3 on Mac OS X Mavericks (10.9)](https://gist.github.com/barusan/11033924)のpatchを当てる必要があります。

```bash:
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/byte-unixbench/UnixBench5.1.3.tgz
cd UnixBench
git clone https://gist.github.com/11033924.git
patch -p1 < ./11033924/UnixBench5.1.3.mavericks.patch
./Run
```

## その他参考

* [UnixBenchでベンチマーク | IDC Frontier Engineers' Blog](http://www.idcf.jp/blog/cloud/unixbench/)